json-schema 2.4.1 → 2.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (88) hide show
  1. checksums.yaml +6 -14
  2. data/README.textile +58 -7
  3. data/lib/json-schema.rb +3 -1
  4. data/lib/json-schema/attributes/additionalitems.rb +14 -11
  5. data/lib/json-schema/attributes/additionalproperties.rb +33 -43
  6. data/lib/json-schema/attributes/anyof.rb +4 -0
  7. data/lib/json-schema/attributes/dependencies.rb +31 -19
  8. data/lib/json-schema/attributes/disallow.rb +2 -3
  9. data/lib/json-schema/attributes/divisibleby.rb +11 -7
  10. data/lib/json-schema/attributes/enum.rb +14 -16
  11. data/lib/json-schema/attributes/format.rb +4 -7
  12. data/lib/json-schema/attributes/formats/date_time_v4.rb +5 -8
  13. data/lib/json-schema/attributes/formats/ip.rb +41 -0
  14. data/lib/json-schema/attributes/formats/uri.rb +10 -8
  15. data/lib/json-schema/attributes/items.rb +15 -16
  16. data/lib/json-schema/attributes/limit.rb +179 -0
  17. data/lib/json-schema/attributes/maxdecimal.rb +7 -6
  18. data/lib/json-schema/attributes/multipleof.rb +4 -11
  19. data/lib/json-schema/attributes/not.rb +1 -1
  20. data/lib/json-schema/attributes/oneof.rb +15 -6
  21. data/lib/json-schema/attributes/pattern.rb +7 -6
  22. data/lib/json-schema/attributes/patternproperties.rb +9 -12
  23. data/lib/json-schema/attributes/properties.rb +55 -39
  24. data/lib/json-schema/attributes/properties_optional.rb +13 -12
  25. data/lib/json-schema/attributes/ref.rb +4 -4
  26. data/lib/json-schema/attributes/required.rb +16 -13
  27. data/lib/json-schema/attributes/type.rb +13 -18
  28. data/lib/json-schema/attributes/type_v4.rb +11 -18
  29. data/lib/json-schema/attributes/uniqueitems.rb +5 -7
  30. data/lib/json-schema/schema.rb +8 -8
  31. data/lib/json-schema/schema/#validator.rb# +37 -0
  32. data/lib/json-schema/schema/reader.rb +113 -0
  33. data/lib/json-schema/util/uri.rb +16 -0
  34. data/lib/json-schema/validator.rb +123 -128
  35. data/lib/json-schema/validators/draft1.rb +1 -1
  36. data/lib/json-schema/validators/draft2.rb +1 -1
  37. data/lib/json-schema/validators/draft3.rb +1 -1
  38. data/lib/json-schema/validators/draft4.rb +1 -1
  39. data/lib/json-schema/validators/hyper-draft4.rb +1 -1
  40. data/test/schemas/address_microformat.json +18 -0
  41. data/test/schemas/definition_schema.json +15 -0
  42. data/test/schemas/ref john with spaces schema.json +11 -0
  43. data/test/schemas/relative_definition_schema.json +8 -0
  44. data/test/test_all_of_ref_schema.rb +12 -15
  45. data/test/test_any_of_ref_schema.rb +7 -9
  46. data/test/test_bad_schema_ref.rb +18 -12
  47. data/test/test_common_test_suite.rb +45 -29
  48. data/test/test_custom_format.rb +2 -3
  49. data/test/test_definition.rb +15 -0
  50. data/test/test_extended_schema.rb +25 -31
  51. data/test/test_extends_and_additionalProperties.rb +23 -21
  52. data/test/test_files_v3.rb +14 -23
  53. data/test/test_fragment_resolution.rb +6 -7
  54. data/test/test_fragment_validation_with_ref.rb +2 -8
  55. data/test/test_full_validation.rb +2 -3
  56. data/test/test_helper.rb +46 -1
  57. data/test/test_initialize_data.rb +118 -0
  58. data/test/test_jsonschema_draft1.rb +48 -600
  59. data/test/test_jsonschema_draft2.rb +48 -699
  60. data/test/test_jsonschema_draft3.rb +91 -861
  61. data/test/test_jsonschema_draft4.rb +173 -812
  62. data/test/test_list_option.rb +6 -7
  63. data/test/{test_merge_misisng_values.rb → test_merge_missing_values.rb} +2 -3
  64. data/test/test_minitems.rb +2 -4
  65. data/test/test_one_of.rb +9 -19
  66. data/test/test_ruby_schema.rb +5 -14
  67. data/test/test_schema_loader.rb +74 -0
  68. data/test/test_schema_type_attribute.rb +2 -3
  69. data/test/test_schema_validation.rb +4 -5
  70. data/test/test_stringify.rb +2 -3
  71. data/test/test_uri_related.rb +67 -0
  72. data/test/test_validator.rb +53 -0
  73. metadata +129 -51
  74. data/lib/json-schema/attributes/dependencies_v4.rb +0 -27
  75. data/lib/json-schema/attributes/formats/ip4.rb +0 -20
  76. data/lib/json-schema/attributes/formats/ip6.rb +0 -20
  77. data/lib/json-schema/attributes/maximum.rb +0 -17
  78. data/lib/json-schema/attributes/maximum_inclusive.rb +0 -17
  79. data/lib/json-schema/attributes/maxitems.rb +0 -14
  80. data/lib/json-schema/attributes/maxlength.rb +0 -16
  81. data/lib/json-schema/attributes/maxproperties.rb +0 -14
  82. data/lib/json-schema/attributes/minimum.rb +0 -17
  83. data/lib/json-schema/attributes/minimum_inclusive.rb +0 -17
  84. data/lib/json-schema/attributes/minitems.rb +0 -14
  85. data/lib/json-schema/attributes/minlength.rb +0 -16
  86. data/lib/json-schema/attributes/minproperties.rb +0 -14
  87. data/lib/json-schema/attributes/properties_v4.rb +0 -58
  88. data/lib/json-schema/uri/file.rb +0 -36
@@ -1,195 +1,37 @@
1
1
  # encoding: utf-8
2
- require 'test/unit'
3
- require File.dirname(__FILE__) + '/../lib/json-schema'
2
+ require File.expand_path('../test_helper', __FILE__)
4
3
 
