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,95 @@
1
+ [
2
+ {
3
+ "description": "contains keyword validation",
4
+ "schema": {
5
+ "contains": {"minimum": 5}
6
+ },
7
+ "tests": [
8
+ {
9
+ "description": "array with item matching schema (5) is valid",
10
+ "data": [3, 4, 5],
11
+ "valid": true
12
+ },
13
+ {
14
+ "description": "array with item matching schema (6) is valid",
15
+ "data": [3, 4, 6],
16
+ "valid": true
17
+ },
18
+ {
19
+ "description": "array with two items matching schema (5, 6) is valid",
20
+ "data": [3, 4, 5, 6],
21
+ "valid": true
22
+ },
23
+ {
24
+ "description": "array without items matching schema is invalid",
25
+ "data": [2, 3, 4],
26
+ "valid": false
27
+ },
28
+ {
29
+ "description": "empty array is invalid",
30
+ "data": [],
31
+ "valid": false
32
+ },
33
+ {
34
+ "description": "not array is valid",
35
+ "data": {},
36
+ "valid": true
37
+ }
38
+ ]
39
+ },
40
+ {
41
+ "description": "contains keyword with const keyword",
42
+ "schema": {
43
+ "contains": { "const": 5 }
44
+ },
45
+ "tests": [
46
+ {
47
+ "description": "array with item 5 is valid",
48
+ "data": [3, 4, 5],
49
+ "valid": true
50
+ },
51
+ {
52
+ "description": "array with two items 5 is valid",
53
+ "data": [3, 4, 5, 5],
54
+ "valid": true
55
+ },
56
+ {
57
+ "description": "array without item 5 is invalid",
58
+ "data": [1, 2, 3, 4],
59
+ "valid": false
60
+ }
61
+ ]
62
+ },
63
+ {
64
+ "description": "contains keyword with boolean schema true",
65
+ "schema": {"contains": true},
66
+ "tests": [
67
+ {
68
+ "description": "any non-empty array is valid",
69
+ "data": ["foo"],
70
+ "valid": true
71
+ },
72
+ {
73
+ "description": "empty array is invalid",
74
+ "data": [],
75
+ "valid": false
76
+ }
77
+ ]
78
+ },
79
+ {
80
+ "description": "contains keyword with boolean schema false",
81
+ "schema": {"contains": false},
82
+ "tests": [
83
+ {
84
+ "description": "any non-empty array is invalid",
85
+ "data": ["foo"],
86
+ "valid": false
87
+ },
88
+ {
89
+ "description": "empty array is invalid",
90
+ "data": [],
91
+ "valid": false
92
+ }
93
+ ]
94
+ }
95
+ ]
@@ -0,0 +1,49 @@
1
+ [
2
+ {
3
+ "description": "invalid type for default",
4
+ "schema": {
5
+ "properties": {
6
+ "foo": {
7
+ "type": "integer",
8
+ "default": []
9
+ }
10
+ }
11
+ },
12
+ "tests": [
13
+ {
14
+ "description": "valid when property is specified",
15
+ "data": {"foo": 13},
16
+ "valid": true
17
+ },
18
+ {
19
+ "description": "still valid when the invalid default is used",
20
+ "data": {},
21
+ "valid": true
22
+ }
23
+ ]
24
+ },
25
+ {
26
+ "description": "invalid string value for default",
27
+ "schema": {
28
+ "properties": {
29
+ "bar": {
30
+ "type": "string",
31
+ "minLength": 4,
32
+ "default": "bad"
33
+ }
34
+ }
35
+ },
36
+ "tests": [
37
+ {
38
+ "description": "valid when property is specified",
39
+ "data": {"bar": "good"},
40
+ "valid": true
41
+ },
42
+ {
43
+ "description": "still valid when the invalid default is used",
44
+ "data": {},
45
+ "valid": true
46
+ }
47
+ ]
48
+ }
49
+ ]
@@ -0,0 +1,24 @@
1
+ [
2
+ {
3
+ "description": "valid definition",
4
+ "schema": {"$ref": "http://json-schema.org/draft/2019-06/schema#"},
5
+ "tests": [
6
+ {
7
+ "description": "valid definition schema",
8
+ "data": {"$defs": {"foo": {"type": "integer"}}},
9
+ "valid": true
10
+ }
11
+ ]
12
+ },
13
+ {
14
+ "description": "invalid definition",
15
+ "schema": {"$ref": "http://json-schema.org/draft/2019-06/schema#"},
16
+ "tests": [
17
+ {
18
+ "description": "invalid definition schema",
19
+ "data": {"$defs": {"foo": {"type": 1}}},
20
+ "valid": false
21
+ }
22
+ ]
23
+ }
24
+ ]
@@ -0,0 +1,268 @@
1
+ [
2
+ {
3
+ "description": "dependencies",
4
+ "schema": {
5
+ "dependencies": {"bar": ["foo"]}
6
+ },
7
+ "tests": [
8
+ {
9
+ "description": "neither",
10
+ "data": {},
11
+ "valid": true
12
+ },
13
+ {
14
+ "description": "nondependant",
15
+ "data": {"foo": 1},
16
+ "valid": true
17
+ },
18
+ {
19
+ "description": "with dependency",
20
+ "data": {"foo": 1, "bar": 2},
21
+ "valid": true
22
+ },
23
+ {
24
+ "description": "missing dependency",
25
+ "data": {"bar": 2},
26
+ "valid": false
27
+ },
28
+ {
29
+ "description": "ignores arrays",
30
+ "data": ["bar"],
31
+ "valid": true
32
+ },
33
+ {
34
+ "description": "ignores strings",
35
+ "data": "foobar",
36
+ "valid": true
37
+ },
38
+ {
39
+ "description": "ignores other non-objects",
40
+ "data": 12,
41
+ "valid": true
42
+ }
43
+ ]
44
+ },
45
+ {
46
+ "description": "dependencies with empty array",
47
+ "schema": {
48
+ "dependencies": {"bar": []}
49
+ },
50
+ "tests": [
51
+ {
52
+ "description": "empty object",
53
+ "data": {},
54
+ "valid": true
55
+ },
56
+ {
57
+ "description": "object with one property",
58
+ "data": {"bar": 2},
59
+ "valid": true
60
+ }
61
+ ]
62
+ },
63
+ {
64
+ "description": "multiple dependencies",
65
+ "schema": {
66
+ "dependencies": {"quux": ["foo", "bar"]}
67
+ },
68
+ "tests": [
69
+ {
70
+ "description": "neither",
71
+ "data": {},
72
+ "valid": true
73
+ },
74
+ {
75
+ "description": "nondependants",
76
+ "data": {"foo": 1, "bar": 2},
77
+ "valid": true
78
+ },
79
+ {
80
+ "description": "with dependencies",
81
+ "data": {"foo": 1, "bar": 2, "quux": 3},
82
+ "valid": true
83
+ },
84
+ {
85
+ "description": "missing dependency",
86
+ "data": {"foo": 1, "quux": 2},
87
+ "valid": false
88
+ },
89
+ {
90
+ "description": "missing other dependency",
91
+ "data": {"bar": 1, "quux": 2},
92
+ "valid": false
93
+ },
94
+ {
95
+ "description": "missing both dependencies",
96
+ "data": {"quux": 1},
97
+ "valid": false
98
+ }
99
+ ]
100
+ },
101
+ {
102
+ "description": "multiple dependencies subschema",
103
+ "schema": {
104
+ "dependencies": {
105
+ "bar": {
106
+ "properties": {
107
+ "foo": {"type": "integer"},
108
+ "bar": {"type": "integer"}
109
+ }
110
+ }
111
+ }
112
+ },
113
+ "tests": [
114
+ {
115
+ "description": "valid",
116
+ "data": {"foo": 1, "bar": 2},
117
+ "valid": true
118
+ },
119
+ {
120
+ "description": "no dependency",
121
+ "data": {"foo": "quux"},
122
+ "valid": true
123
+ },
124
+ {
125
+ "description": "wrong type",
126
+ "data": {"foo": "quux", "bar": 2},
127
+ "valid": false
128
+ },
129
+ {
130
+ "description": "wrong type other",
131
+ "data": {"foo": 2, "bar": "quux"},
132
+ "valid": false
133
+ },
134
+ {
135
+ "description": "wrong type both",
136
+ "data": {"foo": "quux", "bar": "quux"},
137
+ "valid": false
138
+ }
139
+ ]
140
+ },
141
+ {
142
+ "description": "dependencies with boolean subschemas",
143
+ "schema": {
144
+ "dependencies": {
145
+ "foo": true,
146
+ "bar": false
147
+ }
148
+ },
149
+ "tests": [
150
+ {
151
+ "description": "object with property having schema true is valid",
152
+ "data": {"foo": 1},
153
+ "valid": true
154
+ },
155
+ {
156
+ "description": "object with property having schema false is invalid",
157
+ "data": {"bar": 2},
158
+ "valid": false
159
+ },
160
+ {
161
+ "description": "object with both properties is invalid",
162
+ "data": {"foo": 1, "bar": 2},
163
+ "valid": false
164
+ },
165
+ {
166
+ "description": "empty object is valid",
167
+ "data": {},
168
+ "valid": true
169
+ }
170
+ ]
171
+ },
172
+ {
173
+ "description": "empty array of dependencies",
174
+ "schema": {
175
+ "dependencies": {
176
+ "foo": []
177
+ }
178
+ },
179
+ "tests": [
180
+ {
181
+ "description": "object with property is valid",
182
+ "data": { "foo": 1 },
183
+ "valid": true
184
+ },
185
+ {
186
+ "description": "empty object is valid",
187
+ "data": {},
188
+ "valid": true
189
+ },
190
+ {
191
+ "description": "non-object is valid",
192
+ "data": 1,
193
+ "valid": true
194
+ }
195
+ ]
196
+ },
197
+ {
198
+ "description": "dependencies with escaped characters",
199
+ "schema": {
200
+ "dependencies": {
201
+ "foo\nbar": ["foo\rbar"],
202
+ "foo\tbar": {
203
+ "minProperties": 4
204
+ },
205
+ "foo'bar": {"required": ["foo\"bar"]},
206
+ "foo\"bar": ["foo'bar"]
207
+ }
208
+ },
209
+ "tests": [
210
+ {
211
+ "description": "valid object 1",
212
+ "data": {
213
+ "foo\nbar": 1,
214
+ "foo\rbar": 2
215
+ },
216
+ "valid": true
217
+ },
218
+ {
219
+ "description": "valid object 2",
220
+ "data": {
221
+ "foo\tbar": 1,
222
+ "a": 2,
223
+ "b": 3,
224
+ "c": 4
225
+ },
226
+ "valid": true
227
+ },
228
+ {
229
+ "description": "valid object 3",
230
+ "data": {
231
+ "foo'bar": 1,
232
+ "foo\"bar": 2
233
+ },
234
+ "valid": true
235
+ },
236
+ {
237
+ "description": "invalid object 1",
238
+ "data": {
239
+ "foo\nbar": 1,
240
+ "foo": 2
241
+ },
242
+ "valid": false
243
+ },
244
+ {
245
+ "description": "invalid object 2",
246
+ "data": {
247
+ "foo\tbar": 1,
248
+ "a": 2
249
+ },
250
+ "valid": false
251
+ },
252
+ {
253
+ "description": "invalid object 3",
254
+ "data": {
255
+ "foo'bar": 1
256
+ },
257
+ "valid": false
258
+ },
259
+ {
260
+ "description": "invalid object 4",
261
+ "data": {
262
+ "foo\"bar": 2
263
+ },
264
+ "valid": false
265
+ }
266
+ ]
267
+ }
268
+ ]
@@ -0,0 +1,179 @@
1
+ [
2
+ {
3
+ "description": "simple enum validation",
4
+ "schema": {"enum": [1, 2, 3]},
5
+ "tests": [
6
+ {
7
+ "description": "one of the enum is valid",
8
+ "data": 1,
9
+ "valid": true
10
+ },
11
+ {
12
+ "description": "something else is invalid",
13
+ "data": 4,
14
+ "valid": false
15
+ }
16
+ ]
17
+ },
18
+ {
19
+ "description": "heterogeneous enum validation",
20
+ "schema": {"enum": [6, "foo", [], true, {"foo": 12}]},
21
+ "tests": [
22
+ {
23
+ "description": "one of the enum is valid",
24
+ "data": [],
25
+ "valid": true
26
+ },
27
+ {
28
+ "description": "something else is invalid",
29
+ "data": null,
30
+ "valid": false
31
+ },
32
+ {
33
+ "description": "objects are deep compared",
34
+ "data": {"foo": false},
35
+ "valid": false
36
+ }
37
+ ]
38
+ },
39
+ {
40
+ "description": "enums in properties",
41
+ "schema": {
42
+ "type":"object",
43
+ "properties": {
44
+ "foo": {"enum":["foo"]},
45
+ "bar": {"enum":["bar"]}
46
+ },
47
+ "required": ["bar"]
48
+ },
49
+ "tests": [
50
+ {
51
+ "description": "both properties are valid",
52
+ "data": {"foo":"foo", "bar":"bar"},
53
+ "valid": true
54
+ },
55
+ {
56
+ "description": "missing optional property is valid",
57
+ "data": {"bar":"bar"},
58
+ "valid": true
59
+ },
60
+ {
61
+ "description": "missing required property is invalid",
62
+ "data": {"foo":"foo"},
63
+ "valid": false
64
+ },
65
+ {
66
+ "description": "missing all properties is invalid",
67
+ "data": {},
68
+ "valid": false
69
+ }
70
+ ]
71
+ },
72
+ {
73
+ "description": "enum with escaped characters",
74
+ "schema": {
75
+ "enum": ["foo\nbar", "foo\rbar"]
76
+ },
77
+ "tests": [
78
+ {
79
+ "description": "member 1 is valid",
80
+ "data": "foo\nbar",
81
+ "valid": true
82
+ },
83
+ {
84
+ "description": "member 2 is valid",
85
+ "data": "foo\rbar",
86
+ "valid": true
87
+ },
88
+ {
89
+ "description": "another string is invalid",
90
+ "data": "abc",
91
+ "valid": false
92
+ }
93
+ ]
94
+ },
95
+ {
96
+ "description": "enum with false does not match 0",
97
+ "schema": {"enum": [false]},
98
+ "tests": [
99
+ {
100
+ "description": "false is valid",
101
+ "data": false,
102
+ "valid": true
103
+ },
104
+ {
105
+ "description": "integer zero is invalid",
106
+ "data": 0,
107
+ "valid": false
108
+ },
109
+ {
110
+ "description": "float zero is invalid",
111
+ "data": 0.0,
112
+ "valid": false
113
+ }
114
+ ]
115
+ },
116
+ {
117
+ "description": "enum with true does not match 1",
118
+ "schema": {"enum": [true]},
119
+ "tests": [
120
+ {
121
+ "description": "true is valid",
122
+ "data": true,
123
+ "valid": true
124
+ },
125
+ {
126
+ "description": "integer one is invalid",
127
+ "data": 1,
128
+ "valid": false
129
+ },
130
+ {
131
+ "description": "float one is invalid",
132
+ "data": 1.0,
133
+ "valid": false
134
+ }
135
+ ]
136
+ },
137
+ {
138
+ "description": "enum with 0 does not match false",
139
+ "schema": {"enum": [0]},
140
+ "tests": [
141
+ {
142
+ "description": "false is invalid",
143
+ "data": false,
144
+ "valid": false
145
+ },
146
+ {
147
+ "description": "integer zero is valid",
148
+ "data": 0,
149
+ "valid": true
150
+ },
151
+ {
152
+ "description": "float zero is valid",
153
+ "data": 0.0,
154
+ "valid": true
155
+ }
156
+ ]
157
+ },
158
+ {
159
+ "description": "enum with 1 does not match true",
160
+ "schema": {"enum": [1]},
161
+ "tests": [
162
+ {
163
+ "description": "true is invalid",
164
+ "data": true,
165
+ "valid": false
166
+ },
167
+ {
168
+ "description": "integer one is valid",
169
+ "data": 1,
170
+ "valid": true
171
+ },
172
+ {
173
+ "description": "float one is valid",
174
+ "data": 1.0,
175
+ "valid": true
176
+ }
177
+ ]
178
+ }
179
+ ]