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,18 @@
1
+ [
2
+ {
3
+ "description": "ECMA 262 regex dialect recognition",
4
+ "schema": { "format": "regex" },
5
+ "tests": [
6
+ {
7
+ "description": "[^] is a valid regex",
8
+ "data": "[^]",
9
+ "valid": true
10
+ },
11
+ {
12
+ "description": "ECMA 262 has no support for lookbehind",
13
+ "data": "(?<=foo)bar",
14
+ "valid": false
15
+ }
16
+ ]
17
+ }
18
+ ]
@@ -0,0 +1,15 @@
1
+ [
2
+ {
3
+ "description": "some languages do not distinguish between different types of numeric value",
4
+ "schema": {
5
+ "type": "integer"
6
+ },
7
+ "tests": [
8
+ {
9
+ "description": "a float is not an integer even without fractional part",
10
+ "data": 1.0,
11
+ "valid": false
12
+ }
13
+ ]
14
+ }
15
+ ]
@@ -0,0 +1,34 @@
1
+ [
2
+ {
3
+ "description": "pattern validation",
4
+ "schema": {"pattern": "^a*$"},
5
+ "tests": [
6
+ {
7
+ "description": "a matching pattern is valid",
8
+ "data": "aaa",
9
+ "valid": true
10
+ },
11
+ {
12
+ "description": "a non-matching pattern is invalid",
13
+ "data": "abc",
14
+ "valid": false
15
+ },
16
+ {
17
+ "description": "ignores non-strings",
18
+ "data": true,
19
+ "valid": true
20
+ }
21
+ ]
22
+ },
23
+ {
24
+ "description": "pattern is not anchored",
25
+ "schema": {"pattern": "a+"},
26
+ "tests": [
27
+ {
28
+ "description": "matches a substring",
29
+ "data": "xxaayy",
30
+ "valid": true
31
+ }
32
+ ]
33
+ }
34
+ ]
@@ -0,0 +1,115 @@
1
+ [
2
+ {
3
+ "description":
4
+ "patternProperties validates properties matching a regex",
5
+ "schema": {
6
+ "patternProperties": {
7
+ "f.*o": {"type": "integer"}
8
+ }
9
+ },
10
+ "tests": [
11
+ {
12
+ "description": "a single valid match is valid",
13
+ "data": {"foo": 1},
14
+ "valid": true
15
+ },
16
+ {
17
+ "description": "multiple valid matches is valid",
18
+ "data": {"foo": 1, "foooooo" : 2},
19
+ "valid": true
20
+ },
21
+ {
22
+ "description": "a single invalid match is invalid",
23
+ "data": {"foo": "bar", "fooooo": 2},
24
+ "valid": false
25
+ },
26
+ {
27
+ "description": "multiple invalid matches is invalid",
28
+ "data": {"foo": "bar", "foooooo" : "baz"},
29
+ "valid": false
30
+ },
31
+ {
32
+ "description": "ignores arrays",
33
+ "data": [],
34
+ "valid": true
35
+ },
36
+ {
37
+ "description": "ignores other non-objects",
38
+ "data": 12,
39
+ "valid": true
40
+ }
41
+ ]
42
+ },
43
+ {
44
+ "description": "multiple simultaneous patternProperties are validated",
45
+ "schema": {
46
+ "patternProperties": {
47
+ "a*": {"type": "integer"},
48
+ "aaa*": {"maximum": 20}
49
+ }
50
+ },
51
+ "tests": [
52
+ {
53
+ "description": "a single valid match is valid",
54
+ "data": {"a": 21},
55
+ "valid": true
56
+ },
57
+ {
58
+ "description": "a simultaneous match is valid",
59
+ "data": {"aaaa": 18},
60
+ "valid": true
61
+ },
62
+ {
63
+ "description": "multiple matches is valid",
64
+ "data": {"a": 21, "aaaa": 18},
65
+ "valid": true
66
+ },
67
+ {
68
+ "description": "an invalid due to one is invalid",
69
+ "data": {"a": "bar"},
70
+ "valid": false
71
+ },
72
+ {
73
+ "description": "an invalid due to the other is invalid",
74
+ "data": {"aaaa": 31},
75
+ "valid": false
76
+ },
77
+ {
78
+ "description": "an invalid due to both is invalid",
79
+ "data": {"aaa": "foo", "aaaa": 31},
80
+ "valid": false
81
+ }
82
+ ]
83
+ },
84
+ {
85
+ "description": "regexes are not anchored by default and are case sensitive",
86
+ "schema": {
87
+ "patternProperties": {
88
+ "[0-9]{2,}": { "type": "boolean" },
89
+ "X_": { "type": "string" }
90
+ }
91
+ },
92
+ "tests": [
93
+ {
94
+ "description": "non recognized members are ignored",
95
+ "data": { "answer 1": "42" },
96
+ "valid": true
97
+ },
98
+ {
99
+ "description": "recognized members are accounted for",
100
+ "data": { "a31b": null },
101
+ "valid": false
102
+ },
103
+ {
104
+ "description": "regexes are case sensitive",
105
+ "data": { "a_x_3": 3 },
106
+ "valid": true
107
+ },
108
+ {
109
+ "description": "regexes are case sensitive, 2",
110
+ "data": { "a_X_3": 3 },
111
+ "valid": false
112
+ }
113
+ ]
114
+ }
115
+ ]
@@ -0,0 +1,97 @@
1
+ [
2
+ {
3
+ "description": "object properties validation",
4
+ "schema": {
5
+ "properties": {
6
+ "foo": {"type": "integer"},
7
+ "bar": {"type": "string"}
8
+ }
9
+ },
10
+ "tests": [
11
+ {
12
+ "description": "both properties present and valid is valid",
13
+ "data": {"foo": 1, "bar": "baz"},
14
+ "valid": true
15
+ },
16
+ {
17
+ "description": "one property invalid is invalid",
18
+ "data": {"foo": 1, "bar": {}},
19
+ "valid": false
20
+ },
21
+ {
22
+ "description": "both properties invalid is invalid",
23
+ "data": {"foo": [], "bar": {}},
24
+ "valid": false
25
+ },
26
+ {
27
+ "description": "doesn't invalidate other properties",
28
+ "data": {"quux": []},
29
+ "valid": true
30
+ },
31
+ {
32
+ "description": "ignores arrays",
33
+ "data": [],
34
+ "valid": true
35
+ },
36
+ {
37
+ "description": "ignores other non-objects",
38
+ "data": 12,
39
+ "valid": true
40
+ }
41
+ ]
42
+ },
43
+ {
44
+ "description":
45
+ "properties, patternProperties, additionalProperties interaction",
46
+ "schema": {
47
+ "properties": {
48
+ "foo": {"type": "array", "maxItems": 3},
49
+ "bar": {"type": "array"}
50
+ },
51
+ "patternProperties": {"f.o": {"minItems": 2}},
52
+ "additionalProperties": {"type": "integer"}
53
+ },
54
+ "tests": [
55
+ {
56
+ "description": "property validates property",
57
+ "data": {"foo": [1, 2]},
58
+ "valid": true
59
+ },
60
+ {
61
+ "description": "property invalidates property",
62
+ "data": {"foo": [1, 2, 3, 4]},
63
+ "valid": false
64
+ },
65
+ {
66
+ "description": "patternProperty invalidates property",
67
+ "data": {"foo": []},
68
+ "valid": false
69
+ },
70
+ {
71
+ "description": "patternProperty validates nonproperty",
72
+ "data": {"fxo": [1, 2]},
73
+ "valid": true
74
+ },
75
+ {
76
+ "description": "patternProperty invalidates nonproperty",
77
+ "data": {"fxo": []},
78
+ "valid": false
79
+ },
80
+ {
81
+ "description": "additionalProperty ignores property",
82
+ "data": {"bar": []},
83
+ "valid": true
84
+ },
85
+ {
86
+ "description": "additionalProperty validates others",
87
+ "data": {"quux": 3},
88
+ "valid": true
89
+ },
90
+ {
91
+ "description": "additionalProperty invalidates others",
92
+ "data": {"quux": "foo"},
93
+ "valid": false
94
+ }
95
+ ]
96
+ }
97
+ ]
@@ -0,0 +1,192 @@
1
+ [
2
+ {
3
+ "description": "root pointer ref",
4
+ "schema": {
5
+ "properties": {
6
+ "foo": {"$ref": "#"}
7
+ },
8
+ "additionalProperties": false
9
+ },
10
+ "tests": [
11
+ {
12
+ "description": "match",
13
+ "data": {"foo": false},
14
+ "valid": true
15
+ },
16
+ {
17
+ "description": "recursive match",
18
+ "data": {"foo": {"foo": false}},
19
+ "valid": true
20
+ },
21
+ {
22
+ "description": "mismatch",
23
+ "data": {"bar": false},
24
+ "valid": false
25
+ },
26
+ {
27
+ "description": "recursive mismatch",
28
+ "data": {"foo": {"bar": false}},
29
+ "valid": false
30
+ }
31
+ ]
32
+ },
33
+ {
34
+ "description": "relative pointer ref to object",
35
+ "schema": {
36
+ "properties": {
37
+ "foo": {"type": "integer"},
38
+ "bar": {"$ref": "#/properties/foo"}
39
+ }
40
+ },
41
+ "tests": [
42
+ {
43
+ "description": "match",
44
+ "data": {"bar": 3},
45
+ "valid": true
46
+ },
47
+ {
48
+ "description": "mismatch",
49
+ "data": {"bar": true},
50
+ "valid": false
51
+ }
52
+ ]
53
+ },
54
+ {
55
+ "description": "relative pointer ref to array",
56
+ "schema": {
57
+ "items": [
58
+ {"type": "integer"},
59
+ {"$ref": "#/items/0"}
60
+ ]
61
+ },
62
+ "tests": [
63
+ {
64
+ "description": "match array",
65
+ "data": [1, 2],
66
+ "valid": true
67
+ },
68
+ {
69
+ "description": "mismatch array",
70
+ "data": [1, "foo"],
71
+ "valid": false
72
+ }
73
+ ]
74
+ },
75
+ {
76
+ "description": "escaped pointer ref",
77
+ "schema": {
78
+ "tilda~field": {"type": "integer"},
79
+ "slash/field": {"type": "integer"},
80
+ "percent%field": {"type": "integer"},
81
+ "properties": {
82
+ "tilda": {"$ref": "#/tilda~0field"},
83
+ "slash": {"$ref": "#/slash~1field"},
84
+ "percent": {"$ref": "#/percent%25field"}
85
+ }
86
+ },
87
+ "tests": [
88
+ {
89
+ "description": "slash invalid",
90
+ "data": {"slash": "aoeu"},
91
+ "valid": false
92
+ },
93
+ {
94
+ "description": "tilda invalid",
95
+ "data": {"tilda": "aoeu"},
96
+ "valid": false
97
+ },
98
+ {
99
+ "description": "percent invalid",
100
+ "data": {"percent": "aoeu"},
101
+ "valid": false
102
+ },
103
+ {
104
+ "description": "slash valid",
105
+ "data": {"slash": 123},
106
+ "valid": true
107
+ },
108
+ {
109
+ "description": "tilda valid",
110
+ "data": {"tilda": 123},
111
+ "valid": true
112
+ },
113
+ {
114
+ "description": "percent valid",
115
+ "data": {"percent": 123},
116
+ "valid": true
117
+ }
118
+ ]
119
+ },
120
+ {
121
+ "description": "nested refs",
122
+ "schema": {
123
+ "definitions": {
124
+ "a": {"type": "integer"},
125
+ "b": {"$ref": "#/definitions/a"},
126
+ "c": {"$ref": "#/definitions/b"}
127
+ },
128
+ "$ref": "#/definitions/c"
129
+ },
130
+ "tests": [
131
+ {
132
+ "description": "nested ref valid",
133
+ "data": 5,
134
+ "valid": true
135
+ },
136
+ {
137
+ "description": "nested ref invalid",
138
+ "data": "a",
139
+ "valid": false
140
+ }
141
+ ]
142
+ },
143
+ {
144
+ "description": "ref overrides any sibling keywords",
145
+ "schema": {
146
+ "definitions": {
147
+ "reffed": {
148
+ "type": "array"
149
+ }
150
+ },
151
+ "properties": {
152
+ "foo": {
153
+ "$ref": "#/definitions/reffed",
154
+ "maxItems": 2
155
+ }
156
+ }
157
+ },
158
+ "tests": [
159
+ {
160
+ "description": "remote ref valid",
161
+ "data": { "foo": [] },
162
+ "valid": true
163
+ },
164
+ {
165
+ "description": "remote ref valid, maxItems ignored",
166
+ "data": { "foo": [ 1, 2, 3] },
167
+ "valid": true
168
+ },
169
+ {
170
+ "description": "ref invalid",
171
+ "data": { "foo": "string" },
172
+ "valid": false
173
+ }
174
+ ]
175
+ },
176
+ {
177
+ "description": "remote ref, containing refs itself",
178
+ "schema": {"$ref": "http://json-schema.org/draft-03/schema#"},
179
+ "tests": [
180
+ {
181
+ "description": "remote ref valid",
182
+ "data": {"items": {"type": "integer"}},
183
+ "valid": true
184
+ },
185
+ {
186
+ "description": "remote ref invalid",
187
+ "data": {"items": {"type": 1}},
188
+ "valid": false
189
+ }
190
+ ]
191
+ }
192
+ ]