Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
2 changes: 1 addition & 1 deletion lib/json-schema/validator.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
30 changes: 30 additions & 0 deletions test/initialize_data_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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/'
Expand Down Expand Up @@ -96,6 +111,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
Expand Down