5
- class JSONSchemaDraft4Test < Test::Unit::TestCase
6
- def test_types
7
- # Set up the default datatype
8
- schema = {
9
- "$schema" => "http://json-schema.org/draft-04/schema#",
10
- "properties" => {
11
- "a" => {}
12
- }
13
- }
14
- data = {
15
- "a" => nil
16
- }
17
-
18
- # Test integers
19
- schema["properties"]["a"]["type"] = "integer"
20
- data["a"] = 5
21
- assert(JSON::Validator.validate(schema,data))
22
-
23
- data["a"] = 5.2
24
- assert(!JSON::Validator.validate(schema,data))
25
-
26
- data['a'] = 'string'
27
- assert(!JSON::Validator.validate(schema,data))
28
-
29
- data['a'] = true
30
- assert(!JSON::Validator.validate(schema,data))
31
-
32
- assert(JSON::Validator.validate({"$schema" => "http://json-schema.org/draft-04/schema#",'type' => 'integer'}, 3))
33
- assert(!JSON::Validator.validate({"$schema" => "http://json-schema.org/draft-04/schema#",'type' => 'integer'}, "hello"))
34
-
35
- # Test numbers
36
- schema["properties"]["a"]["type"] = "number"
37
- data["a"] = 5
38
- assert(JSON::Validator.validate(schema,data))
39
-
40
- data["a"] = 5.2
41
- assert(JSON::Validator.validate(schema,data))
42
-
43
- data['a'] = 'string'
44
- assert(!JSON::Validator.validate(schema,data))
45
-
46
- data['a'] = true
47
- assert(!JSON::Validator.validate(schema,data))
48
-
49
- assert(JSON::Validator.validate({"$schema" => "http://json-schema.org/draft-04/schema#",'type' => 'number'}, 3))
50
- assert(JSON::Validator.validate({"$schema" => "http://json-schema.org/draft-04/schema#",'type' => 'number'}, 3.14159265358979))
51
- assert(!JSON::Validator.validate({"$schema" => "http://json-schema.org/draft-04/schema#",'type' => 'number'}, "hello"))
52
-
53
-
54
- # Test strings
55
- schema["properties"]["a"]["type"] = "string"
56
- data["a"] = 5
57
- assert(!JSON::Validator.validate(schema,data))
58
-
59
- data["a"] = 5.2
60
- assert(!JSON::Validator.validate(schema,data))
61
-
62
- data['a'] = 'string'
63
- assert(JSON::Validator.validate(schema,data))
64
-
65
- data['a'] = true
66
- assert(!JSON::Validator.validate(schema,data))
67
-
68
- assert(JSON::Validator.validate({"$schema" => "http://json-schema.org/draft-04/schema#",'type' => 'string'}, 'hello'))
69
- assert(!JSON::Validator.validate({"$schema" => "http://json-schema.org/draft-04/schema#",'type' => 'string'}, 3.14159265358979))
70
- assert(!JSON::Validator.validate({"$schema" => "http://json-schema.org/draft-04/schema#",'type' => 'string'}, []))
71
-
72
-
73
- # Test booleans
74
- schema["properties"]["a"]["type"] = "boolean"
75
- data["a"] = 5
76
- assert(!JSON::Validator.validate(schema,data))
77
-
78
- data["a"] = 5.2
79
- assert(!JSON::Validator.validate(schema,data))
80
-
81
- data['a'] = 'string'
82
- assert(!JSON::Validator.validate(schema,data))
83
-
84
- data['a'] = true
85
- assert(JSON::Validator.validate(schema,data))
86
-
87
- data['a'] = false
88
- assert(JSON::Validator.validate(schema,data))
89
-
90
- assert(JSON::Validator.validate({"$schema" => "http://json-schema.org/draft-04/schema#",'type' => 'boolean'}, true))
91
- assert(JSON::Validator.validate({"$schema" => "http://json-schema.org/draft-04/schema#",'type' => 'boolean'}, false))
92
- assert(!JSON::Validator.validate({"$schema" => "http://json-schema.org/draft-04/schema#",'type' => 'boolean'}, nil))
93
- assert(!JSON::Validator.validate({"$schema" => "http://json-schema.org/draft-04/schema#",'type' => 'boolean'}, 3))
94
- assert(!JSON::Validator.validate({"$schema" => "http://json-schema.org/draft-04/schema#",'type' => 'boolean'}, "hello"))
95
-
96
- # Test object
97
- schema["properties"]["a"]["type"] = "object"
98
- data["a"] = {}
99
- assert(JSON::Validator.validate(schema,data))
100
-
101
- data["a"] = 5.2
102
- assert(!JSON::Validator.validate(schema,data))
103
-
104
- data['a'] = 'string'
105
- assert(!JSON::Validator.validate(schema,data))
106
-
107
- data['a'] = true
108
- assert(!JSON::Validator.validate(schema,data))
109
-
110
- assert(JSON::Validator.validate({"$schema" => "http://json-schema.org/draft-04/schema#",'type' => 'object'}, {'a' => true}))
111
- assert(JSON::Validator.validate({"$schema" => "http://json-schema.org/draft-04/schema#",'type' => 'object'}, {}))
112
- assert(!JSON::Validator.validate({"$schema" => "http://json-schema.org/draft-04/schema#",'type' => 'object'}, []))
113
- assert(!JSON::Validator.validate({"$schema" => "http://json-schema.org/draft-04/schema#",'type' => 'object'}, 3))
114
- assert(!JSON::Validator.validate({"$schema" => "http://json-schema.org/draft-04/schema#",'type' => 'object'}, "hello"))
115
-
116
-
117
- # Test array
118
- schema["properties"]["a"]["type"] = "array"
119
- data["a"] = []
120
- assert(JSON::Validator.validate(schema,data))
121
-
122
- data["a"] = 5.2
123
- assert(!JSON::Validator.validate(schema,data))
124
-
125
- data['a'] = 'string'
126
- assert(!JSON::Validator.validate(schema,data))
127
-
128
- data['a'] = true
129
- assert(!JSON::Validator.validate(schema,data))
130
-
131
- assert(JSON::Validator.validate({"$schema" => "http://json-schema.org/draft-04/schema#",'type' => 'array'}, ['a']))
132
- assert(JSON::Validator.validate({"$schema" => "http://json-schema.org/draft-04/schema#",'type' => 'array'}, []))
133
- assert(!JSON::Validator.validate({"$schema" => "http://json-schema.org/draft-04/schema#",'type' => 'array'}, {}))
134
- assert(!JSON::Validator.validate({"$schema" => "http://json-schema.org/draft-04/schema#",'type' => 'array'}, 3))
135
- assert(!JSON::Validator.validate({"$schema" => "http://json-schema.org/draft-04/schema#",'type' => 'array'}, "hello"))
136
-
137
-
138
- # Test null
139
- schema["properties"]["a"]["type"] = "null"
140
- data["a"] = nil
141
- assert(JSON::Validator.validate(schema,data))
142
-
143
- data["a"] = 5.2
144
- assert(!JSON::Validator.validate(schema,data))
145
-
146
- data['a'] = 'string'
147
- assert(!JSON::Validator.validate(schema,data))
148
-
149
- data['a'] = true
150
- assert(!JSON::Validator.validate(schema,data))
151
-
152
- assert(JSON::Validator.validate({"$schema" => "http://json-schema.org/draft-04/schema#",'type' => 'null'}, nil))
153
- assert(!JSON::Validator.validate({"$schema" => "http://json-schema.org/draft-04/schema#",'type' => 'null'}, false))
154
- assert(!JSON::Validator.validate({"$schema" => "http://json-schema.org/draft-04/schema#",'type' => 'null'}, []))
155
- assert(!JSON::Validator.validate({"$schema" => "http://json-schema.org/draft-04/schema#",'type' => 'null'}, "hello"))
156
-
157
-
158
- # Test any
159
- schema["properties"]["a"]["type"] = "any"
160
- data["a"] = 5
161
- assert(JSON::Validator.validate(schema,data))
162
-
163
- data["a"] = 5.2
164
- assert(JSON::Validator.validate(schema,data))
4
+ class JSONSchemaDraft4Test < Minitest::Test
5
+ def schema_version
6
+ :draft4
7
+ end
165
8
 
