json_schemer 0.2.7 → 0.2.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (84) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -1
  3. data/JSON-Schema-Test-Suite/bin/jsonschema_suite +8 -5
  4. data/JSON-Schema-Test-Suite/remotes/folder/folderInteger.json +1 -1
  5. data/JSON-Schema-Test-Suite/remotes/integer.json +1 -1
  6. data/JSON-Schema-Test-Suite/remotes/name-defs.json +6 -2
  7. data/JSON-Schema-Test-Suite/remotes/name.json +6 -2
  8. data/JSON-Schema-Test-Suite/remotes/subSchemas.json +2 -2
  9. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/additionalItems.json +0 -0
  10. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/additionalProperties.json +0 -0
  11. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/allOf.json +0 -0
  12. data/JSON-Schema-Test-Suite/tests/draft2019-09/anchor.json +87 -0
  13. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/anyOf.json +0 -0
  14. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/boolean_schema.json +0 -0
  15. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/const.json +0 -0
  16. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/contains.json +0 -0
  17. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/default.json +0 -0
  18. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/defs.json +2 -2
  19. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/dependencies.json +0 -0
  20. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/enum.json +0 -0
  21. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/exclusiveMaximum.json +0 -0
  22. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/exclusiveMinimum.json +0 -0
  23. data/JSON-Schema-Test-Suite/tests/draft2019-09/format.json +614 -0
  24. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/if-then-else.json +0 -0
  25. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/items.json +0 -0
  26. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/maxItems.json +0 -0
  27. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/maxLength.json +0 -0
  28. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/maxProperties.json +0 -0
  29. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/maximum.json +0 -0
  30. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/minItems.json +0 -0
  31. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/minLength.json +0 -0
  32. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/minProperties.json +0 -0
  33. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/minimum.json +0 -0
  34. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/multipleOf.json +0 -0
  35. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/not.json +0 -0
  36. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/oneOf.json +0 -0
  37. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/optional/bignum.json +0 -0
  38. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/optional/content.json +0 -0
  39. data/JSON-Schema-Test-Suite/tests/draft2019-09/optional/ecmascript-regex.json +213 -0
  40. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/optional/format/date-time.json +0 -0
  41. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/optional/format/date.json +0 -0
  42. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/optional/format/email.json +0 -0
  43. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/optional/format/hostname.json +0 -0
  44. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/optional/format/idn-email.json +0 -0
  45. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/optional/format/idn-hostname.json +0 -0
  46. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/optional/format/ipv4.json +0 -0
  47. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/optional/format/ipv6.json +0 -0
  48. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/optional/format/iri-reference.json +0 -0
  49. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/optional/format/iri.json +0 -0
  50. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/optional/format/json-pointer.json +0 -0
  51. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/optional/format/regex.json +0 -0
  52. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/optional/format/relative-json-pointer.json +0 -0
  53. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/optional/format/time.json +0 -0
  54. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/optional/format/uri-reference.json +0 -0
  55. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/optional/format/uri-template.json +0 -0
  56. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/optional/format/uri.json +0 -0
  57. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/optional/zeroTerminatedFloats.json +0 -0
  58. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/pattern.json +0 -0
  59. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/patternProperties.json +0 -0
  60. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/properties.json +0 -0
  61. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/propertyNames.json +0 -0
  62. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/ref.json +1 -85
  63. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/refRemote.json +0 -0
  64. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/required.json +0 -0
  65. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/type.json +0 -0
  66. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/uniqueItems.json +84 -0
  67. data/JSON-Schema-Test-Suite/tests/draft3/format.json +362 -0
  68. data/JSON-Schema-Test-Suite/tests/draft3/optional/{jsregex.json → ecmascript-regex.json} +0 -0
  69. data/JSON-Schema-Test-Suite/tests/draft3/uniqueItems.json +84 -0
  70. data/JSON-Schema-Test-Suite/tests/draft4/format.json +218 -0
  71. data/JSON-Schema-Test-Suite/tests/draft4/optional/ecmascript-regex.json +200 -0
  72. data/JSON-Schema-Test-Suite/tests/draft4/uniqueItems.json +84 -0
  73. data/JSON-Schema-Test-Suite/tests/draft6/format.json +326 -0
  74. data/JSON-Schema-Test-Suite/tests/draft6/optional/ecmascript-regex.json +200 -0
  75. data/JSON-Schema-Test-Suite/tests/draft6/uniqueItems.json +84 -0
  76. data/JSON-Schema-Test-Suite/tests/draft7/format.json +614 -0
  77. data/JSON-Schema-Test-Suite/tests/draft7/optional/ecmascript-regex.json +200 -0
  78. data/JSON-Schema-Test-Suite/tests/draft7/uniqueItems.json +84 -0
  79. data/JSON-Schema-Test-Suite/tests/latest +1 -0
  80. data/JSON-Schema-Test-Suite/tox.ini +3 -2
  81. data/lib/json_schemer/format.rb +25 -58
  82. data/lib/json_schemer/version.rb +1 -1
  83. metadata +66 -59
  84. data/JSON-Schema-Test-Suite/tests/draft2019-08/optional/ecmascript-regex.json +0 -13
