voxpupuli / json-schema

Ruby JSON Schema Validator
MIT License
1.52k stars 242 forks source link

Date format is broken on ruby 2.0 #397

Open djdavis2 opened 6 years ago

djdavis2 commented 6 years ago

With draft4 schemas we validate dates using ruby's DateTime.rfc3339 method. Defining the type as ["string", "null"] and the format as "date-time" fails when response contains null.

JSON::Schema::ValidationError: The property '#/data/items/0/dateValue' Invalid date C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/json-schema-2.8.0/lib/json-schema/attribute.rb:18:in validation_error' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/json-schema-2.8.0/lib/json-schema/attributes/formats/custom.rb:16:inrescue in validate' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/json-schema-2.8.0/lib/json-schema/attributes/formats/custom.rb:12:in validate' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/json-schema-2.8.0/lib/json-schema/attributes/format.rb:10:invalidate' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/json-schema-2.8.0/lib/json-schema/schema/validator.rb:25:in block in validate' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/json-schema-2.8.0/lib/json-schema/schema/validator.rb:23:ineach' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/json-schema-2.8.0/lib/json-schema/schema/validator.rb:23:in validate' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/json-schema-2.8.0/lib/json-schema/schema.rb:33:invalidate' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/json-schema-2.8.0/lib/json-schema/attributes/properties.rb:32:in block in validate' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/json-schema-2.8.0/lib/json-schema/attributes/properties.rb:14:ineach' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/json-schema-2.8.0/lib/json-schema/attributes/properties.rb:14:in validate' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/json-schema-2.8.0/lib/json-schema/schema/validator.rb:25:inblock in validate' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/json-schema-2.8.0/lib/json-schema/schema/validator.rb:23:in each' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/json-schema-2.8.0/lib/json-schema/schema/validator.rb:23:invalidate' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/json-schema-2.8.0/lib/json-schema/schema.rb:33:in validate' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/json-schema-2.8.0/lib/json-schema/attributes/ref.rb:12:invalidate' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/json-schema-2.8.0/lib/json-schema/schema/validator.rb:25:in block in validate' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/json-schema-2.8.0/lib/json-schema/schema/validator.rb:23:ineach' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/json-schema-2.8.0/lib/json-schema/schema/validator.rb:23:in validate' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/json-schema-2.8.0/lib/json-schema/schema.rb:33:invalidate' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/json-schema-2.8.0/lib/json-schema/attributes/items.rb:14:in block in validate' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/json-schema-2.8.0/lib/json-schema/attributes/items.rb:13:ineach' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/json-schema-2.8.0/lib/json-schema/attributes/items.rb:13:in each_with_index' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/json-schema-2.8.0/lib/json-schema/attributes/items.rb:13:invalidate' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/json-schema-2.8.0/lib/json-schema/schema/validator.rb:25:in block in validate' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/json-schema-2.8.0/lib/json-schema/schema/validator.rb:23:ineach' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/json-schema-2.8.0/lib/json-schema/schema/validator.rb:23:in validate' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/json-schema-2.8.0/lib/json-schema/schema.rb:33:invalidate' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/json-schema-2.8.0/lib/json-schema/attributes/properties.rb:32:in block in validate' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/json-schema-2.8.0/lib/json-schema/attributes/properties.rb:14:ineach' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/json-schema-2.8.0/lib/json-schema/attributes/properties.rb:14:in validate' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/json-schema-2.8.0/lib/json-schema/schema/validator.rb:25:inblock in validate' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/json-schema-2.8.0/lib/json-schema/schema/validator.rb:23:in each' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/json-schema-2.8.0/lib/json-schema/schema/validator.rb:23:invalidate' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/json-schema-2.8.0/lib/json-schema/schema.rb:33:in validate' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/json-schema-2.8.0/lib/json-schema/attributes/ref.rb:12:invalidate' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/json-schema-2.8.0/lib/json-schema/schema/validator.rb:25:in block in validate' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/json-schema-2.8.0/lib/json-schema/schema/validator.rb:23:ineach' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/json-schema-2.8.0/lib/json-schema/schema/validator.rb:23:in validate' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/json-schema-2.8.0/lib/json-schema/schema.rb:33:invalidate' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/json-schema-2.8.0/lib/json-schema/attributes/properties.rb:32:in block in validate' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/json-schema-2.8.0/lib/json-schema/attributes/properties.rb:14:ineach' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/json-schema-2.8.0/lib/json-schema/attributes/properties.rb:14:in validate' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/json-schema-2.8.0/lib/json-schema/schema/validator.rb:25:inblock in validate' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/json-schema-2.8.0/lib/json-schema/schema/validator.rb:23:in each' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/json-schema-2.8.0/lib/json-schema/schema/validator.rb:23:invalidate' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/json-schema-2.8.0/lib/json-schema/schema.rb:33:in validate' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/json-schema-2.8.0/lib/json-schema/validator.rb:113:invalidate' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/json-schema-2.8.0/lib/json-schema/validator.rb:254:in `validate!'