166
- data['a'] = 'string'
167
- assert(JSON::Validator.validate(schema,data))
9
+ def exclusive_minimum
10
+ { 'exclusiveMinimum' => true }
11
+ end
168
12
 
169
- data['a'] = true
170
- assert(JSON::Validator.validate(schema,data))
13
+ def exclusive_maximum
14
+ { 'exclusiveMaximum' => true }
15
+ end
171
16
 
172
- assert(JSON::Validator.validate({"$schema" => "http://json-schema.org/draft-04/schema#",'type' => 'any'}, true))
173
- assert(JSON::Validator.validate({"$schema" => "http://json-schema.org/draft-04/schema#",'type' => 'any'}, nil))
174
- assert(JSON::Validator.validate({"$schema" => "http://json-schema.org/draft-04/schema#",'type' => 'any'}, {}))
175
- assert(JSON::Validator.validate({"$schema" => "http://json-schema.org/draft-04/schema#",'type' => 'any'}, 3))
176
- assert(JSON::Validator.validate({"$schema" => "http://json-schema.org/draft-04/schema#",'type' => 'any'}, "hello"))
17
+ def ipv4_format
18
+ 'ipv4'
19
+ end
177
20
 
21
+ include ArrayValidation::ItemsTests
22
+ include ArrayValidation::AdditionalItemsTests
23
+ include ArrayValidation::UniqueItemsTests
178
24
 
179
- # Test a union type
180
- schema["properties"]["a"]["type"] = ["integer","string"]
181
- data["a"] = 5
182
- assert(JSON::Validator.validate(schema,data))
25
+ include NumberValidation::MinMaxTests
26
+ include NumberValidation::MultipleOfTests
183
27
 
184
- data["a"] = 'boo'
185
- assert(JSON::Validator.validate(schema,data))
28
+ include ObjectValidation::AdditionalPropertiesTests
29
+ include ObjectValidation::PatternPropertiesTests
186
30
 
187
- data["a"] = false
188
- assert(!JSON::Validator.validate(schema,data))
31
+ include StringValidation::ValueTests
32
+ include StringValidation::FormatTests
189
33
 
190
- assert(JSON::Validator.validate({"$schema" => "http://json-schema.org/draft-04/schema#",'type' => ['string', 'null']}, "hello"))
191
- assert(!JSON::Validator.validate({"$schema" => "http://json-schema.org/draft-04/schema#",'type' => ['integer', 'object']}, "hello"))
192
- end
34
+ include TypeValidation::SimpleTypeTests
193
35
 
194
36
  def test_required
195
37
  # Set up the default datatype
@@ -202,9 +44,9 @@ class JSONSchemaDraft4Test < Test::Unit::TestCase
202
44
  }
203
45
  data = {}
204
46
 
205
- assert(!JSON::Validator.validate(schema,data))
47
+ refute_valid schema, data
206
48
  data['a'] = "Hello"
207
- assert(JSON::Validator.validate(schema,data))
49
+ assert_valid schema, data
208
50
 
209
51
  schema = {
210
52
  "$schema" => "http://json-schema.org/draft-04/schema#",
@@ -214,207 +56,30 @@ class JSONSchemaDraft4Test < Test::Unit::TestCase
214
56
  }
215
57
 
216
58
  data = {}
217
- assert(JSON::Validator.validate(schema,data))
218
-
219
- end
220
-
221
-
222
-
223
- def test_minimum
224
- # Set up the default datatype
225
- schema = {
226
- "$schema" => "http://json-schema.org/draft-04/schema#",
227
- "properties" => {
228
- "a" => {"minimum" => 5}
229
- }
230
- }
231
-
232
- data = {
233
- "a" => nil
234
- }
235
-
236
-
237
- # Test an integer
238
- data["a"] = 5
239
- assert(JSON::Validator.validate(schema,data))
240
-
241
- data["a"] = 4
242
- assert(!JSON::Validator.validate(schema,data))
243
-
244
- # Test a float
245
- data["a"] = 5.0
246
- assert(JSON::Validator.validate(schema,data))
247
-
248
- data["a"] = 4.9
249
- assert(!JSON::Validator.validate(schema,data))
250
-
251
- # Test a non-number
252
- data["a"] = "a string"
253
- assert(JSON::Validator.validate(schema,data))
254
-
255
- # Test exclusiveMinimum
256
- schema["properties"]["a"]["exclusiveMinimum"] = true
257
-
258
- data["a"] = 6
259
- assert(JSON::Validator.validate(schema,data))
260
-
261
- data["a"] = 5
262
- assert(!JSON::Validator.validate(schema,data))
263
-
264
- # Test with float
265
- data["a"] = 5.00000001
266
- assert(JSON::Validator.validate(schema,data))
267
-
268
- data["a"] = 5.0
269
- assert(!JSON::Validator.validate(schema,data))
270
- end
271
-
272
-
273
-
274
- def test_maximum
275
- # Set up the default datatype
276
- schema = {
277
- "$schema" => "http://json-schema.org/draft-04/schema#",
278
- "properties" => {
279
- "a" => {"maximum" => 5}
280
- }
281
- }
282
-
283
- data = {
284
- "a" => nil
285
- }
286
-
287
-
288
- # Test an integer
289
- data["a"] = 5
290
- assert(JSON::Validator.validate(schema,data))
291
-
292
- data["a"] = 6
293
- assert(!JSON::Validator.validate(schema,data))
294
-
295
- # Test a float
296
- data["a"] = 5.0
297
- assert(JSON::Validator.validate(schema,data))
298
-
299
- data["a"] = 5.1
300
- assert(!JSON::Validator.validate(schema,data))
301
-
302
- # Test a non-number
303
- data["a"] = "a string"
304
- assert(JSON::Validator.validate(schema,data))
305
-
306
- # Test exclusiveMinimum
307
- schema["properties"]["a"]["exclusiveMaximum"] = true
308
-
309
- data["a"] = 4
310
- assert(JSON::Validator.validate(schema,data))
311
-
312
- data["a"] = 5
313
- assert(!JSON::Validator.validate(schema,data))
314
-
315
- # Test with float
316
- data["a"] = 4.9999999
317
- assert(JSON::Validator.validate(schema,data))
318
-
319
- data["a"] = 5.0
320
- assert(!JSON::Validator.validate(schema,data))
321
- end
322
-
323
-
324
- def test_min_items
325
- # Set up the default datatype
326
- schema = {
327
- "$schema" => "http://json-schema.org/draft-04/schema#",
328
- "properties" => {
329
- "a" => {"minItems" => 1}
330
- }
331
- }
332
-
333
- data = {
334
- "a" => nil
335
- }
336
-
337
- # Test with an array
338
- data["a"] = ["boo"]
339
- assert(JSON::Validator.validate(schema,data))
340
-
341
- data["a"] = []
342
- assert(!JSON::Validator.validate(schema,data))
343
-
344
- # Test with a non-array
345
- data["a"] = "boo"
346
- assert(JSON::Validator.validate(schema,data))
59
+ assert_valid schema, data
347
60
  end