@@ -0,0 +1,218 @@
1
+ [
2
+ {
3
+ "description": "validation of e-mail addresses",
4
+ "schema": {"format": "email"},
5
+ "tests": [
6
+ {
7
+ "description": "ignores integers",
8
+ "data": 12,
9
+ "valid": true
10
+ },
11
+ {
12
+ "description": "ignores floats",
13
+ "data": 13.7,
14
+ "valid": true
15
+ },
16
+ {
17
+ "description": "ignores objects",
18
+ "data": {},
19
+ "valid": true
20
+ },
21
+ {
22
+ "description": "ignores arrays",
23
+ "data": [],
24
+ "valid": true
25
+ },
26
+ {
27
+ "description": "ignores booleans",
28
+ "data": false,
29
+ "valid": true
30
+ },
31
+ {
32
+ "description": "ignores null",
33
+ "data": null,
34
+ "valid": true
35
+ }
36
+ ]
37
+ },
38
+ {
39
+ "description": "validation of IP addresses",
40
+ "schema": {"format": "ipv4"},
41
+ "tests": [
42
+ {
43
+ "description": "ignores integers",
44
+ "data": 12,
45
+ "valid": true
46
+ },
47
+ {
48
+ "description": "ignores floats",
49
+ "data": 13.7,
50
+ "valid": true
51
+ },
52
+ {
53
+ "description": "ignores objects",
54
+ "data": {},
55
+ "valid": true
56
+ },
57
+ {
58
+ "description": "ignores arrays",
59
+ "data": [],
60
+ "valid": true
61
+ },
62
+ {
63
+ "description": "ignores booleans",
64
+ "data": false,
65
+ "valid": true
66
+ },
67
+ {
68
+ "description": "ignores null",
69
+ "data": null,
70
+ "valid": true
71
+ }
72
+ ]
73
+ },
74
+ {
75
+ "description": "validation of IPv6 addresses",
76
+ "schema": {"format": "ipv6"},
77
+ "tests": [
78
+ {
79
+ "description": "ignores integers",
80
+ "data": 12,
81
+ "valid": true
82
+ },
83
+ {
84
+ "description": "ignores floats",
85
+ "data": 13.7,
86
+ "valid": true
87
+ },
88
+ {
89
+ "description": "ignores objects",
90
+ "data": {},
91
+ "valid": true
92
+ },
93
+ {
94
+ "description": "ignores arrays",
95
+ "data": [],
96
+ "valid": true
97
+ },
98
+ {
99
+ "description": "ignores booleans",
100
+ "data": false,
101
+ "valid": true
102
+ },
103
+ {
104
+ "description": "ignores null",
105
+ "data": null,
106
+ "valid": true
107
+ }
108
+ ]
109
+ },
110
+ {
111
+ "description": "validation of hostnames",
112
+ "schema": {"format": "hostname"},
113
+ "tests": [
114
+ {
115
+ "description": "ignores integers",
116
+ "data": 12,
117
+ "valid": true
118
+ },
119
+ {
120
+ "description": "ignores floats",
121
+ "data": 13.7,
122
+ "valid": true
123
+ },
124
+ {
125
+ "description": "ignores objects",
126
+ "data": {},
127
+ "valid": true
128
+ },
129
+ {
130
+ "description": "ignores arrays",
131
+ "data": [],
132
+ "valid": true
133
+ },
134
+ {
135
+ "description": "ignores booleans",
136
+ "data": false,
137
+ "valid": true
138
+ },
139
+ {
140
+ "description": "ignores null",
141
+ "data": null,
142
+ "valid": true
143
+ }
144
+ ]
145
+ },
146
+ {
147
+ "description": "validation of date-time strings",
148
+ "schema": {"format": "date-time"},
149
+ "tests": [
150
+ {
151
+ "description": "ignores integers",
152
+ "data": 12,
153
+ "valid": true
154
+ },
155
+ {
156
+ "description": "ignores floats",
157
+ "data": 13.7,
158
+ "valid": true
159
+ },
160
+ {
161
+ "description": "ignores objects",
162
+ "data": {},
163
+ "valid": true
164
+ },
165
+ {
166
+ "description": "ignores arrays",
167
+ "data": [],
168
+ "valid": true
169
+ },
170
+ {
171
+ "description": "ignores booleans",
172
+ "data": false,
173
+ "valid": true
174
+ },
175
+ {
176
+ "description": "ignores null",
177
+ "data": null,
178
+ "valid": true
179
+ }
180
+ ]
181
+ },
182
+ {
183
+ "description": "validation of URIs",
184
+ "schema": {"format": "uri"},
185
+ "tests": [
186
+ {
187
+ "description": "ignores integers",
188
+ "data": 12,
189
+ "valid": true
190
+ },
191
+ {
192
+ "description": "ignores floats",
193
+ "data": 13.7,
194
+ "valid": true
195
+ },
196
+ {
197
+ "description": "ignores objects",
198
+ "data": {},
199
+ "valid": true
200
+ },
201
+ {
202
+ "description": "ignores arrays",
203
+ "data": [],
204
+ "valid": true
205
+ },
206
+ {
207
+ "description": "ignores booleans",
208
+ "data": false,
209
+ "valid": true
210
+ },
211
+ {
212
+ "description": "ignores null",
213
+ "data": null,
214
+ "valid": true
215
+ }
216
+ ]
217
+ }
218
+ ]
@@ -9,5 +9,205 @@
9
9
  "valid": false
