diff --git a/CHANGELOG.md b/CHANGELOG.md index b32633d5..e08f49d6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,8 @@ This project adheres to [Semantic Versioning](http://semver.org/). ### Fixed - Corrected the draft6 schema id to `http://json-schema.org/draft/schema#` -- Rescue URI error when initializing a data string that contains a colon +- Rescue URI error when initializing a data string that contains a colon +- Data that looks like a URI but is invalid is now treated as a string ## [2.8.0] - 2017-02-07 diff --git a/lib/json-schema/validator.rb b/lib/json-schema/validator.rb index 2c462969..6525fc62 100644 --- a/lib/json-schema/validator.rb +++ b/lib/json-schema/validator.rb @@ -592,6 +592,8 @@ def custom_open(uri) if uri.absolute? && Util::URI::SUPPORTED_PROTOCOLS.include?(uri.scheme) begin open(uri.to_s).read + rescue URI::InvalidURIError => e + raise JSON::Schema::UriError, e.message rescue OpenURI::HTTPError, Timeout::Error => e raise JSON::Schema::JsonLoadError, e.message end diff --git a/test/initialize_data_test.rb b/test/initialize_data_test.rb index cf08cbe1..46b4c601 100644 --- a/test/initialize_data_test.rb +++ b/test/initialize_data_test.rb @@ -109,6 +109,8 @@ def test_parse_invalid_uri_string end assert_raises(JSON::Schema::JsonLoadError) { JSON::Validator.validate(schema, data, :uri => true) } + + assert(JSON::Validator.validate(schema, "http://a/%%30%30")) end def test_parse_invalid_scheme_string