348
61
 
349
-
350
-
351
- def test_max_items
352
- # Set up the default datatype
353
- schema = {
354
- "$schema" => "http://json-schema.org/draft-04/schema#",
355
- "properties" => {
356
- "a" => {"maxItems" => 1}
357
- }
358
- }
359
-
360
- data = {
361
- "a" => nil
362
- }
363
-
364
- # Test with an array
365
- data["a"] = ["boo"]
366
- assert(JSON::Validator.validate(schema,data))
367
-
368
- data["a"] = ["boo","taco"]
369
- assert(!JSON::Validator.validate(schema,data))
370
-
371
- # Test with a non-array
372
- data["a"] = "boo"
373
- assert(JSON::Validator.validate(schema,data))
374
- end
375
-
376
-
377
62
  def test_min_properties
378
- # Set up the default datatype
379
- schema = {
380
- "$schema" => "http://json-schema.org/draft-04/schema#",
381
- "minProperties" => 2,
382
- "properties" => {
383
- }
384
- }
385
-
386
- data = {"a" => nil}
387
- assert(!JSON::Validator.validate(schema,data))
63
+ schema = { 'minProperties' => 2 }
388
64
 
389
- data = {"a" => nil, "b" => nil}
390
- assert(JSON::Validator.validate(schema,data))
65
+ assert_valid schema, {'a' => 1, 'b' => 2}
66
+ assert_valid schema, {'a' => 1, 'b' => 2, 'c' => 3}
391
67
 
392
- data = {"a" => nil, "b" => nil, "c" => nil}
393
- assert(JSON::Validator.validate(schema,data))
68
+ refute_valid schema, {'a' => 1}
69
+ refute_valid schema, {}
394
70
  end
395
71
 
396
-
397
-
398
72
  def test_max_properties
399
- # Set up the default datatype
400
- schema = {
401
- "$schema" => "http://json-schema.org/draft-04/schema#",
402
- "maxProperties" => 2,
403
- "properties" => {
404
- }
405
- }
73
+ schema = { 'maxProperties' => 2 }
406
74
 
407
- data = {"a" => nil}
408
- assert(JSON::Validator.validate(schema,data))
75
+ assert_valid schema, {'a' => 1, 'b' => 2}
76
+ assert_valid schema, {'a' => 1}
77
+ assert_valid schema, {}
409
78
 
410
- data = {"a" => nil, "b" => nil}
411
- assert(JSON::Validator.validate(schema,data))
412
-
413
- data = {"a" => nil, "b" => nil, "c" => nil}
414
- assert(!JSON::Validator.validate(schema,data))
79
+ refute_valid schema, {'a' => 1, 'b' => 2, 'c' => 3}
415
80
  end
416
81
 