10
10
  }
11
11
  ]
12
+ },
13
+ {
14
+ "description": "ECMA 262 regex $ does not match trailing newline",
15
+ "schema": {
16
+ "type": "string",
17
+ "pattern": "^abc$"
18
+ },
19
+ "tests": [
20
+ {
21
+ "description": "matches in Python, but should not in jsonschema",
22
+ "data": "abc\n",
23
+ "valid": false
24
+ },
25
+ {
26
+ "description": "should match",
27
+ "data": "abc",
28
+ "valid": true
29
+ }
30
+ ]
31
+ },
32
+ {
33
+ "description": "ECMA 262 regex converts \\a to ascii BEL",
34
+ "schema": {
35
+ "type": "string",
36
+ "pattern": "^\\a$"
37
+ },
38
+ "tests": [
39
+ {
40
+ "description": "does not match",
41
+ "data": "\\a",
42
+ "valid": false
43
+ },
44
+ {
45
+ "description": "matches",
46
+ "data": "\u0007",
47
+ "valid": true
48
+ }
49
+ ]
50
+ },
51
+ {
52
+ "description": "ECMA 262 regex escapes control codes with \\c and upper letter",
53
+ "schema": {
54
+ "type": "string",
55
+ "pattern": "^\\cC$"
56
+ },
57
+ "tests": [
58
+ {
59
+ "description": "does not match",
60
+ "data": "\\cC",
61
+ "valid": false
62
+ },
63
+ {
64
+ "description": "matches",
65
+ "data": "\u0003",
66
+ "valid": true
67
+ }
68
+ ]
69
+ },
70
+ {
71
+ "description": "ECMA 262 regex escapes control codes with \\c and lower letter",
72
+ "schema": {
73
+ "type": "string",
74
+ "pattern": "^\\cc$"
75
+ },
76
+ "tests": [
77
+ {
78
+ "description": "does not match",
79
+ "data": "\\cc",
80
+ "valid": false
81
+ },
82
+ {
83
+ "description": "matches",
84
+ "data": "\u0003",
85
+ "valid": true
86
+ }
87
+ ]
88
+ },
89
+ {
90
+ "description": "ECMA 262 \\d matches ascii digits only",
91
+ "schema": {
92
+ "type": "string",
93
+ "pattern": "^\\d$"
94
+ },
95
+ "tests": [
96
+ {
97
+ "description": "ASCII zero matches",
98
+ "data": "0",
99
+ "valid": true
100
+ },
101
+ {
102
+ "description": "NKO DIGIT ZERO does not match (unlike e.g. Python)",
103
+ "data": "߀",
104
+ "valid": false
105
+ },
106
+ {
107
+ "description": "NKO DIGIT ZERO (as \\u escape) does not match",
108
+ "data": "\u07c0",
109
+ "valid": false
110
+ }
111
+ ]
112
+ },
113
+ {
114
+ "description": "ECMA 262 \\D matches everything but ascii digits",
115
+ "schema": {
116
+ "type": "string",
117
+ "pattern": "^\\D$"
118
+ },
119
+ "tests": [
120
+ {
121
+ "description": "ASCII zero does not match",
122
+ "data": "0",
123
+ "valid": false
124
+ },
125
+ {
126
+ "description": "NKO DIGIT ZERO matches (unlike e.g. Python)",
127
+ "data": "߀",
128
+ "valid": true
129
+ },
130
+ {
131
+ "description": "NKO DIGIT ZERO (as \\u escape) matches",
132
+ "data": "\u07c0",
133
+ "valid": true
134
+ }
135
+ ]
136
+ },
137
+ {
138
+ "description": "ECMA 262 \\w matches ascii letters only",
139
+ "schema": {
140
+ "type": "string",
141
+ "pattern": "^\\w$"
142
+ },
143
+ "tests": [
144
+ {
145
+ "description": "ASCII 'a' matches",
146
+ "data": "a",
147
+ "valid": true
148
+ },
149
+ {
150
+ "description": "latin-1 e-acute does not match (unlike e.g. Python)",
151
+ "data": "é",
152
+ "valid": false
153
+ }
154
+ ]
155
+ },
156
+ {
157
+ "description": "ECMA 262 \\w matches everything but ascii letters",
158
+ "schema": {
159
+ "type": "string",
160
+ "pattern": "^\\W$"
161
+ },
162
+ "tests": [
163
+ {
164
+ "description": "ASCII 'a' does not match",
165
+ "data": "a",
166
+ "valid": false
167
+ },
168
+ {
169
+ "description": "latin-1 e-acute matches (unlike e.g. Python)",
170
+ "data": "é",
171
+ "valid": true
172
+ }
173
+ ]
174
+ },
175
+ {
176
+ "description": "ECMA 262 \\s matches ascii whitespace only",
177
+ "schema": {
178
+ "type": "string",
179
+ "pattern": "^\\s$"
180
+ },
181
+ "tests": [
182
+ {
183
+ "description": "ASCII space matches",
184
+ "data": " ",
185
+ "valid": true
186
+ },
187
+ {
188
+ "description": "latin-1 non-breaking-space does not match (unlike e.g. Python)",
189
+ "data": "\u00a0",
190
+ "valid": false
191
+ }
192
+ ]
193
+ },
194
+ {
195
+ "description": "ECMA 262 \\S matches everything but ascii whitespace",
196
+ "schema": {
197
+ "type": "string",
198
+ "pattern": "^\\S$"
199
+ },
200
+ "tests": [
201
+ {
202
+ "description": "ASCII space does not match",
203
+ "data": " ",
204
+ "valid": false
205
+ },
206
+ {
207
+ "description": "latin-1 non-breaking-space matches (unlike e.g. Python)",
208
+ "data": "\u00a0",
209
+ "valid": true
210
+ }
211
+ ]
12
212
  }
