Skip to content

Commit 780a7e1

Browse files
authored
Merge pull request voxpupuli#373 from benSlaughter/fix-string-invalid-scheme
Fix for string invalid scheme error when string contains colon
2 parents ad53a19 + b46937e commit 780a7e1

File tree

3 files changed

+32
-2
lines changed

3 files changed

+32
-2
lines changed

CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ This project adheres to [Semantic Versioning](http://semver.org/).
66
## [Unreleased]
77

88
### Fixed
9-
109
- Corrected the draft6 schema id to `http://json-schema.org/draft/schema#`
10+
- Rescue URI error when initializing a data string that contains a colon
1111

1212
## [2.8.0] - 2017-02-07
1313

lib/json-schema/validator.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -578,7 +578,7 @@ def initialize_data(data)
578578
begin
579579
json_uri = Util::URI.normalized_uri(data)
580580
data = self.class.parse(custom_open(json_uri))
581-
rescue JSON::Schema::JsonLoadError
581+
rescue JSON::Schema::JsonLoadError, JSON::Schema::UriError
582582
# Silently discard the error - use the data as-is
583583
end
584584
end

test/initialize_data_test.rb

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,21 @@ def test_parse_json_string
5656
assert_raises(JSON::Schema::JsonLoadError) { JSON::Validator.validate(schema, data, :uri => true) }
5757
end
5858

59+
def test_parse_plain_text_string
60+
schema = {'type' => 'string'}
61+
data = 'kapow'
62+
63+
assert(JSON::Validator.validate(schema, data))
64+
65+
assert(JSON::Validator.validate(schema, data, :parse_data => false))
66+
67+
assert_raises(JSON::Schema::JsonParseError) do
68+
JSON::Validator.validate(schema, data, :json => true)
69+
end
70+
71+
assert_raises(JSON::Schema::JsonLoadError) { JSON::Validator.validate(schema, data, :uri => true) }
72+
end
73+
5974
def test_parse_valid_uri_string
6075
schema = {'type' => 'string'}
6176
data = 'http://foo.bar/'
@@ -96,6 +111,21 @@ def test_parse_invalid_uri_string
96111
assert_raises(JSON::Schema::JsonLoadError) { JSON::Validator.validate(schema, data, :uri => true) }
97112
end
98113

114+
def test_parse_invalid_scheme_string
115+
schema = {'type' => 'string'}
116+
data = 'pick one: [1, 2, 3]'
117+
118+
assert(JSON::Validator.validate(schema, data))
119+
120+
assert(JSON::Validator.validate(schema, data, :parse_data => false))
121+
122+
assert_raises(JSON::Schema::JsonParseError) do
123+
JSON::Validator.validate(schema, data, :json => true)
124+
end
125+
126+
assert_raises(JSON::Schema::UriError) { JSON::Validator.validate(schema, data, :uri => true) }
127+
end
128+
99129
def test_parse_integer
100130
schema = {'type' => 'integer'}
101131
data = 42

0 commit comments

Comments
 (0)