json_schemer 0.2.6 → 0.2.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (232) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +22 -0
  3. data/Gemfile.lock +1 -1
  4. data/JSON-Schema-Test-Suite/.gitignore +1 -0
  5. data/JSON-Schema-Test-Suite/.travis.yml +8 -0
  6. data/JSON-Schema-Test-Suite/LICENSE +19 -0
  7. data/JSON-Schema-Test-Suite/README.md +181 -0
  8. data/JSON-Schema-Test-Suite/bin/jsonschema_suite +295 -0
  9. data/JSON-Schema-Test-Suite/index.js +45 -0
  10. data/JSON-Schema-Test-Suite/package.json +28 -0
  11. data/JSON-Schema-Test-Suite/remotes/folder/folderInteger.json +3 -0
  12. data/JSON-Schema-Test-Suite/remotes/integer.json +3 -0
  13. data/JSON-Schema-Test-Suite/remotes/name-defs.json +11 -0
  14. data/JSON-Schema-Test-Suite/remotes/name.json +11 -0
  15. data/JSON-Schema-Test-Suite/remotes/subSchemas.json +8 -0
  16. data/JSON-Schema-Test-Suite/test-schema.json +59 -0
  17. data/JSON-Schema-Test-Suite/tests/draft2019-08/additionalItems.json +87 -0
  18. data/JSON-Schema-Test-Suite/tests/draft2019-08/additionalProperties.json +133 -0
  19. data/JSON-Schema-Test-Suite/tests/draft2019-08/allOf.json +218 -0
  20. data/JSON-Schema-Test-Suite/tests/draft2019-08/anyOf.json +189 -0
  21. data/JSON-Schema-Test-Suite/tests/draft2019-08/boolean_schema.json +104 -0
  22. data/JSON-Schema-Test-Suite/tests/draft2019-08/const.json +170 -0
  23. data/JSON-Schema-Test-Suite/tests/draft2019-08/contains.json +95 -0
  24. data/JSON-Schema-Test-Suite/tests/draft2019-08/default.json +49 -0
  25. data/JSON-Schema-Test-Suite/tests/draft2019-08/defs.json +24 -0
  26. data/JSON-Schema-Test-Suite/tests/draft2019-08/dependencies.json +268 -0
  27. data/JSON-Schema-Test-Suite/tests/draft2019-08/enum.json +179 -0
  28. data/JSON-Schema-Test-Suite/tests/draft2019-08/exclusiveMaximum.json +30 -0
  29. data/JSON-Schema-Test-Suite/tests/draft2019-08/exclusiveMinimum.json +30 -0
  30. data/JSON-Schema-Test-Suite/tests/draft2019-08/if-then-else.json +188 -0
  31. data/JSON-Schema-Test-Suite/tests/draft2019-08/items.json +250 -0
  32. data/JSON-Schema-Test-Suite/tests/draft2019-08/maxItems.json +28 -0
  33. data/JSON-Schema-Test-Suite/tests/draft2019-08/maxLength.json +33 -0
  34. data/JSON-Schema-Test-Suite/tests/draft2019-08/maxProperties.json +38 -0
  35. data/JSON-Schema-Test-Suite/tests/draft2019-08/maximum.json +28 -0
  36. data/JSON-Schema-Test-Suite/tests/draft2019-08/minItems.json +28 -0
  37. data/JSON-Schema-Test-Suite/tests/draft2019-08/minLength.json +33 -0
  38. data/JSON-Schema-Test-Suite/tests/draft2019-08/minProperties.json +38 -0
  39. data/JSON-Schema-Test-Suite/tests/draft2019-08/minimum.json +59 -0
  40. data/JSON-Schema-Test-Suite/tests/draft2019-08/multipleOf.json +60 -0
  41. data/JSON-Schema-Test-Suite/tests/draft2019-08/not.json +117 -0
  42. data/JSON-Schema-Test-Suite/tests/draft2019-08/oneOf.json +206 -0
  43. data/JSON-Schema-Test-Suite/tests/draft2019-08/optional/bignum.json +105 -0
  44. data/JSON-Schema-Test-Suite/tests/draft2019-08/optional/content.json +77 -0
  45. data/JSON-Schema-Test-Suite/tests/draft2019-08/optional/ecmascript-regex.json +13 -0
  46. data/JSON-Schema-Test-Suite/tests/draft2019-08/optional/format/date-time.json +53 -0
  47. data/JSON-Schema-Test-Suite/tests/draft2019-08/optional/format/date.json +23 -0
  48. data/JSON-Schema-Test-Suite/tests/draft2019-08/optional/format/email.json +18 -0
  49. data/JSON-Schema-Test-Suite/tests/draft2019-08/optional/format/hostname.json +33 -0
  50. data/JSON-Schema-Test-Suite/tests/draft2019-08/optional/format/idn-email.json +18 -0
  51. data/JSON-Schema-Test-Suite/tests/draft2019-08/optional/format/idn-hostname.json +28 -0
  52. data/JSON-Schema-Test-Suite/tests/draft2019-08/optional/format/ipv4.json +33 -0
  53. data/JSON-Schema-Test-Suite/tests/draft2019-08/optional/format/ipv6.json +28 -0
  54. data/JSON-Schema-Test-Suite/tests/draft2019-08/optional/format/iri-reference.json +43 -0
  55. data/JSON-Schema-Test-Suite/tests/draft2019-08/optional/format/iri.json +53 -0
  56. data/JSON-Schema-Test-Suite/tests/draft2019-08/optional/format/json-pointer.json +168 -0
  57. data/JSON-Schema-Test-Suite/tests/draft2019-08/optional/format/regex.json +18 -0
  58. data/JSON-Schema-Test-Suite/tests/draft2019-08/optional/format/relative-json-pointer.json +33 -0
  59. data/JSON-Schema-Test-Suite/tests/draft2019-08/optional/format/time.json +23 -0
  60. data/JSON-Schema-Test-Suite/tests/draft2019-08/optional/format/uri-reference.json +43 -0
  61. data/JSON-Schema-Test-Suite/tests/draft2019-08/optional/format/uri-template.json +28 -0
  62. data/JSON-Schema-Test-Suite/tests/draft2019-08/optional/format/uri.json +103 -0
  63. data/JSON-Schema-Test-Suite/tests/draft2019-08/optional/zeroTerminatedFloats.json +15 -0
  64. data/JSON-Schema-Test-Suite/tests/draft2019-08/pattern.json +34 -0
  65. data/JSON-Schema-Test-Suite/tests/draft2019-08/patternProperties.json +151 -0
  66. data/JSON-Schema-Test-Suite/tests/draft2019-08/properties.json +167 -0
  67. data/JSON-Schema-Test-Suite/tests/draft2019-08/propertyNames.json +78 -0
  68. data/JSON-Schema-Test-Suite/tests/draft2019-08/ref.json +443 -0
  69. data/JSON-Schema-Test-Suite/tests/draft2019-08/refRemote.json +167 -0
  70. data/JSON-Schema-Test-Suite/tests/draft2019-08/required.json +105 -0
  71. data/JSON-Schema-Test-Suite/tests/draft2019-08/type.json +464 -0
  72. data/JSON-Schema-Test-Suite/tests/draft2019-08/uniqueItems.json +89 -0
  73. data/JSON-Schema-Test-Suite/tests/draft3/additionalItems.json +82 -0
  74. data/JSON-Schema-Test-Suite/tests/draft3/additionalProperties.json +133 -0
  75. data/JSON-Schema-Test-Suite/tests/draft3/default.json +49 -0
  76. data/JSON-Schema-Test-Suite/tests/draft3/dependencies.json +118 -0
  77. data/JSON-Schema-Test-Suite/tests/draft3/disallow.json +80 -0
  78. data/JSON-Schema-Test-Suite/tests/draft3/divisibleBy.json +60 -0
  79. data/JSON-Schema-Test-Suite/tests/draft3/enum.json +71 -0
  80. data/JSON-Schema-Test-Suite/tests/draft3/extends.json +94 -0
  81. data/JSON-Schema-Test-Suite/tests/draft3/items.json +46 -0
  82. data/JSON-Schema-Test-Suite/tests/draft3/maxItems.json +28 -0
  83. data/JSON-Schema-Test-Suite/tests/draft3/maxLength.json +33 -0
  84. data/JSON-Schema-Test-Suite/tests/draft3/maximum.json +42 -0
  85. data/JSON-Schema-Test-Suite/tests/draft3/minItems.json +28 -0
  86. data/JSON-Schema-Test-Suite/tests/draft3/minLength.json +33 -0
  87. data/JSON-Schema-Test-Suite/tests/draft3/minimum.json +73 -0
  88. data/JSON-Schema-Test-Suite/tests/draft3/optional/bignum.json +107 -0
  89. data/JSON-Schema-Test-Suite/tests/draft3/optional/format.json +227 -0
  90. data/JSON-Schema-Test-Suite/tests/draft3/optional/jsregex.json +18 -0
  91. data/JSON-Schema-Test-Suite/tests/draft3/optional/zeroTerminatedFloats.json +15 -0
  92. data/JSON-Schema-Test-Suite/tests/draft3/pattern.json +34 -0
  93. data/JSON-Schema-Test-Suite/tests/draft3/patternProperties.json +115 -0
  94. data/JSON-Schema-Test-Suite/tests/draft3/properties.json +97 -0
  95. data/JSON-Schema-Test-Suite/tests/draft3/ref.json +192 -0
  96. data/JSON-Schema-Test-Suite/tests/draft3/refRemote.json +74 -0
  97. data/JSON-Schema-Test-Suite/tests/draft3/required.json +53 -0
  98. data/JSON-Schema-Test-Suite/tests/draft3/type.json +489 -0
  99. data/JSON-Schema-Test-Suite/tests/draft3/uniqueItems.json +79 -0
  100. data/JSON-Schema-Test-Suite/tests/draft4/additionalItems.json +87 -0
  101. data/JSON-Schema-Test-Suite/tests/draft4/additionalProperties.json +133 -0
  102. data/JSON-Schema-Test-Suite/tests/draft4/allOf.json +185 -0
  103. data/JSON-Schema-Test-Suite/tests/draft4/anyOf.json +156 -0
  104. data/JSON-Schema-Test-Suite/tests/draft4/default.json +49 -0
  105. data/JSON-Schema-Test-Suite/tests/draft4/definitions.json +32 -0
  106. data/JSON-Schema-Test-Suite/tests/draft4/dependencies.json +194 -0
  107. data/JSON-Schema-Test-Suite/tests/draft4/enum.json +179 -0
  108. data/JSON-Schema-Test-Suite/tests/draft4/items.json +195 -0
  109. data/JSON-Schema-Test-Suite/tests/draft4/maxItems.json +28 -0
  110. data/JSON-Schema-Test-Suite/tests/draft4/maxLength.json +33 -0
  111. data/JSON-Schema-Test-Suite/tests/draft4/maxProperties.json +38 -0
  112. data/JSON-Schema-Test-Suite/tests/draft4/maximum.json +73 -0
  113. data/JSON-Schema-Test-Suite/tests/draft4/minItems.json +28 -0
  114. data/JSON-Schema-Test-Suite/tests/draft4/minLength.json +33 -0
  115. data/JSON-Schema-Test-Suite/tests/draft4/minProperties.json +38 -0
  116. data/JSON-Schema-Test-Suite/tests/draft4/minimum.json +104 -0
  117. data/JSON-Schema-Test-Suite/tests/draft4/multipleOf.json +60 -0
  118. data/JSON-Schema-Test-Suite/tests/draft4/not.json +96 -0
  119. data/JSON-Schema-Test-Suite/tests/draft4/oneOf.json +162 -0
  120. data/JSON-Schema-Test-Suite/tests/draft4/optional/bignum.json +107 -0
  121. data/JSON-Schema-Test-Suite/tests/draft4/optional/ecmascript-regex.json +13 -0
  122. data/JSON-Schema-Test-Suite/tests/draft4/optional/format.json +253 -0
  123. data/JSON-Schema-Test-Suite/tests/draft4/optional/zeroTerminatedFloats.json +15 -0
  124. data/JSON-Schema-Test-Suite/tests/draft4/pattern.json +34 -0
  125. data/JSON-Schema-Test-Suite/tests/draft4/patternProperties.json +120 -0
  126. data/JSON-Schema-Test-Suite/tests/draft4/properties.json +136 -0
  127. data/JSON-Schema-Test-Suite/tests/draft4/ref.json +411 -0
  128. data/JSON-Schema-Test-Suite/tests/draft4/refRemote.json +171 -0
  129. data/JSON-Schema-Test-Suite/tests/draft4/required.json +89 -0
  130. data/JSON-Schema-Test-Suite/tests/draft4/type.json +464 -0
  131. data/JSON-Schema-Test-Suite/tests/draft4/uniqueItems.json +89 -0
  132. data/JSON-Schema-Test-Suite/tests/draft6/additionalItems.json +87 -0
  133. data/JSON-Schema-Test-Suite/tests/draft6/additionalProperties.json +133 -0
  134. data/JSON-Schema-Test-Suite/tests/draft6/allOf.json +218 -0
  135. data/JSON-Schema-Test-Suite/tests/draft6/anyOf.json +189 -0
  136. data/JSON-Schema-Test-Suite/tests/draft6/boolean_schema.json +104 -0
  137. data/JSON-Schema-Test-Suite/tests/draft6/const.json +170 -0
  138. data/JSON-Schema-Test-Suite/tests/draft6/contains.json +100 -0
  139. data/JSON-Schema-Test-Suite/tests/draft6/default.json +49 -0
  140. data/JSON-Schema-Test-Suite/tests/draft6/definitions.json +32 -0
  141. data/JSON-Schema-Test-Suite/tests/draft6/dependencies.json +268 -0
  142. data/JSON-Schema-Test-Suite/tests/draft6/enum.json +179 -0
  143. data/JSON-Schema-Test-Suite/tests/draft6/exclusiveMaximum.json +30 -0
  144. data/JSON-Schema-Test-Suite/tests/draft6/exclusiveMinimum.json +30 -0
  145. data/JSON-Schema-Test-Suite/tests/draft6/items.json +250 -0
  146. data/JSON-Schema-Test-Suite/tests/draft6/maxItems.json +28 -0
  147. data/JSON-Schema-Test-Suite/tests/draft6/maxLength.json +33 -0
  148. data/JSON-Schema-Test-Suite/tests/draft6/maxProperties.json +38 -0
  149. data/JSON-Schema-Test-Suite/tests/draft6/maximum.json +28 -0
  150. data/JSON-Schema-Test-Suite/tests/draft6/minItems.json +28 -0
  151. data/JSON-Schema-Test-Suite/tests/draft6/minLength.json +33 -0
  152. data/JSON-Schema-Test-Suite/tests/draft6/minProperties.json +38 -0
  153. data/JSON-Schema-Test-Suite/tests/draft6/minimum.json +59 -0
  154. data/JSON-Schema-Test-Suite/tests/draft6/multipleOf.json +60 -0
  155. data/JSON-Schema-Test-Suite/tests/draft6/not.json +117 -0
  156. data/JSON-Schema-Test-Suite/tests/draft6/oneOf.json +206 -0
  157. data/JSON-Schema-Test-Suite/tests/draft6/optional/bignum.json +105 -0
  158. data/JSON-Schema-Test-Suite/tests/draft6/optional/ecmascript-regex.json +13 -0
  159. data/JSON-Schema-Test-Suite/tests/draft6/optional/format.json +491 -0
  160. data/JSON-Schema-Test-Suite/tests/draft6/optional/zeroTerminatedFloats.json +15 -0
  161. data/JSON-Schema-Test-Suite/tests/draft6/pattern.json +34 -0
  162. data/JSON-Schema-Test-Suite/tests/draft6/patternProperties.json +151 -0
  163. data/JSON-Schema-Test-Suite/tests/draft6/properties.json +167 -0
  164. data/JSON-Schema-Test-Suite/tests/draft6/propertyNames.json +78 -0
  165. data/JSON-Schema-Test-Suite/tests/draft6/ref.json +443 -0
  166. data/JSON-Schema-Test-Suite/tests/draft6/refRemote.json +171 -0
  167. data/JSON-Schema-Test-Suite/tests/draft6/required.json +105 -0
  168. data/JSON-Schema-Test-Suite/tests/draft6/type.json +464 -0
  169. data/JSON-Schema-Test-Suite/tests/draft6/uniqueItems.json +89 -0
  170. data/JSON-Schema-Test-Suite/tests/draft7/additionalItems.json +87 -0
  171. data/JSON-Schema-Test-Suite/tests/draft7/additionalProperties.json +133 -0
  172. data/JSON-Schema-Test-Suite/tests/draft7/allOf.json +218 -0
  173. data/JSON-Schema-Test-Suite/tests/draft7/anyOf.json +189 -0
  174. data/JSON-Schema-Test-Suite/tests/draft7/boolean_schema.json +104 -0
  175. data/JSON-Schema-Test-Suite/tests/draft7/const.json +170 -0
  176. data/JSON-Schema-Test-Suite/tests/draft7/contains.json +100 -0
  177. data/JSON-Schema-Test-Suite/tests/draft7/default.json +49 -0
  178. data/JSON-Schema-Test-Suite/tests/draft7/definitions.json +32 -0
  179. data/JSON-Schema-Test-Suite/tests/draft7/dependencies.json +268 -0
  180. data/JSON-Schema-Test-Suite/tests/draft7/enum.json +179 -0
  181. data/JSON-Schema-Test-Suite/tests/draft7/exclusiveMaximum.json +30 -0
  182. data/JSON-Schema-Test-Suite/tests/draft7/exclusiveMinimum.json +30 -0
  183. data/JSON-Schema-Test-Suite/tests/draft7/if-then-else.json +188 -0
  184. data/JSON-Schema-Test-Suite/tests/draft7/items.json +250 -0
  185. data/JSON-Schema-Test-Suite/tests/draft7/maxItems.json +28 -0
  186. data/JSON-Schema-Test-Suite/tests/draft7/maxLength.json +33 -0
  187. data/JSON-Schema-Test-Suite/tests/draft7/maxProperties.json +38 -0
  188. data/JSON-Schema-Test-Suite/tests/draft7/maximum.json +28 -0
  189. data/JSON-Schema-Test-Suite/tests/draft7/minItems.json +28 -0
  190. data/JSON-Schema-Test-Suite/tests/draft7/minLength.json +33 -0
  191. data/JSON-Schema-Test-Suite/tests/draft7/minProperties.json +38 -0
  192. data/JSON-Schema-Test-Suite/tests/draft7/minimum.json +59 -0
  193. data/JSON-Schema-Test-Suite/tests/draft7/multipleOf.json +60 -0
  194. data/JSON-Schema-Test-Suite/tests/draft7/not.json +117 -0
  195. data/JSON-Schema-Test-Suite/tests/draft7/oneOf.json +206 -0
  196. data/JSON-Schema-Test-Suite/tests/draft7/optional/bignum.json +105 -0
  197. data/JSON-Schema-Test-Suite/tests/draft7/optional/content.json +77 -0
  198. data/JSON-Schema-Test-Suite/tests/draft7/optional/ecmascript-regex.json +13 -0
  199. data/JSON-Schema-Test-Suite/tests/draft7/optional/format/date-time.json +53 -0
  200. data/JSON-Schema-Test-Suite/tests/draft7/optional/format/date.json +23 -0
  201. data/JSON-Schema-Test-Suite/tests/draft7/optional/format/email.json +18 -0
  202. data/JSON-Schema-Test-Suite/tests/draft7/optional/format/hostname.json +33 -0
  203. data/JSON-Schema-Test-Suite/tests/draft7/optional/format/idn-email.json +18 -0
  204. data/JSON-Schema-Test-Suite/tests/draft7/optional/format/idn-hostname.json +28 -0
  205. data/JSON-Schema-Test-Suite/tests/draft7/optional/format/ipv4.json +33 -0
  206. data/JSON-Schema-Test-Suite/tests/draft7/optional/format/ipv6.json +28 -0
  207. data/JSON-Schema-Test-Suite/tests/draft7/optional/format/iri-reference.json +43 -0
  208. data/JSON-Schema-Test-Suite/tests/draft7/optional/format/iri.json +53 -0
  209. data/JSON-Schema-Test-Suite/tests/draft7/optional/format/json-pointer.json +168 -0
  210. data/JSON-Schema-Test-Suite/tests/draft7/optional/format/regex.json +18 -0
  211. data/JSON-Schema-Test-Suite/tests/draft7/optional/format/relative-json-pointer.json +33 -0
  212. data/JSON-Schema-Test-Suite/tests/draft7/optional/format/time.json +23 -0
  213. data/JSON-Schema-Test-Suite/tests/draft7/optional/format/uri-reference.json +43 -0
  214. data/JSON-Schema-Test-Suite/tests/draft7/optional/format/uri-template.json +28 -0
  215. data/JSON-Schema-Test-Suite/tests/draft7/optional/format/uri.json +103 -0
  216. data/JSON-Schema-Test-Suite/tests/draft7/optional/zeroTerminatedFloats.json +15 -0
  217. data/JSON-Schema-Test-Suite/tests/draft7/pattern.json +34 -0
  218. data/JSON-Schema-Test-Suite/tests/draft7/patternProperties.json +151 -0
  219. data/JSON-Schema-Test-Suite/tests/draft7/properties.json +167 -0
  220. data/JSON-Schema-Test-Suite/tests/draft7/propertyNames.json +78 -0
  221. data/JSON-Schema-Test-Suite/tests/draft7/ref.json +443 -0
  222. data/JSON-Schema-Test-Suite/tests/draft7/refRemote.json +171 -0
  223. data/JSON-Schema-Test-Suite/tests/draft7/required.json +105 -0
  224. data/JSON-Schema-Test-Suite/tests/draft7/type.json +464 -0
  225. data/JSON-Schema-Test-Suite/tests/draft7/uniqueItems.json +89 -0
  226. data/JSON-Schema-Test-Suite/tox.ini +8 -0
  227. data/README.md +1 -1
  228. data/lib/json_schemer/schema/base.rb +2 -2
  229. data/lib/json_schemer/version.rb +1 -1
  230. metadata +226 -4
  231. data/.gitmodules +0 -4
  232. data/.travis.yml +0 -10
