From b1de99f58aa5ca1a6bc0757ed8febc931b156096 Mon Sep 17 00:00:00 2001 From: Ben Slaughter Date: Tue, 28 Feb 2017 08:47:27 +0000 Subject: [PATCH 1/4] Failing parse string scheme test --- test/initialize_data_test.rb | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/test/initialize_data_test.rb b/test/initialize_data_test.rb index c760f848..5bdfd3b5 100644 --- a/test/initialize_data_test.rb +++ b/test/initialize_data_test.rb @@ -96,6 +96,21 @@ def test_parse_invalid_uri_string assert_raises(JSON::Schema::JsonLoadError) { JSON::Validator.validate(schema, data, :uri => true) } end + def test_parse_invalid_scheme_string + schema = {'type' => 'string'} + data = 'pick one: [1, 2, 3]' + + assert(JSON::Validator.validate(schema, data)) + + assert(JSON::Validator.validate(schema, data, :parse_data => false)) + + assert_raises(JSON::Schema::JsonParseError) do + JSON::Validator.validate(schema, data, :json => true) + end + + assert_raises(JSON::Schema::UriError) { JSON::Validator.validate(schema, data, :uri => true) } + end + def test_parse_integer schema = {'type' => 'integer'} data = 42 From b62bd266000039b91bcbeb30a7898d187e3bbe7c Mon Sep 17 00:00:00 2001 From: Ben Slaughter Date: Tue, 28 Feb 2017 08:49:00 +0000 Subject: [PATCH 2/4] Validator initialize_data rescues uri error --- lib/json-schema/validator.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/json-schema/validator.rb b/lib/json-schema/validator.rb index 82d23dc3..2c462969 100644 --- a/lib/json-schema/validator.rb +++ b/lib/json-schema/validator.rb @@ -578,7 +578,7 @@ def initialize_data(data) begin json_uri = Util::URI.normalized_uri(data) data = self.class.parse(custom_open(json_uri)) - rescue JSON::Schema::JsonLoadError + rescue JSON::Schema::JsonLoadError, JSON::Schema::UriError # Silently discard the error - use the data as-is end end From 420bcdf784e5791a0733273de46dcfe2ef9ee54d Mon Sep 17 00:00:00 2001 From: Ben Slaughter Date: Fri, 3 Mar 2017 08:35:43 +0000 Subject: [PATCH 3/4] Update changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 91c702ef..b32633d5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,8 +6,8 @@ This project adheres to [Semantic Versioning](http://semver.org/). ## [Unreleased] ### 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 ## [2.8.0] - 2017-02-07 From b46937ebf55dc5631d70176061aa239e929937af Mon Sep 17 00:00:00 2001 From: Ben Slaughter Date: Fri, 3 Mar 2017 22:31:07 +0000 Subject: [PATCH 4/4] Added plain text string test --- test/initialize_data_test.rb | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/test/initialize_data_test.rb b/test/initialize_data_test.rb index 5bdfd3b5..cf08cbe1 100644 --- a/test/initialize_data_test.rb +++ b/test/initialize_data_test.rb @@ -56,6 +56,21 @@ def test_parse_json_string assert_raises(JSON::Schema::JsonLoadError) { JSON::Validator.validate(schema, data, :uri => true) } end + def test_parse_plain_text_string + schema = {'type' => 'string'} + data = 'kapow' + + assert(JSON::Validator.validate(schema, data)) + + assert(JSON::Validator.validate(schema, data, :parse_data => false)) + + assert_raises(JSON::Schema::JsonParseError) do + JSON::Validator.validate(schema, data, :json => true) + end + + assert_raises(JSON::Schema::JsonLoadError) { JSON::Validator.validate(schema, data, :uri => true) } + end + def test_parse_valid_uri_string schema = {'type' => 'string'} data = 'http://foo.bar/'