Skip to content

Commit de1e7ad

Browse files
committed
Move controller-checking into action_encoding_template
This makes it easier to stub the desired-encoding lookup, instead of having to override the entire doing of the encoding.
1 parent 57fe7e7 commit de1e7ad

File tree

2 files changed

+5
-4
lines changed

2 files changed

+5
-4
lines changed

actionpack/lib/action_dispatch/request/utils.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ def self.handle_array(params)
8484

8585
class CustomParamEncoder # :nodoc:
8686
def self.encode(request, params, controller, action)
87-
return params unless controller && controller.valid_encoding? && encoding_template = action_encoding_template(request, controller, action)
87+
return params unless encoding_template = action_encoding_template(request, controller, action)
8888
params.except(:controller, :action).each do |key, value|
8989
ActionDispatch::Request::Utils.each_param_value(value) do |param|
9090
# If `param` is frozen, it comes from the router defaults
@@ -99,7 +99,8 @@ def self.encode(request, params, controller, action)
9999
end
100100

101101
def self.action_encoding_template(request, controller, action) # :nodoc:
102-
request.controller_class_for(controller).action_encoding_template(action)
102+
controller && controller.valid_encoding? &&
103+
request.controller_class_for(controller).action_encoding_template(action)
103104
rescue MissingController
104105
nil
105106
end

actionpack/test/dispatch/request_test.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1151,7 +1151,7 @@ class RequestParameters < BaseRequestTest
11511151
test "query parameters specified as ASCII_8BIT encoded do not raise InvalidParameterError" do
11521152
request = stub_request("QUERY_STRING" => "foo=%81E")
11531153

1154-
ActionDispatch::Request::Utils.stub(:set_binary_encoding, { "foo" => "\x81E".b }) do
1154+
ActionDispatch::Request::Utils::CustomParamEncoder.stub(:action_encoding_template, { "foo" => Encoding::ASCII_8BIT }) do
11551155
assert_nothing_raised do
11561156
request.parameters
11571157
end
@@ -1167,7 +1167,7 @@ class RequestParameters < BaseRequestTest
11671167
:input => data
11681168
)
11691169

1170-
ActionDispatch::Request::Utils.stub(:set_binary_encoding, { "foo" => "\x81E".b }) do
1170+
ActionDispatch::Request::Utils::CustomParamEncoder.stub(:action_encoding_template, { "foo" => Encoding::ASCII_8BIT }) do
11711171
assert_nothing_raised do
11721172
request.parameters
11731173
end

0 commit comments

Comments
 (0)