13
213
  ]
@@ -85,5 +85,89 @@
85
85
  "valid": false
86
86
  }
87
87
  ]
88
+ },
89
+ {
90
+ "description": "uniqueItems with an array of items",
91
+ "schema": {
92
+ "items": [{"type": "boolean"}, {"type": "boolean"}],
93
+ "uniqueItems": true
94
+ },
95
+ "tests": [
96
+ {
97
+ "description": "[false, true] from items array is valid",
98
+ "data": [false, true],
99
+ "valid": true
100
+ },
101
+ {
102
+ "description": "[true, false] from items array is valid",
103
+ "data": [true, false],
104
+ "valid": true
105
+ },
106
+ {
107
+ "description": "[false, false] from items array is not valid",
108
+ "data": [false, false],
109
+ "valid": false
110
+ },
111
+ {
112
+ "description": "[true, true] from items array is not valid",
113
+ "data": [true, true],
114
+ "valid": false
115
+ },
116
+ {
117
+ "description": "unique array extended from [false, true] is valid",
118
+ "data": [false, true, "foo", "bar"],
119
+ "valid": true
120
+ },
121
+ {
122
+ "description": "unique array extended from [true, false] is valid",
123
+ "data": [true, false, "foo", "bar"],
124
+ "valid": true
125
+ },
126
+ {
127
+ "description": "non-unique array extended from [false, true] is not valid",
128
+ "data": [false, true, "foo", "foo"],
129
+ "valid": false
130
+ },
131
+ {
132
+ "description": "non-unique array extended from [true, false] is not valid",
133
+ "data": [true, false, "foo", "foo"],
134
+ "valid": false
135
+ }
136
+ ]
137
+ },
138
+ {
139
+ "description": "uniqueItems with an array of items and additionalItems=false",
140
+ "schema": {
141
+ "items": [{"type": "boolean"}, {"type": "boolean"}],
142
+ "uniqueItems": true,
143
+ "additionalItems": false
144
+ },
145
+ "tests": [
146
+ {
147
+ "description": "[false, true] from items array is valid",
148
+ "data": [false, true],
149
+ "valid": true
150
+ },
151
+ {
152
+ "description": "[true, false] from items array is valid",
153
+ "data": [true, false],
154
+ "valid": true
155
+ },
156
+ {
157
+ "description": "[false, false] from items array is not valid",
158
+ "data": [false, false],
159
+ "valid": false
160
+ },
161
+ {
162
+ "description": "[true, true] from items array is not valid",
163
+ "data": [true, true],
164
+ "valid": false
165
+ },
166
+ {
167
+ "description": "extra items are invalid even if unique",
168
+ "data": [false, true, null],
169
+ "valid": false
170
+ }
171
+ ]
88
172
  }
89
173
  ]