417
- def test_strict_properties
82
+ def test_strict_properties
418
83
  schema = {
419
84
  "$schema" => "http://json-schema.org/draft-04/schema#",
420
85
  "properties" => {
@@ -494,156 +159,6 @@ class JSONSchemaDraft4Test < Test::Unit::TestCase
494
159
  assert(!JSON::Validator.validate(schema,data,:strict => true))
495
160
  end
496
161
 
497
- def test_unique_items
498
- # Set up the default datatype
499
- schema = {
500
- "$schema" => "http://json-schema.org/draft-04/schema#",
501
- "properties" => {
502
- "a" => {"uniqueItems" => true}
503
- }
504
- }
505
-
506
- data = {
507
- "a" => nil
508
- }
509
-
510
- # Test with nulls
511
- data["a"] = [nil,5]
512
- assert(JSON::Validator.validate(schema,data))
513
-
514
- data["a"] = [nil,nil]
515
- assert(!JSON::Validator.validate(schema,data))
516
-
517
- # Test with booleans
518
- data["a"] = [true,4]
519
- assert(JSON::Validator.validate(schema,data))
520
-
521
- data["a"] = [true,false]
522
- assert(JSON::Validator.validate(schema,data))
523
-
524
- data["a"] = [true,true]
525
- assert(!JSON::Validator.validate(schema,data))
526
-
527
- # Test with numbers
528
- data["a"] = [4,true]
529
- assert(JSON::Validator.validate(schema,data))
530
-
531
- data["a"] = [4,4.1]
532
- assert(JSON::Validator.validate(schema,data))
533
-
534
- data["a"] = [4,4]
535
- assert(!JSON::Validator.validate(schema,data))
536
-
537
- # Test with strings
538
- data["a"] = ['a',true]
539
- assert(JSON::Validator.validate(schema,data))
540
-
541
- data["a"] = ['a','ab']
542
- assert(JSON::Validator.validate(schema,data))
543
-
544
- data["a"] = ['a','a']
545
- assert(!JSON::Validator.validate(schema,data))
546
-
547
- # Test with arrays
548
- data["a"] = [[1],true]
549
- assert(JSON::Validator.validate(schema,data))
550
-
551
- data["a"] = [[1,2],[1,3]]
552
- assert(JSON::Validator.validate(schema,data))
553
-
554
- data["a"] = [[1,2,3],[1,2,3]]
555
- assert(!JSON::Validator.validate(schema,data))
556
-
557
- # Test with objects
558
- data["a"] = [{"a" => 1},true]
559
- assert(JSON::Validator.validate(schema,data))
560
-
561
- data["a"] = [{"a" => 1},{"a" => 2}]
562
- assert(JSON::Validator.validate(schema,data))
563
-
564
- data["a"] = [{"a" => 1, "b" => 2}, {"a" => 1, "b" => 2}]
565
- assert(!JSON::Validator.validate(schema,data))
566
- end
567
-
568
-
569
- def test_pattern
570
- # Set up the default datatype
571
- schema = {
572
- "$schema" => "http://json-schema.org/draft-04/schema#",
573
- "properties" => {
574
- "a" => {"pattern" => "\\d+ taco"}
575
- }
576
- }
577
-
578
- data = {
579
- "a" => nil
580
- }
581
-
582
- # Test strings
583
- data["a"] = "156 taco bell"
584
- assert(JSON::Validator.validate(schema,data))
585
-
586
- # Test a non-string
587
- data["a"] = 5
588
- assert(JSON::Validator.validate(schema,data))
589
-
590
- data["a"] = "taco"
591
- assert(!JSON::Validator.validate(schema,data))
592
- end
593
-
594
-
595
- def test_min_length
596
- # Set up the default datatype
597
- schema = {
598
- "$schema" => "http://json-schema.org/draft-04/schema#",
599
- "properties" => {
600
- "a" => {"minLength" => 1}
601
- }
602
- }
603
-
604
- data = {
605
- "a" => nil
606
- }
607
-
608
- # Try out strings
609
- data["a"] = "t"
610
- assert(JSON::Validator.validate(schema,data))
611
-
612
- data["a"] = ""
613
- assert(!JSON::Validator.validate(schema,data))
614
-
615
- # Try out non-string
616
- data["a"] = 5
617
- assert(JSON::Validator.validate(schema,data))
618
- end
619
-
620
-
621
- def test_max_length
622
- # Set up the default datatype
623
- schema = {
624
- "$schema" => "http://json-schema.org/draft-04/schema#",
625
- "properties" => {
626
- "a" => {"maxLength" => 1}
627
- }
628
- }
629
-
630
- data = {
631
- "a" => nil
632
- }
633
-
634
- # Try out strings
635
- data["a"] = "t"
636
- assert(JSON::Validator.validate(schema,data))
637
-
638
- data["a"] = "tt"
639
- assert(!JSON::Validator.validate(schema,data))
640
-
641
- # Try out non-string
642
- data["a"] = 5
643
- assert(JSON::Validator.validate(schema,data))
644
- end
645
-
646
-
647
162
  def test_enum
648
163
  # Set up the default datatype
649
164
  schema = {
@@ -659,24 +174,24 @@ class JSONSchemaDraft4Test < Test::Unit::TestCase
659
174
 
660
175
  # Make sure all of the above are valid...
661
176
  data["a"] = 1
662
- assert(JSON::Validator.validate(schema,data))
177
+ assert_valid schema, data
663
178
 
664
179
  data["a"] = 'boo'
665
- assert(JSON::Validator.validate(schema,data))
180
+ assert_valid schema, data
666
181
 
667
182
  data["a"] = [1,2,3]
668
- assert(JSON::Validator.validate(schema,data))
183
+ assert_valid schema, data
669
184
 
670
185
  data["a"] = {"a" => "b"}
671
- assert(JSON::Validator.validate(schema,data))
186
+ assert_valid schema, data
672
187
 
673
188
  # Test something that doesn't exist
674
189
  data["a"] = 'taco'
675
- assert(!JSON::Validator.validate(schema,data))
190
+ refute_valid schema, data
676
191
 
677
192
  # Try it without the key
678
193
  data = {}
679
- assert(JSON::Validator.validate(schema,data))
194
+ assert_valid schema, data
680
195
  end
681
196
 
682
197
  def test_enum_with_schema_validation
@@ -696,177 +211,115 @@ class JSONSchemaDraft4Test < Test::Unit::TestCase
696
211
  assert(JSON::Validator.validate(schema,data,:validate_schema => true))
697
212
  end
698
213
 
699
-
700
- def test_multiple_of
701
- # Set up the default datatype
214
+ def test_list_option
702
215
  schema = {
703
216
  "$schema" => "http://json-schema.org/draft-04/schema#",
704
- "properties" => {
705
- "a" => {"multipleOf" => 1.1}
706
- }
707
- }
708
-
709
- data = {
710
- "a" => nil
217
+ "type" => "object",
218
+ "required" => ["a"],
219
+ "properties" => { "a" => {"type" => "integer"} }
711
220
  }
712
221
 
713
- data["a"] = 3.3
714
- assert(JSON::Validator.validate(schema,data))
715
-
716
- data["a"] = 3.4
717
- assert(!JSON::Validator.validate(schema,data))
718
-
719
- schema["properties"]["a"]["multipleOf"] = 2.0
720
-
721
- data["a"] = 4.0
722
- assert(JSON::Validator.validate(schema,data))
222
+ data = [{"a" => 1},{"a" => 2},{"a" => 3}]
223
+ assert(JSON::Validator.validate(schema,data,:list => true))
224
+ refute_valid schema, data
723
225
 
724
- data["a"] = 'boo'
725
- assert(JSON::Validator.validate(schema,data))
226
+ data = {"a" => 1}
227
+ assert(!JSON::Validator.validate(schema,data,:list => true))
726
228
 
727
- data["a"] = 5
728
- schema["properties"]["a"]["multipleOf"] = 0
729
- assert(!JSON::Validator.validate(schema,data))
229
+ data = [{"a" => 1},{"b" => 2},{"a" => 3}]
230
+ assert(!JSON::Validator.validate(schema,data,:list => true))
730
231
  end
731
232
 
732
-
733
- def test_pattern_properties
734
- # Set up the default datatype
233
+ def test_default_with_strict_and_anyof
735
234
  schema = {
736
- "$schema" => "http://json-schema.org/draft-04/schema#",
737
- "patternProperties" => {
738
- "\\d+ taco" => {"type" => "integer"}
739
- }
235
+ "anyOf" => [
236
+ {
237
+ "type" => "object",
238
+ "properties" => {
239
+ "foo" => {
240
+ "enum" => ["view", "search"],
241
+ "default" => "view"
242
+ }
243
+ }
244
+ },
245
+ {
246
+ "type" => "object",
247
+ "properties" => {
248
+ "bar" => {
249
+ "type" => "string"
250
+ }
251
+ }
252
+ }
253
+ ]
740
254
  }
741
255
 
742
256
  data = {
743
- "a" => true,
744
- "1 taco" => 1,
745
- "20 tacos" => 20
257
+ "bar" => "baz"
746
258
  }
747
259
 
748
- assert(JSON::Validator.validate(schema,data))
749
- data["20 tacos"] = "string!"
750
- assert(!JSON::Validator.validate(schema,data))
260
+ assert(JSON::Validator.validate(schema, data, :insert_defaults => true, :strict => true))
751
261
  end
752
262
 
753
-
754
- def test_additional_properties
755
- # Test no additional properties allowed
756
- schema = {
757
- "$schema" => "http://json-schema.org/draft-04/schema#",
758
- "properties" => {
759
- "a" => { "type" => "integer" }
760
- },
761
- "additionalProperties" => false
762
- }
763
-
764
- data = {
765
- "a" => 10
766
- }
767
-
768
- assert(JSON::Validator.validate(schema,data))
769
- data["b"] = 5
770
- assert(!JSON::Validator.validate(schema,data))
771
-
772
- # Test additional properties match a schema
773
- schema["additionalProperties"] = { "type" => "string" }
774
- data["b"] = "taco"
775
- assert(JSON::Validator.validate(schema,data))
776
- data["b"] = 5
777
- assert(!JSON::Validator.validate(schema,data))
778
-
779
- # Make sure this works with pattern properties set, too
263
+ def test_default_with_anyof
780
264
  schema = {
781
- "$schema" => "http://json-schema.org/draft-04/schema#",
782
- "patternProperties" => {
783
- "\\d+ taco" => {"type" => "integer"}
784
- },
785
- "additionalProperties" => false
265
+ "anyOf" => [
266
+ {
267
+ "type" => "object",
268
+ "properties" => {
269
+ "foo" => {
270
+ "enum" => ["view", "search"],
271
+ "default" => "view"
272
+ }
273
+ }
274
+ },
275
+ {
276
+ "type" => "object",
277
+ "properties" => {
278
+ "bar" => {
279
+ "type" => "string"
280
+ }
281
+ }
282
+ }
283
+ ]
786
284
  }
787
285
 
788
- data = {
789
- "5 tacos" => 5,
790
- "20 tacos" => 20
791
- }
286
+ data = {}
792
287
 
793
- assert(JSON::Validator.validate(schema,data))
794
- data["b"] = 5
795
- assert(!JSON::Validator.validate(schema,data))
288
+ assert(JSON::Validator.validate(schema, data, :insert_defaults => true, :strict => true))
289
+ assert(data['foo'] == 'view')
796
290
  end
797
291
 
798
-
799
- def test_items
292
+ def test_default_with_strict_and_oneof
800
293
  schema = {
801
- "$schema" => "http://json-schema.org/draft-04/schema#",
802
- "items" => { "type" => "integer" }
803
- }
804
-
805
- data = [1,2,4]
806
- assert(JSON::Validator.validate(schema,data))
807
- data = [1,2,"string"]
808
- assert(!JSON::Validator.validate(schema,data))
809
-
810
- schema = {
811
- "$schema" => "http://json-schema.org/draft-04/schema#",
812
- "items" => [
813
- {"type" => "integer"},
814
- {"type" => "string"}
294
+ "oneOf" => [
295
+ {
296
+ "type" => "object",
297
+ "properties" => {
298
+ "bar" => {
299
+ "type" => "string"
300
+ }
301
+ }
302
+ },
303
+ {
304
+ "type" => "object",
305
+ "properties" => {
306
+ "foo" => {
307
+ "enum" => ["view", "search"],
308
+ "default" => "view"
309
+ }
310
+ }
311
+ }
815
312
  ]
816
313
  }
817
314
 
818
- data = [1,"string"]
819
- assert(JSON::Validator.validate(schema,data))
820
- data = [1,"string",3]
821
- assert(JSON::Validator.validate(schema,data))
822
- data = ["string",1]
823
- assert(!JSON::Validator.validate(schema,data))
824
-
825
- schema = {
826
- "$schema" => "http://json-schema.org/draft-04/schema#",
827
- "items" => [
828
- {"type" => "integer"},
829
- {"type" => "string"}
830
- ],
831
- "additionalItems" => false
832
- }
833
-
834
- data = [1,"string"]
835
- assert(JSON::Validator.validate(schema,data))
836
- data = [1,"string",3]
837
- assert(!JSON::Validator.validate(schema,data))
838
-
839
- schema = {"$schema" => "http://json-schema.org/draft-04/schema#","items" => [{"type" => "integer"},{"type" => "string"}],"additionalItems" => {"type" => "integer"}}
840
-
841
- data = [1,"string"]
842
- assert(JSON::Validator.validate(schema,data))
843
- data = [1,"string",3]
844
- assert(JSON::Validator.validate(schema,data))
845
- data = [1,"string","string"]
846
- assert(!JSON::Validator.validate(schema,data))
847
- end
848
-
849
-
850
- def test_list_option
851
- schema = {
852
- "$schema" => "http://json-schema.org/draft-04/schema#",
853
- "type" => "object",
854
- "required" => ["a"],
855
- "properties" => { "a" => {"type" => "integer"} }
315
+ data = {
316
+ "bar" => "baz"
856
317
  }
857
318
 
858
- data = [{"a" => 1},{"a" => 2},{"a" => 3}]
859
- assert(JSON::Validator.validate(schema,data,:list => true))
860
- assert(!JSON::Validator.validate(schema,data))
861
-
862
- data = {"a" => 1}
863
- assert(!JSON::Validator.validate(schema,data,:list => true))
864
-
865
- data = [{"a" => 1},{"b" => 2},{"a" => 3}]
866
- assert(!JSON::Validator.validate(schema,data,:list => true))
319
+ assert(JSON::Validator.validate(schema, data, :insert_defaults => true, :strict => true))
320
+ assert(!data.key?('foo'))
867
321
  end
868
322
 
869
-
870
323
  def test_self_reference
871
324
  schema = {
872
325
  "$schema" => "http://json-schema.org/draft-04/schema#",
@@ -874,62 +327,10 @@ class JSONSchemaDraft4Test < Test::Unit::TestCase
874
327
  "properties" => { "a" => {"type" => "integer"}, "b" => {"$ref" => "#"}}
875
328
  }
876
329
 
877
- data = {"a" => 5, "b" => {"b" => {"a" => 1}}}
878
- assert(JSON::Validator.validate(schema,data))
879
- data = {"a" => 5, "b" => {"b" => {"a" => 'taco'}}}
880
- assert(!JSON::Validator.validate(schema,data))
881
- end
882
-
883
-
884
- def test_format_ipv4
885
- schema = {
886
- "$schema" => "http://json-schema.org/draft-04/schema#",
887
- "type" => "object",
888
- "properties" => { "a" => {"type" => "string", "format" => "ipv4"}}
889
- }
890
-
891
- data = {"a" => "1.1.1.1"}
892
- assert(JSON::Validator.validate(schema,data))
893
- data = {"a" => "1.1.1"}
894
- assert(!JSON::Validator.validate(schema,data))
895
- data = {"a" => "1.1.1.300"}
896
- assert(!JSON::Validator.validate(schema,data))
897
- data = {"a" => 5}
898
- assert(!JSON::Validator.validate(schema,data))
899
- data = {"a" => "1.1.1"}
900
- assert(!JSON::Validator.validate(schema,data))
901
- data = {"a" => "1.1.1.1b"}
902
- assert(!JSON::Validator.validate(schema,data))
903
- data = {"a" => "b1.1.1.1"}
904
- end
905
-
906
-
907
- def test_format_ipv6
908
- schema = {
909
- "$schema" => "http://json-schema.org/draft-04/schema#",
910
- "type" => "object",
911
- "properties" => { "a" => {"type" => "string", "format" => "ipv6"}}
912
- }
913
-
914
- data = {"a" => "1111:2222:8888:9999:aaaa:cccc:eeee:ffff"}
915
- assert(JSON::Validator.validate(schema,data))
916
- data = {"a" => "1111:0:8888:0:0:0:eeee:ffff"}
917
- assert(JSON::Validator.validate(schema,data))
918
- data = {"a" => "1111:2222:8888::eeee:ffff"}
919
- assert(JSON::Validator.validate(schema,data))
920
- data = {"a" => "1111:2222:8888:99999:aaaa:cccc:eeee:ffff"}
921
- assert(!JSON::Validator.validate(schema,data))
922
- data = {"a" => "1111:2222:8888:9999:aaaa:cccc:eeee:gggg"}
923
- assert(!JSON::Validator.validate(schema,data))
924
- data = {"a" => "1111:2222::9999::cccc:eeee:ffff"}
925
- assert(!JSON::Validator.validate(schema,data))
926
- data = {"a" => "1111:2222:8888:9999:aaaa:cccc:eeee:ffff:bbbb"}
927
- assert(!JSON::Validator.validate(schema,data))
928
- assert(JSON::Validator.validate(schema, {"a" => "::1"}), 'validate with shortcut')
929
- assert(!JSON::Validator.validate(schema, {"a" => "42"}), 'not validate a simple number')
330
+ assert_valid schema, {"a" => 5, "b" => {"b" => {"a" => 1}}}
331
+ refute_valid schema, {"a" => 5, "b" => {"b" => {"a" => 'taco'}}}
930
332
  end
931
333
 
932
-
933
334
  def test_format_datetime
934
335
  schema = {
935
336
  "$schema" => "http://json-schema.org/draft-04/schema#",
@@ -937,30 +338,18 @@ class JSONSchemaDraft4Test < Test::Unit::TestCase
937
338
  "properties" => { "a" => {"type" => "string", "format" => "date-time"}}
938
339
  }
939
340
 
940
- data = {"a" => "2010-01-01T12:00:00Z"}
941
- assert(JSON::Validator.validate(schema,data))
942
- data = {"a" => "2010-01-01T12:00:00.1Z"}
943
- assert(JSON::Validator.validate(schema,data))
944
- data = {"a" => "2010-01-01T12:00:00,1Z"}
945
- assert(!JSON::Validator.validate(schema,data))
946
- data = {"a" => "2010-01-01T12:00:00+0000"}
947
- assert(!JSON::Validator.validate(schema,data))
948
- data = {"a" => "2010-01-01T12:00:00+00:00"}
949
- assert(JSON::Validator.validate(schema,data))
950
- data = {"a" => "2010-01-32T12:00:00Z"}
951
- assert(!JSON::Validator.validate(schema,data))
952
- data = {"a" => "2010-13-01T12:00:00Z"}
953
- assert(!JSON::Validator.validate(schema,data))
954
- data = {"a" => "2010-01-01T24:00:00Z"}
955
- assert(JSON::Validator.validate(schema,data))
956
- data = {"a" => "2010-01-01T12:60:00Z"}
957
- assert(!JSON::Validator.validate(schema,data))
958
- data = {"a" => "2010-01-01T12:00:60Z"}
959
- assert(JSON::Validator.validate(schema,data))
960
- data = {"a" => "2010-01-01T12:00:00z"}
961
- assert(JSON::Validator.validate(schema,data))
962
- data = {"a" => "2010-01-0112:00:00Z"}
963
- assert(!JSON::Validator.validate(schema,data))
341
+ assert_valid schema, {"a" => "2010-01-01T12:00:00Z"}
342
+ assert_valid schema, {"a" => "2010-01-01T12:00:00.1Z"}
343
+ refute_valid schema, {"a" => "2010-01-01T12:00:00,1Z"}
344
+ refute_valid schema, {"a" => "2010-01-01T12:00:00+0000"}
345
+ assert_valid schema, {"a" => "2010-01-01T12:00:00+00:00"}
346
+ refute_valid schema, {"a" => "2010-01-32T12:00:00Z"}
347
+ refute_valid schema, {"a" => "2010-13-01T12:00:00Z"}
348
+ assert_valid schema, {"a" => "2010-01-01T24:00:00Z"}
349
+ refute_valid schema, {"a" => "2010-01-01T12:60:00Z"}
350
+ assert_valid schema, {"a" => "2010-01-01T12:00:60Z"}
351
+ assert_valid schema, {"a" => "2010-01-01T12:00:00z"}
352
+ refute_valid schema, {"a" => "2010-01-0112:00:00Z"}
964
353
  end
965
354
 
966
355
  def test_format_uri
@@ -969,9 +358,9 @@ class JSONSchemaDraft4Test < Test::Unit::TestCase
969
358
  data3 = {"a" => "http://ja.wikipedia.org/wiki/メインページ"}
970
359
 
971
360
  schema = {
972
- "$schema" => "http://json-schema.org/draft-04/schema#",
973
- "type" => "object",
974
- "properties" => { "a" => {"type" => "string", "format" => "uri"}}
361
+ "$schema" => "http://json-schema.org/draft-04/schema#",
362
+ "type" => "object",
363
+ "properties" => { "a" => {"type" => "string", "format" => "uri"}}
975
364
  }
976
365
 
977
366
  assert(JSON::Validator.validate(schema,data1))
@@ -979,34 +368,6 @@ class JSONSchemaDraft4Test < Test::Unit::TestCase
979
368
  assert(JSON::Validator.validate(schema,data3))
980
369
  end
981
370
 
982
- def test_format_unknown
983
- schema = {
984
- "type" => "object",
985
- "properties" => { "a" => {"type" => "string", "format" => "unknown"}}
986
- }
987
-
988
- data = {"a" => "I can write what I want here"}
989
- assert(JSON::Validator.validate(schema,data,:version => :draft4))
990
- data = {"a" => ""}
991
- assert(JSON::Validator.validate(schema,data,:version => :draft4))
992
- end
993
-
994
-
995
- def test_format_union
996
- data1 = {"a" => "boo"}
997
- data2 = {"a" => nil}
998
-
999
- schema = {
1000
- "$schema" => "http://json-schema.org/draft-04/schema#",
1001
- "type" => "object",
1002
- "properties" => { "a" => {"type" => ["string","null"], "format" => "ipv4"}}
1003
- }
1004
- assert(!JSON::Validator.validate(schema,data1))
1005
- assert(JSON::Validator.validate(schema,data2))
1006
- end
1007
-
1008
-
1009
-
1010
371
  def test_schema
1011
372
  schema = {
1012
373
  "$schema" => "http://json-schema.org/THIS-IS-NOT-A-SCHEMA",
@@ -1020,7 +381,7 @@ class JSONSchemaDraft4Test < Test::Unit::TestCase
1020
381
  "$schema" => "http://json-schema.org/draft-04/schema#",
1021
382
  "type" => "object"
1022
383
  }
1023
- assert(JSON::Validator.validate(schema,data))
384
+ assert_valid schema, data
1024
385
  end
1025
386
 
1026
387
  def test_dependency
@@ -1037,9 +398,9 @@ class JSONSchemaDraft4Test < Test::Unit::TestCase
1037
398
  }
1038
399
 
1039
400
  data = {"a" => 1, "b" => 2}
1040
- assert(JSON::Validator.validate(schema,data))
401
+ assert_valid schema, data
1041
402
  data = {"a" => 1}
1042
- assert(!JSON::Validator.validate(schema,data))
403
+ refute_valid schema, data
1043
404
 
1044
405
  schema = {
1045
406
  "$schema" => "http://json-schema.org/draft-04/schema#",
@@ -1055,9 +416,9 @@ class JSONSchemaDraft4Test < Test::Unit::TestCase
1055
416
  }
1056
417
 
1057
418
  data = {"a" => 1, "c" => 2}
1058
- assert(!JSON::Validator.validate(schema,data))
419
+ refute_valid schema, data
1059
420
  data = {"a" => 1, "b" => 2, "c" => 3}
1060
- assert(JSON::Validator.validate(schema,data))
421
+ assert_valid schema, data
1061
422
  end
1062
423
 
1063
424
  def test_schema_dependency
@@ -1097,7 +458,7 @@ class JSONSchemaDraft4Test < Test::Unit::TestCase
1097
458
  }
1098
459
 
1099
460
  data = {:b => 2}
1100
- assert(JSON::Validator.validate(schema,data))
461
+ assert_valid schema, data
1101
462
  assert_nil(data["a"])
1102
463
  assert(JSON::Validator.validate(schema,data, :insert_defaults => true))
1103
464
  assert_equal(42, data["a"])
@@ -1114,7 +475,7 @@ class JSONSchemaDraft4Test < Test::Unit::TestCase
1114
475
  }
1115
476
 
1116
477
  data = {:b => 2}
1117
- assert(!JSON::Validator.validate(schema,data))
478
+ refute_valid schema, data
1118
479
  assert_nil(data["a"])
1119
480
  assert(JSON::Validator.validate(schema,data, :insert_defaults => true))
1120
481
  assert_equal(42, data["a"])
@@ -1131,7 +492,7 @@ class JSONSchemaDraft4Test < Test::Unit::TestCase
1131
492
  }
1132
493
 
1133
494
  data = {:b => 2}
1134
- assert(!JSON::Validator.validate(schema,data))
495
+ refute_valid schema, data
1135
496
  assert_nil(data["a"])
1136
497
  assert(!JSON::Validator.validate(schema,data, :insert_defaults => true))
1137
498
  assert_nil(data["a"])
@@ -1147,7 +508,7 @@ class JSONSchemaDraft4Test < Test::Unit::TestCase
1147
508
  }
