diff --git a/lib/jsonapi/resource.rb b/lib/jsonapi/resource.rb index 2ea5bae0a..9d228dc39 100644 --- a/lib/jsonapi/resource.rb +++ b/lib/jsonapi/resource.rb @@ -638,7 +638,12 @@ def is_filter_relationship?(filter) def verify_filter(filter, raw, context = nil) filter_values = [] - filter_values += CSV.parse_line(raw) unless raw.nil? || raw.empty? + + begin + filter_values += CSV.parse_line(raw) unless raw.nil? || raw.empty? + rescue CSV::MalformedCSVError => ex + filter_values << raw + end strategy = _allowed_filters.fetch(filter, Hash.new)[:verify] diff --git a/test/integration/requests/request_test.rb b/test/integration/requests/request_test.rb index 2e603ed7d..c8df8dff7 100644 --- a/test/integration/requests/request_test.rb +++ b/test/integration/requests/request_test.rb @@ -52,6 +52,15 @@ def test_get_underscored_key JSONAPI.configuration = original_config end + def test_filter_with_value_containing_double_quote + original_config = JSONAPI.configuration.dup + JSONAPI.configuration.json_key_format = :underscored_key + get '/iso_currencies?filter[country_name]="' + assert_jsonapi_response 200 + ensure + JSONAPI.configuration = original_config + end + def test_get_underscored_key_filtered original_config = JSONAPI.configuration.dup JSONAPI.configuration.json_key_format = :underscored_key