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 closing Z after time-zone offset",
38 "data": "1963-06-19T08:30:06.28123+01:00Z",
39 "valid": false
40 },
41 {
42 "description": "an invalid date-time string",
43 "data": "06/19/1963 08:30:06 PST",
44 "valid": false
45 },
46 {
47 "description": "case-insensitive T and Z",
48 "data": "1963-06-19t08:30:06.283185z",
49 "valid": true
50 },
51 {
52 "description": "only RFC3339 not all of ISO 8601 are valid",
53 "data": "2013-350T01:01:01",
54 "valid": false
55 }
56 ]
57 },
58 {
59 "description": "validation of URIs",
60 "schema": {"format": "uri"},
61 "tests": [
62 {
63 "description": "a valid URL with anchor tag",
64 "data": "http://foo.bar/?baz=qux#quux",
65 "valid": true
66 },
67 {
68 "description": "a valid URL with anchor tag and parantheses",
69 "data": "http://foo.com/blah_(wikipedia)_blah#cite-1",
70 "valid": true
71 },
72 {
73 "description": "a valid URL with URL-encoded stuff",
74 "data": "http://foo.bar/?q=Test%20URL-encoded%20stuff",
75 "valid": true
76 },
77 {
78 "description": "a valid puny-coded URL ",
79 "data": "http://xn--nw2a.xn--j6w193g/",
80 "valid": true
81 },
82 {
83 "description": "a valid URL with many special characters",
84 "data": "http://-.~_!$&'()*+,;=:%40:80%2f::::::@example.com",
85 "valid": true
86 },
87 {
88 "description": "a valid URL based on IPv4",
89 "data": "http://223.255.255.254",
90 "valid": true
91 },
92 {
93 "description": "a valid URL with ftp scheme",
94 "data": "ftp://ftp.is.co.za/rfc/rfc1808.txt",
95 "valid": true
96 },
97 {
98 "description": "a valid URL for a simple text file",
99 "data": "http://www.ietf.org/rfc/rfc2396.txt",
100 "valid": true
101 },
102 {
103 "description": "a valid URL ",
104 "data": "ldap://[2001:db8::7]/c=GB?objectClass?one",
105 "valid": true
106 },
107 {
108 "description": "a valid mailto URI",
109 "data": "mailto:John.Doe@example.com",
110 "valid": true
111 },
112 {
113 "description": "a valid newsgroup URI",
114 "data": "news:comp.infosystems.www.servers.unix",
115 "valid": true
116 },
117 {
118 "description": "a valid tel URI",
119 "data": "tel:+1-816-555-1212",
120 "valid": true
121 },
122 {
123 "description": "a valid URN",
124 "data": "urn:oasis:names:specification:docbook:dtd:xml:4.1.2",
125 "valid": true
126 },
127 {
128 "description": "an invalid protocol-relative URI Reference",
129 "data": "//foo.bar/?baz=qux#quux",
130 "valid": false
131 },
132 {
133 "description": "an invalid relative URI Reference",
134 "data": "/abc",
135 "valid": false
136 },
137 {
138 "description": "an invalid URI",
139 "data": "\\\\WINDOWS\\fileshare",
140 "valid": false
141 },
142 {
143 "description": "an invalid URI though valid URI reference",
144 "data": "abc",
145 "valid": false
146 },
147 {
148 "description": "an invalid URI with spaces",
149 "data": "http:// shouldfail.com",
150 "valid": false
151 },
152 {
153 "description": "an invalid URI with spaces and missing scheme",
154 "data": ":// should fail",
155 "valid": false
156 }
157 ]
158 },
159 {
160 "description": "validation of URI References",
161 "schema": {"format": "uri-reference"},
162 "tests": [
163 {
164 "description": "a valid URI",
165 "data": "http://foo.bar/?baz=qux#quux",
166 "valid": true
167 },
168 {
169 "description": "a valid protocol-relative URI Reference",
170 "data": "//foo.bar/?baz=qux#quux",
171 "valid": true
172 },
173 {
174 "description": "a valid relative URI Reference",
175 "data": "/abc",
176 "valid": true
177 },
178 {
179 "description": "an invalid URI Reference",
180 "data": "\\\\WINDOWS\\fileshare",
181 "valid": false
182 },
183 {
184 "description": "a valid URI Reference",
185 "data": "abc",
186 "valid": true
187 },
188 {
189 "description": "a valid URI fragment",
190 "data": "#fragment",
191 "valid": true
192 },
193 {
194 "description": "an invalid URI fragment",
195 "data": "#frag\\ment",
196 "valid": false
197 }
198 ]
199 },
200 {
201 "description": "format: uri-template",
202 "schema": {"format": "uri-template"},
203 "tests": [
204 {
205 "description": "a valid uri-template",
206 "data": "http://example.com/dictionary/{term:1}/{term}",
207 "valid": true
208 },
209 {
210 "description": "an invalid uri-template",
211 "data": "http://example.com/dictionary/{term:1}/{term",
212 "valid": false
213 },
214 {
215 "description": "a valid uri-template without variables",
216 "data": "http://example.com/dictionary",
217 "valid": true
218 },
219 {
220 "description": "a valid relative uri-template",
221 "data": "dictionary/{term:1}/{term}",
222 "valid": true
223 }
224 ]
225 },
226 {
227 "description": "validation of e-mail addresses",
228 "schema": {"format": "email"},
229 "tests": [
230 {
231 "description": "a valid e-mail address",
232 "data": "joe.bloggs@example.com",
233 "valid": true
234 },
235 {
236 "description": "an invalid e-mail address",
237 "data": "2962",
238 "valid": false
239 }
240 ]
241 },
242 {
243 "description": "validation of IP addresses",
244 "schema": {"format": "ipv4"},
245 "tests": [
246 {
247 "description": "a valid IP address",
248 "data": "192.168.0.1",
249 "valid": true
250 },
251 {
252 "description": "an IP address with too many components",
253 "data": "127.0.0.0.1",
254 "valid": false
255 },
256 {
257 "description": "an IP address with out-of-range values",
258 "data": "256.256.256.256",
259 "valid": false
260 },
261 {
262 "description": "an IP address without 4 components",
263 "data": "127.0",
264 "valid": false
265 },
266 {
267 "description": "an IP address as an integer",
268 "data": "0x7f000001",
269 "valid": false
270 }
271 ]
272 },
273 {
274 "description": "validation of IPv6 addresses",
275 "schema": {"format": "ipv6"},
276 "tests": [
277 {
278 "description": "a valid IPv6 address",
279 "data": "::1",
280 "valid": true
281 },
282 {
283 "description": "an IPv6 address with out-of-range values",
284 "data": "12345::",
285 "valid": false
286 },
287 {
288 "description": "an IPv6 address with too many components",
289 "data": "1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1",
290 "valid": false
291 },
292 {
293 "description": "an IPv6 address containing illegal characters",
294 "data": "::laptop",
295 "valid": false
296 }
297 ]
298 },
299 {
300 "description": "validation of host names",
301 "schema": {"format": "hostname"},
302 "tests": [
303 {
304 "description": "a valid host name",
305 "data": "www.example.com",
306 "valid": true
307 },
308 {
309 "description": "a host name starting with an illegal character",
310 "data": "-a-host-name-that-starts-with--",
311 "valid": false
312 },
313 {
314 "description": "a host name containing illegal characters",
315 "data": "not_a_valid_host_name",
316 "valid": false
317 },
318 {
319 "description": "a host name with a component too long",
320 "data": "a-vvvvvvvvvvvvvvvveeeeeeeeeeeeeeeerrrrrrrrrrrrrrrryyyyyyyyyyyyyyyy-long-host-name-component",
321 "valid": false
322 }
323 ]
324 },
325 {
326 "description": "validation of JSON-pointers (JSON String Representation)",
327 "schema": {"format": "json-pointer"},
328 "tests": [
329 {
330 "description": "a valid JSON-pointer",
331 "data": "/foo/bar~0/baz~1/%a",
332 "valid": true
333 },
334 {
335 "description": "not a valid JSON-pointer (~ not escaped)",
336 "data": "/foo/bar~",
337 "valid": false
338 },
339 {
340 "description": "valid JSON-pointer with empty segment",
341 "data": "/foo//bar",
342 "valid": true
343 },
344 {
345 "description": "valid JSON-pointer with the last empty segment",
346 "data": "/foo/bar/",
347 "valid": true
348 },
349 {
350 "description": "valid JSON-pointer as stated in RFC 6901 #1",
351 "data": "",
352 "valid": true
353 },
354 {
355 "description": "valid JSON-pointer as stated in RFC 6901 #2",
356 "data": "/foo",
357 "valid": true
358 },
359 {
360 "description": "valid JSON-pointer as stated in RFC 6901 #3",
361 "data": "/foo/0",
362 "valid": true
363 },
364 {
365 "description": "valid JSON-pointer as stated in RFC 6901 #4",
366 "data": "/",
367 "valid": true
368 },
369 {
370 "description": "valid JSON-pointer as stated in RFC 6901 #5",
371 "data": "/a~1b",
372 "valid": true
373 },
374 {
375 "description": "valid JSON-pointer as stated in RFC 6901 #6",
376 "data": "/c%d",
377 "valid": true
378 },
379 {
380 "description": "valid JSON-pointer as stated in RFC 6901 #7",
381 "data": "/e^f",
382 "valid": true
383 },
384 {
385 "description": "valid JSON-pointer as stated in RFC 6901 #8",
386 "data": "/g|h",
387 "valid": true
388 },
389 {
390 "description": "valid JSON-pointer as stated in RFC 6901 #9",
391 "data": "/i\\j",
392 "valid": true
393 },
394 {
395 "description": "valid JSON-pointer as stated in RFC 6901 #10",
396 "data": "/k\"l",
397 "valid": true
398 },
399 {
400 "description": "valid JSON-pointer as stated in RFC 6901 #11",
401 "data": "/ ",
402 "valid": true
403 },
404 {
405 "description": "valid JSON-pointer as stated in RFC 6901 #12",
406 "data": "/m~0n",
407 "valid": true
408 },
409 {
410 "description": "valid JSON-pointer used adding to the last array position",
411 "data": "/foo/-",
412 "valid": true
413 },
414 {
415 "description": "valid JSON-pointer (- used as object member name)",
416 "data": "/foo/-/bar",
417 "valid": true
418 },
419 {
420 "description": "valid JSON-pointer (multiple escaped characters)",
421 "data": "/~1~0~0~1~1",
422 "valid": true
423 },
424 {
425 "description": "valid JSON-pointer (escaped with fraction part) #1",
426 "data": "/~1.1",
427 "valid": true
428 },
429 {
430 "description": "valid JSON-pointer (escaped with fraction part) #2",
431 "data": "/~0.1",
432 "valid": true
433 },
434 {
435 "description": "not a valid JSON-pointer (URI Fragment Identifier) #1",
436 "data": "#",
437 "valid": false
438 },
439 {
440 "description": "not a valid JSON-pointer (URI Fragment Identifier) #2",
441 "data": "#/",
442 "valid": false
443 },
444 {
445 "description": "not a valid JSON-pointer (URI Fragment Identifier) #3",
446 "data": "#a",
447 "valid": false
448 },
449 {
450 "description": "not a valid JSON-pointer (some escaped, but not all) #1",
451 "data": "/~0~",
452 "valid": false
453 },
454 {
455 "description": "not a valid JSON-pointer (some escaped, but not all) #2",
456 "data": "/~0/~",
457 "valid": false
458 },
459 {
460 "description": "not a valid JSON-pointer (wrong escape character) #1",
461 "data": "/~2",
462 "valid": false
463 },
464 {
465 "description": "not a valid JSON-pointer (wrong escape character) #2",
466 "data": "/~-1",
467 "valid": false
468 },
469 {
470 "description": "not a valid JSON-pointer (multiple characters not escaped)",
471 "data": "/~~",
472 "valid": false
473 },
474 {
475 "description": "not a valid JSON-pointer (isn't empty nor starts with /) #1",
476 "data": "a",
477 "valid": false
478 },
479 {
480 "description": "not a valid JSON-pointer (isn't empty nor starts with /) #2",
481 "data": "0",
482 "valid": false
483 },
484 {
485 "description": "not a valid JSON-pointer (isn't empty nor starts with /) #3",
486 "data": "a/a",
487 "valid": false
488 }
489 ]
490 }
491]
View as plain text