Skip to content

Commit 2480458

Browse files
hidde-janlgebhardt
authored andcommitted
Verify filters that are passed to show_related_resources (#971)
1 parent 8c1d7dc commit 2480458

File tree

5 files changed

+16
-2
lines changed

5 files changed

+16
-2
lines changed

lib/jsonapi/processor.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,9 +160,10 @@ def show_related_resources
160160
include_directives = params[:include_directives]
161161

162162
source_resource ||= source_klass.find_by_key(source_id, context: context, fields: fields)
163+
verified_filters = resource_klass.verify_filters(filters, context)
163164

164165
rel_opts = {
165-
filters: filters,
166+
filters: verified_filters,
166167
sort_criteria: sort_criteria,
167168
paginator: paginator,
168169
fields: fields,

lib/jsonapi/request_parser.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ def setup_get_related_resources_action(params, resource_klass)
119119
relationship_type: relationship_type,
120120
source_klass: source_klass,
121121
source_id: source_id,
122-
filters: source_klass.verify_filters(filters, @context),
122+
filters: filters,
123123
sort_criteria: sort_criteria,
124124
paginator: paginator,
125125
fields: fields,

test/controllers/controller_test.rb

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2390,6 +2390,17 @@ def test_invalid_filter_value
23902390
assert_response :bad_request
23912391
end
23922392

2393+
def test_invalid_filter_value_for_get_related_resources
2394+
assert_cacheable_get :get_related_resources, params: {
2395+
hair_cut_id: 1,
2396+
relationship: 'people',
2397+
source: 'hair_cuts',
2398+
filter: {name: 'L'}
2399+
}
2400+
2401+
assert_response :bad_request
2402+
end
2403+
23932404
def test_valid_filter_value
23942405
assert_cacheable_get :index, params: {filter: {name: 'Joe Author'}}
23952406
assert_response :success

test/fixtures/active_record.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -394,6 +394,7 @@ class Section < ActiveRecord::Base
394394
end
395395

396396
class HairCut < ActiveRecord::Base
397+
has_many :people
397398
end
398399

399400
class Property < ActiveRecord::Base

test/test_helper.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,7 @@ class CatResource < JSONAPI::Resource
229229
jsonapi_resources :comments
230230
jsonapi_resources :firms
231231
jsonapi_resources :tags
232+
jsonapi_resources :hair_cuts
232233
jsonapi_resources :posts do
233234
jsonapi_relationships
234235
jsonapi_links :special_tags

0 commit comments

Comments
 (0)