1148
509
 
1149
510
  data = {:b => 2}
1150
- assert(JSON::Validator.validate(schema,data))
511
+ assert_valid schema, data
1151
512
  assert_nil(data["a"])
1152
513
  assert(!JSON::Validator.validate(schema,data, :insert_defaults => true))
1153
514
  assert_equal("42",data["a"])
@@ -1171,16 +532,16 @@ class JSONSchemaDraft4Test < Test::Unit::TestCase
1171
532
  }
1172
533
 
1173
534
  data = {"a" => "hello", "b" => 5}
1174
- assert(JSON::Validator.validate(schema,data))
535
+ assert_valid schema, data
1175
536
 
1176
537
  data = {"a" => "hello"}
1177
- assert(JSON::Validator.validate(schema,data))
538
+ assert_valid schema, data
1178
539
 
1179
540
  data = {"a" => "hello", "b" => "taco"}
1180
- assert(!JSON::Validator.validate(schema,data))
541
+ refute_valid schema, data
1181
542
 
1182
543
  data = {"b" => 5}
1183
- assert(!JSON::Validator.validate(schema,data))
544
+ refute_valid schema, data
1184
545
  end
1185
546
 
1186
547
 
@@ -1199,19 +560,19 @@ class JSONSchemaDraft4Test < Test::Unit::TestCase
1199
560
  }