@@ -0,0 +1,79 @@
1
+ [
2
+ {
3
+ "description": "uniqueItems validation",
4
+ "schema": {"uniqueItems": true},
5
+ "tests": [
6
+ {
7
+ "description": "unique array of integers is valid",
8
+ "data": [1, 2],
9
+ "valid": true
10
+ },
11
+ {
12
+ "description": "non-unique array of integers is invalid",
13
+ "data": [1, 1],
14
+ "valid": false
15
+ },
16
+ {
17
+ "description": "numbers are unique if mathematically unequal",
18
+ "data": [1.0, 1.00, 1],
19
+ "valid": false
20
+ },
21
+ {
22
+ "description": "unique array of objects is valid",
23
+ "data": [{"foo": "bar"}, {"foo": "baz"}],
24
+ "valid": true
25
+ },
26
+ {
27
+ "description": "non-unique array of objects is invalid",
28
+ "data": [{"foo": "bar"}, {"foo": "bar"}],
29
+ "valid": false
30
+ },
31
+ {
32
+ "description": "unique array of nested objects is valid",
33
+ "data": [
34
+ {"foo": {"bar" : {"baz" : true}}},
35
+ {"foo": {"bar" : {"baz" : false}}}
36
+ ],
37
+ "valid": true
38
+ },
39
+ {
40
+ "description": "non-unique array of nested objects is invalid",
41
+ "data": [
42
+ {"foo": {"bar" : {"baz" : true}}},
43
+ {"foo": {"bar" : {"baz" : true}}}
44
+ ],
45
+ "valid": false
46
+ },
47
+ {
48
+ "description": "unique array of arrays is valid",
49
+ "data": [["foo"], ["bar"]],
50
+ "valid": true
51
+ },
52
+ {
53
+ "description": "non-unique array of arrays is invalid",
54
+ "data": [["foo"], ["foo"]],
55
+ "valid": false
56
+ },
57
+ {
58
+ "description": "1 and true are unique",
59
+ "data": [1, true],
60
+ "valid": true
61
+ },
62
+ {
63
+ "description": "0 and false are unique",
64
+ "data": [0, false],
65
+ "valid": true
66
+ },
67
+ {
68
+ "description": "unique heterogeneous types are valid",
69
+ "data": [{}, [1], true, null, 1],
70
+ "valid": true
71
+ },
72
+ {
73
+ "description": "non-unique heterogeneous types are invalid",
74
+ "data": [{}, [1], true, null, {}, 1],
75
+ "valid": false
76
+ }
77
+ ]
78
+ }
79
+ ]
@@ -0,0 +1,87 @@
1
+ [
2
+ {
3
+ "description": "additionalItems as schema",
4
+ "schema": {
5
+ "items": [{}],
6
+ "additionalItems": {"type": "integer"}
7
+ },
8
+ "tests": [
9
+ {
10
+ "description": "additional items match schema",
11
+ "data": [ null, 2, 3, 4 ],
12
+ "valid": true
13
+ },
14
+ {
15
+ "description": "additional items do not match schema",
16
+ "data": [ null, 2, 3, "foo" ],
17
+ "valid": false
18
+ }
19
+ ]
20
+ },
21
+ {
22
+ "description": "items is schema, no additionalItems",
23
+ "schema": {
24
+ "items": {},
25
+ "additionalItems": false
26
+ },
27
+ "tests": [
28
+ {
29
+ "description": "all items match schema",
30
+ "data": [ 1, 2, 3, 4, 5 ],
31
+ "valid": true
32
+ }
33
+ ]
34
+ },
35
+ {
36
+ "description": "array of items with no additionalItems",
37
+ "schema": {
38
+ "items": [{}, {}, {}],
39
+ "additionalItems": false
40
+ },
41
+ "tests": [
42
+ {
43
+ "description": "fewer number of items present",
44
+ "data": [ 1, 2 ],
45
+ "valid": true
46
+ },
47
+ {
48
+ "description": "equal number of items present",
49
+ "data": [ 1, 2, 3 ],
50
+ "valid": true
51
+ },
52
+ {
53
+ "description": "additional items are not permitted",
54
+ "data": [ 1, 2, 3, 4 ],
55
+ "valid": false
56
+ }
57
+ ]
58
+ },
59
+ {
60
+ "description": "additionalItems as false without items",
61
+ "schema": {"additionalItems": false},
62
+ "tests": [
63
+ {
64
+ "description":
65
+ "items defaults to empty schema so everything is valid",
66
+ "data": [ 1, 2, 3, 4, 5 ],
67
+ "valid": true
68
+ },
69
+ {
70
+ "description": "ignores non-arrays",
71
+ "data": {"foo" : "bar"},
72
+ "valid": true
73
+ }
74
+ ]
75
+ },
76
+ {
77
+ "description": "additionalItems are allowed by default",
78
+ "schema": {"items": [{"type": "integer"}]},
79
+ "tests": [
80
+ {
81
+ "description": "only the first item is validated",
82
+ "data": [1, "foo", false],
83
+ "valid": true
84
+ }
85
+ ]
86
+ }
87
+ ]
@@ -0,0 +1,133 @@
1
+ [
2
+ {
3
+ "description":
4
+ "additionalProperties being false does not allow other properties",
5
+ "schema": {
6
+ "properties": {"foo": {}, "bar": {}},
7
+ "patternProperties": { "^v": {} },
8
+ "additionalProperties": false
9
+ },
10
+ "tests": [
11
+ {
12
+ "description": "no additional properties is valid",
13
+ "data": {"foo": 1},
14
+ "valid": true
15
+ },
16
+ {
17
+ "description": "an additional property is invalid",
18
+ "data": {"foo" : 1, "bar" : 2, "quux" : "boom"},
19
+ "valid": false
20
+ },
21
+ {
22
+ "description": "ignores arrays",
23
+ "data": [1, 2, 3],
24
+ "valid": true
25
+ },
26
+ {
27
+ "description": "ignores strings",
28
+ "data": "foobarbaz",
29
+ "valid": true
30
+ },
31
+ {
32
+ "description": "ignores other non-objects",
33
+ "data": 12,
34
+ "valid": true
35
+ },
36
+ {
37
+ "description": "patternProperties are not additional properties",
38
+ "data": {"foo":1, "vroom": 2},
39
+ "valid": true
40
+ }
41
+ ]
42
+ },
43
+ {
44
+ "description": "non-ASCII pattern with additionalProperties",
45
+ "schema": {
46
+ "patternProperties": {"^á": {}},
47
+ "additionalProperties": false
48
+ },
49
+ "tests": [
50
+ {
51
+ "description": "matching the pattern is valid",
52
+ "data": {"ármányos": 2},
53
+ "valid": true
54
+ },
55
+ {
56
+ "description": "not matching the pattern is invalid",
57
+ "data": {"élmény": 2},
58
+ "valid": false
59
+ }
60
+ ]
61
+ },
62
+ {
63
+ "description":
64
+ "additionalProperties allows a schema which should validate",
65
+ "schema": {
66
+ "properties": {"foo": {}, "bar": {}},
67
+ "additionalProperties": {"type": "boolean"}
68
+ },
69
+ "tests": [
70
+ {
71
+ "description": "no additional properties is valid",
72
+ "data": {"foo": 1},
73
+ "valid": true
74
+ },
75
+ {
76
+ "description": "an additional valid property is valid",
77
+ "data": {"foo" : 1, "bar" : 2, "quux" : true},
78
+ "valid": true
79
+ },
80
+ {
81
+ "description": "an additional invalid property is invalid",
82
+ "data": {"foo" : 1, "bar" : 2, "quux" : 12},
83
+ "valid": false
84
+ }
85
+ ]
86
+ },
87
+ {
88
+ "description":
89
+ "additionalProperties can exist by itself",
90
+ "schema": {
91
+ "additionalProperties": {"type": "boolean"}
92
+ },
93
+ "tests": [
94
+ {
95
+ "description": "an additional valid property is valid",
96
+ "data": {"foo" : true},
97
+ "valid": true
98
+ },
99
+ {
100
+ "description": "an additional invalid property is invalid",
101
+ "data": {"foo" : 1},
102
+ "valid": false
103
+ }
104
+ ]
105
+ },
106
+ {
107
+ "description": "additionalProperties are allowed by default",
108
+ "schema": {"properties": {"foo": {}, "bar": {}}},
109
+ "tests": [
110
+ {
111
+ "description": "additional properties are allowed",
112
+ "data": {"foo": 1, "bar": 2, "quux": true},
113
+ "valid": true
114
+ }
115
+ ]
116
+ },
117
+ {
118
+ "description": "additionalProperties should not look in applicators",
119
+ "schema": {
120
+ "allOf": [
121
+ {"properties": {"foo": {}}}
122
+ ],
123
+ "additionalProperties": {"type": "boolean"}
124
+ },
125
+ "tests": [
126
+ {
127
+ "description": "properties defined in allOf are not allowed",
128
+ "data": {"foo": 1, "bar": true},
129
+ "valid": false
130
+ }
131
+ ]
132
+ }
133
+ ]
@@ -0,0 +1,185 @@
1
+ [
2
+ {
3
+ "description": "allOf",
4
+ "schema": {
5
+ "allOf": [
6
+ {
7
+ "properties": {
8
+ "bar": {"type": "integer"}
9
+ },
10
+ "required": ["bar"]
11
+ },
12
+ {
13
+ "properties": {
14
+ "foo": {"type": "string"}
15
+ },
16
+ "required": ["foo"]
17
+ }
18
+ ]
19
+ },
20
+ "tests": [
21
+ {
22
+ "description": "allOf",
23
+ "data": {"foo": "baz", "bar": 2},
24
+ "valid": true
25
+ },
26
+ {
27
+ "description": "mismatch second",
28
+ "data": {"foo": "baz"},
29
+ "valid": false
30
+ },
31
+ {
32
+ "description": "mismatch first",
33
+ "data": {"bar": 2},
34
+ "valid": false
35
+ },
36
+ {
37
+ "description": "wrong type",
38
+ "data": {"foo": "baz", "bar": "quux"},
39
+ "valid": false
40
+ }
41
+ ]
42
+ },
43
+ {
44
+ "description": "allOf with base schema",
45
+ "schema": {
46
+ "properties": {"bar": {"type": "integer"}},
47
+ "required": ["bar"],
48
+ "allOf" : [
49
+ {
50
+ "properties": {
51
+ "foo": {"type": "string"}
52
+ },
53
+ "required": ["foo"]
54
+ },
55
+ {
56
+ "properties": {
57
+ "baz": {"type": "null"}
58
+ },
59
+ "required": ["baz"]
60
+ }
61
+ ]
62
+ },
63
+ "tests": [
64
+ {
65
+ "description": "valid",
66
+ "data": {"foo": "quux", "bar": 2, "baz": null},
67
+ "valid": true
68
+ },
69
+ {
70
+ "description": "mismatch base schema",
71
+ "data": {"foo": "quux", "baz": null},
72
+ "valid": false
73
+ },
74
+ {
75
+ "description": "mismatch first allOf",
76
+ "data": {"bar": 2, "baz": null},
77
+ "valid": false
78
+ },
79
+ {
80
+ "description": "mismatch second allOf",
81
+ "data": {"foo": "quux", "bar": 2},
82
+ "valid": false
83
+ },
84
+ {
85
+ "description": "mismatch both",
86
+ "data": {"bar": 2},
87
+ "valid": false
88
+ }
89
+ ]
90
+ },
91
+ {
92
+ "description": "allOf simple types",
93
+ "schema": {
94
+ "allOf": [
95
+ {"maximum": 30},
96
+ {"minimum": 20}
97
+ ]
98
+ },
99
+ "tests": [
100
+ {
101
+ "description": "valid",
102
+ "data": 25,
103
+ "valid": true
104
+ },
105
+ {
106
+ "description": "mismatch one",
107
+ "data": 35,
108
+ "valid": false
109
+ }
110
+ ]
111
+ },
112
+ {
113
+ "description": "allOf with one empty schema",
114
+ "schema": {
115
+ "allOf": [
116
+ {}
117
+ ]
118
+ },
119
+ "tests": [
120
+ {
121
+ "description": "any data is valid",
122
+ "data": 1,
123
+ "valid": true
124
+ }
125
+ ]
126
+ },
127
+ {
128
+ "description": "allOf with two empty schemas",
129
+ "schema": {
130
+ "allOf": [
131
+ {},
132
+ {}
133
+ ]
134
+ },
135
+ "tests": [
136
+ {
137
+ "description": "any data is valid",
138
+ "data": 1,
139
+ "valid": true
140
+ }
141
+ ]
142
+ },
143
+ {
144
+ "description": "allOf with the first empty schema",
145
+ "schema": {
146
+ "allOf": [
147
+ {},
148
+ { "type": "number" }
149
+ ]
150
+ },
151
+ "tests": [
152
+ {
153
+ "description": "number is valid",
154
+ "data": 1,
155
+ "valid": true
156
+ },
157
+ {
158
+ "description": "string is invalid",
159
+ "data": "foo",
160
+ "valid": false
161
+ }
162
+ ]
163
+ },
164
+ {
165
+ "description": "allOf with the last empty schema",
166
+ "schema": {
167
+ "allOf": [
168
+ { "type": "number" },
169
+ {}
170
+ ]
171
+ },
172
+ "tests": [
173
+ {
174
+ "description": "number is valid",
175
+ "data": 1,
176
+ "valid": true
177
+ },
178
+ {
179
+ "description": "string is invalid",
180
+ "data": "foo",
181
+ "valid": false
182
+ }
183
+ ]
184
+ }
185
+ ]