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,13 @@
1
+ [
2
+ {
3
+ "description": "ECMA 262 regex non-compliance",
4
+ "schema": { "format": "regex" },
5
+ "tests": [
6
+ {
7
+ "description": "ECMA 262 has no support for \\Z anchor from .NET",
8
+ "data": "^\\S(|(.|\\n)*\\S)\\Z",
9
+ "valid": false
10
+ }
11
+ ]
12
+ }
13
+ ]
@@ -0,0 +1,253 @@
1
+ [
2
+ {
3
+ "description": "validation of date-time strings",
4
+ "schema": {"format": "date-time"},
5
+ "tests": [
6
+ {
7
+ "description": "a valid date-time string",
8
+ "data": "1963-06-19T08:30:06.283185Z",
9
+ "valid": true
10
+ },
11
+ {
12
+ "description": "a valid date-time string without second fraction",
13
+ "data": "1963-06-19T08:30:06Z",
14
+ "valid": true
15
+ },
16
+ {
17
+ "description": "a valid date-time string with plus offset",
18
+ "data": "1937-01-01T12:00:27.87+00:20",
19
+ "valid": true
20
+ },
21
+ {
22
+ "description": "a valid date-time string with minus offset",
23
+ "data": "1990-12-31T15:59:50.123-08:00",
24
+ "valid": true
25
+ },
26
+ {
27
+ "description": "a invalid day in date-time string",
28
+ "data": "1990-02-31T15:59:60.123-08:00",
29
+ "valid": false
30
+ },
31
+ {
32
+ "description": "an invalid offset in date-time string",
33
+ "data": "1990-12-31T15:59:60-24:00",
34
+ "valid": false
35
+ },
36
+ {
37
+ "description": "an invalid date-time string",
38
+ "data": "06/19/1963 08:30:06 PST",
39
+ "valid": false
40
+ },
41
+ {
42
+ "description": "case-insensitive T and Z",
43
+ "data": "1963-06-19t08:30:06.283185z",
44
+ "valid": true
45
+ },
46
+ {
47
+ "description": "only RFC3339 not all of ISO 8601 are valid",
48
+ "data": "2013-350T01:01:01",
49
+ "valid": false
50
+ }
51
+ ]
52
+ },
53
+ {
54
+ "description": "validation of URIs",
55
+ "schema": {"format": "uri"},
56
+ "tests": [
57
+ {
58
+ "description": "a valid URL with anchor tag",
59
+ "data": "http://foo.bar/?baz=qux#quux",
60
+ "valid": true
61
+ },
62
+ {
63
+ "description": "a valid URL with anchor tag and parantheses",
64
+ "data": "http://foo.com/blah_(wikipedia)_blah#cite-1",
65
+ "valid": true
66
+ },
67
+ {
68
+ "description": "a valid URL with URL-encoded stuff",
69
+ "data": "http://foo.bar/?q=Test%20URL-encoded%20stuff",
70
+ "valid": true
71
+ },
72
+ {
73
+ "description": "a valid puny-coded URL ",
74
+ "data": "http://xn--nw2a.xn--j6w193g/",
75
+ "valid": true
76
+ },
77
+ {
78
+ "description": "a valid URL with many special characters",
79
+ "data": "http://-.~_!$&'()*+,;=:%40:80%2f::::::@example.com",
80
+ "valid": true
81
+ },
82
+ {
83
+ "description": "a valid URL based on IPv4",
84
+ "data": "http://223.255.255.254",
85
+ "valid": true
86
+ },
87
+ {
88
+ "description": "a valid URL with ftp scheme",
89
+ "data": "ftp://ftp.is.co.za/rfc/rfc1808.txt",
90
+ "valid": true
91
+ },
92
+ {
93
+ "description": "a valid URL for a simple text file",
94
+ "data": "http://www.ietf.org/rfc/rfc2396.txt",
95
+ "valid": true
96
+ },
97
+ {
98
+ "description": "a valid URL ",
99
+ "data": "ldap://[2001:db8::7]/c=GB?objectClass?one",
100
+ "valid": true
101
+ },
102
+ {
103
+ "description": "a valid mailto URI",
104
+ "data": "mailto:John.Doe@example.com",
105
+ "valid": true
106
+ },
107
+ {
108
+ "description": "a valid newsgroup URI",
109
+ "data": "news:comp.infosystems.www.servers.unix",
110
+ "valid": true
111
+ },
112
+ {
113
+ "description": "a valid tel URI",
114
+ "data": "tel:+1-816-555-1212",
115
+ "valid": true
116
+ },
117
+ {
118
+ "description": "a valid URN",
119
+ "data": "urn:oasis:names:specification:docbook:dtd:xml:4.1.2",
120
+ "valid": true
121
+ },
122
+ {
123
+ "description": "an invalid protocol-relative URI Reference",
124
+ "data": "//foo.bar/?baz=qux#quux",
125
+ "valid": false
126
+ },
127
+ {
128
+ "description": "an invalid relative URI Reference",
129
+ "data": "/abc",
130
+ "valid": false
131
+ },
132
+ {
133
+ "description": "an invalid URI",
134
+ "data": "\\\\WINDOWS\\fileshare",
135
+ "valid": false
136
+ },
137
+ {
138
+ "description": "an invalid URI though valid URI reference",
139
+ "data": "abc",
140
+ "valid": false
141
+ },
142
+ {
143
+ "description": "an invalid URI with spaces",
144
+ "data": "http:// shouldfail.com",
145
+ "valid": false
146
+ },
147
+ {
148
+ "description": "an invalid URI with spaces and missing scheme",
149
+ "data": ":// should fail",
150
+ "valid": false
151
+ }
152
+ ]
153
+ },
154
+ {
155
+ "description": "validation of e-mail addresses",
156
+ "schema": {"format": "email"},
157
+ "tests": [
158
+ {
159
+ "description": "a valid e-mail address",
160
+ "data": "joe.bloggs@example.com",
161
+ "valid": true
162
+ },
163
+ {
164
+ "description": "an invalid e-mail address",
165
+ "data": "2962",
166
+ "valid": false
167
+ }
168
+ ]
169
+ },
170
+ {
171
+ "description": "validation of IP addresses",
172
+ "schema": {"format": "ipv4"},
173
+ "tests": [
174
+ {
175
+ "description": "a valid IP address",
176
+ "data": "192.168.0.1",
177
+ "valid": true
178
+ },
179
+ {
180
+ "description": "an IP address with too many components",
181
+ "data": "127.0.0.0.1",
182
+ "valid": false
183
+ },
184
+ {
185
+ "description": "an IP address with out-of-range values",
186
+ "data": "256.256.256.256",
187
+ "valid": false
188
+ },
189
+ {
190
+ "description": "an IP address without 4 components",
191
+ "data": "127.0",
192
+ "valid": false
193
+ },
194
+ {
195
+ "description": "an IP address as an integer",
196
+ "data": "0x7f000001",
197
+ "valid": false
198
+ }
199
+ ]
200
+ },
201
+ {
202
+ "description": "validation of IPv6 addresses",
203
+ "schema": {"format": "ipv6"},
204
+ "tests": [
205
+ {
206
+ "description": "a valid IPv6 address",
207
+ "data": "::1",
208
+ "valid": true
209
+ },
210
+ {
211
+ "description": "an IPv6 address with out-of-range values",
212
+ "data": "12345::",
213
+ "valid": false
214
+ },
215
+ {
216
+ "description": "an IPv6 address with too many components",
217
+ "data": "1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1",
218
+ "valid": false
219
+ },
220
+ {
221
+ "description": "an IPv6 address containing illegal characters",
222
+ "data": "::laptop",
223
+ "valid": false
224
+ }
225
+ ]
226
+ },
227
+ {
228
+ "description": "validation of host names",
229
+ "schema": {"format": "hostname"},
230
+ "tests": [
231
+ {
232
+ "description": "a valid host name",
233
+ "data": "www.example.com",
234
+ "valid": true
235
+ },
236
+ {
237
+ "description": "a host name starting with an illegal character",
238
+ "data": "-a-host-name-that-starts-with--",
239
+ "valid": false
240
+ },
241
+ {
242
+ "description": "a host name containing illegal characters",
243
+ "data": "not_a_valid_host_name",
244
+ "valid": false
245
+ },
246
+ {
247
+ "description": "a host name with a component too long",
248
+ "data": "a-vvvvvvvvvvvvvvvveeeeeeeeeeeeeeeerrrrrrrrrrrrrrrryyyyyyyyyyyyyyyy-long-host-name-component",
249
+ "valid": false
250
+ }
251
+ ]
252
+ }
253
+ ]
@@ -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,120 @@
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 strings",
38
+ "data": "",
39
+ "valid": true
40
+ },
41
+ {
42
+ "description": "ignores other non-objects",
43
+ "data": 12,
44
+ "valid": true
45
+ }
46
+ ]
47
+ },
48
+ {
49
+ "description": "multiple simultaneous patternProperties are validated",
50
+ "schema": {
51
+ "patternProperties": {
52
+ "a*": {"type": "integer"},
53
+ "aaa*": {"maximum": 20}
54
+ }
55
+ },
56
+ "tests": [
57
+ {
58
+ "description": "a single valid match is valid",
59
+ "data": {"a": 21},
60
+ "valid": true
61
+ },
62
+ {
63
+ "description": "a simultaneous match is valid",
64
+ "data": {"aaaa": 18},
65
+ "valid": true
66
+ },
67
+ {
68
+ "description": "multiple matches is valid",
69
+ "data": {"a": 21, "aaaa": 18},
70
+ "valid": true
71
+ },
72
+ {
73
+ "description": "an invalid due to one is invalid",
74
+ "data": {"a": "bar"},
75
+ "valid": false
76
+ },
77
+ {
78
+ "description": "an invalid due to the other is invalid",
79
+ "data": {"aaaa": 31},
80
+ "valid": false
81
+ },
82
+ {
83
+ "description": "an invalid due to both is invalid",
84
+ "data": {"aaa": "foo", "aaaa": 31},
85
+ "valid": false
86
+ }
87
+ ]
88
+ },
89
+ {
90
+ "description": "regexes are not anchored by default and are case sensitive",
91
+ "schema": {
92
+ "patternProperties": {
93
+ "[0-9]{2,}": { "type": "boolean" },
94
+ "X_": { "type": "string" }
95
+ }
96
+ },
97
+ "tests": [
98
+ {
99
+ "description": "non recognized members are ignored",
100
+ "data": { "answer 1": "42" },
101
+ "valid": true
102
+ },
103
+ {
104
+ "description": "recognized members are accounted for",
105
+ "data": { "a31b": null },
106
+ "valid": false
107
+ },
108
+ {
109
+ "description": "regexes are case sensitive",
110
+ "data": { "a_x_3": 3 },
111
+ "valid": true
112
+ },
113
+ {
114
+ "description": "regexes are case sensitive, 2",
115
+ "data": { "a_X_3": 3 },
116
+ "valid": false
117
+ }
118
+ ]
119
+ }
120
+ ]
@@ -0,0 +1,136 @@
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
+ {
98
+ "description": "properties with escaped characters",
99
+ "schema": {
100
+ "properties": {
101
+ "foo\nbar": {"type": "number"},
102
+ "foo\"bar": {"type": "number"},
103
+ "foo\\bar": {"type": "number"},
104
+ "foo\rbar": {"type": "number"},
105
+ "foo\tbar": {"type": "number"},
106
+ "foo\fbar": {"type": "number"}
107
+ }
108
+ },
109
+ "tests": [
110
+ {
111
+ "description": "object with all numbers is valid",
112
+ "data": {
113
+ "foo\nbar": 1,
114
+ "foo\"bar": 1,
115
+ "foo\\bar": 1,
116
+ "foo\rbar": 1,
117
+ "foo\tbar": 1,
118
+ "foo\fbar": 1
119
+ },
120
+ "valid": true
121
+ },
122
+ {
123
+ "description": "object with strings is invalid",
124
+ "data": {
125
+ "foo\nbar": "1",
126
+ "foo\"bar": "1",
127
+ "foo\\bar": "1",
128
+ "foo\rbar": "1",
129
+ "foo\tbar": "1",
130
+ "foo\fbar": "1"
131
+ },
132
+ "valid": false
133
+ }
134
+ ]
135
+ }
136
+ ]