1200
561
 
1201
562
  data = {"a" => "hello", "b" => 5}
1202
- assert(JSON::Validator.validate(schema,data))
563
+ assert_valid schema, data
1203
564
 
1204
565
  data = {"a" => "hello"}
1205
- assert(JSON::Validator.validate(schema,data))
566
+ assert_valid schema, data
1206
567
 
1207
568
  data = {"a" => "hello", "b" => "taco"}
1208
- assert(JSON::Validator.validate(schema,data))
569
+ assert_valid schema, data
1209
570
 
1210
571
  data = {"b" => 5}
1211
- assert(JSON::Validator.validate(schema,data))
572
+ assert_valid schema, data
1212
573
 
1213
574
  data = {"a" => 5, "b" => "taco"}
1214
- assert(!JSON::Validator.validate(schema,data))
575
+ refute_valid schema, data
1215
576
  end
1216
577
 
1217
578
 
@@ -1230,20 +591,20 @@ class JSONSchemaDraft4Test < Test::Unit::TestCase
1230
591
  }
1231
592
 
1232
593
  data = {"a" => "hello", "b" => 5}
1233
- assert(!JSON::Validator.validate(schema,data))
594
+ refute_valid schema, data
1234
595
 
1235
596
  # This passes because b is not required, thus matches both schemas
1236
597
  data = {"a" => "hello"}
1237
- assert(!JSON::Validator.validate(schema,data))
598
+ refute_valid schema, data
1238
599
 
1239
600
  data = {"a" => "hello", "b" => "taco"}
1240
- assert(JSON::Validator.validate(schema,data))
601
+ assert_valid schema, data
1241
602
 
1242
603
  data = {"b" => 5}
1243
- assert(JSON::Validator.validate(schema,data))
604
+ assert_valid schema, data
1244
605
 
1245
606
  data = {"a" => 5, "b" => "taco"}
1246
- assert(!JSON::Validator.validate(schema,data))
607
+ refute_valid schema, data
1247
608
  end
1248
609
 
1249
610
 
@@ -1257,13 +618,13 @@ class JSONSchemaDraft4Test < Test::Unit::TestCase
1257
618
  }
1258
619
 
1259
620
  data = {"a" => 1}
1260
- assert(JSON::Validator.validate(schema,data))
621
+ assert_valid schema, data
1261
622
 
1262
623
  data = {"a" => "hi!"}
1263
- assert(!JSON::Validator.validate(schema,data))
624
+ refute_valid schema, data
1264
625
 
1265
626
  data = {"a" => true}
1266
- assert(!JSON::Validator.validate(schema,data))
627
+ refute_valid schema, data
1267
628
 
1268
629
  # Sub-schema not
1269
630
  schema = {
@@ -1285,19 +646,19 @@ class JSONSchemaDraft4Test < Test::Unit::TestCase
1285
646
  }
1286
647
 
1287
648
  data = {"a" => 1}
1288
- assert(JSON::Validator.validate(schema,data))
649
+ assert_valid schema, data
1289
650
 
1290
651
  data = {"a" => "hi!"}
1291
- assert(!JSON::Validator.validate(schema,data))
652
+ refute_valid schema, data
1292
653
 
1293
654
  data = {"a" => true}
1294
- assert(!JSON::Validator.validate(schema,data))
655
+ refute_valid schema, data
1295
656
 
1296
657
  data = {"a" => {"b" => true}}
1297
- assert(!JSON::Validator.validate(schema,data))
658
+ refute_valid schema, data
1298
659
 
1299
660
  data = {"a" => {"b" => 5}}
1300
- assert(JSON::Validator.validate(schema,data))
661
+ assert_valid schema, data
1301
662
  end
1302
663
 
1303
664
  def test_not_fully_validate
@@ -1333,10 +694,10 @@ class JSONSchemaDraft4Test < Test::Unit::TestCase
1333
694
  }
1334
695
 
1335
696
  data = [1,2,3]
1336
- assert(JSON::Validator.validate(schema,data))
697
+ assert_valid schema, data
1337
698
 
1338
699
  data = [-1,2,3]
1339
- assert(!JSON::Validator.validate(schema,data))
700
+ refute_valid schema, data
1340
701
  end
1341
702
  end
1342
703