Reset symbolized path parameters when a test request is recycled [#5437 state:resolved]

Signed-off-by: José Valim <jose.valim@gmail.com>
This commit is contained in:
Andrew White 2010-08-24 15:05:26 +01:00 committed by José Valim
parent 542878304d
commit 11f6179f55
3 changed files with 11 additions and 2 deletions

@ -167,6 +167,7 @@ def recycle!
@formats = nil
@env.delete_if { |k, v| k =~ /^(action_dispatch|rack)\.request/ }
@env.delete_if { |k, v| k =~ /^action_dispatch\.rescue/ }
@symbolized_path_params = nil
@method = @request_method = nil
@fullpath = @ip = @remote_ip = nil
@env['action_dispatch.request.query_parameters'] = {}

@ -15,14 +15,14 @@ def parameters
alias :params :parameters
def path_parameters=(parameters) #:nodoc:
@_symbolized_path_params = nil
@symbolized_path_params = nil
@env.delete("action_dispatch.request.parameters")
@env["action_dispatch.request.path_parameters"] = parameters
end
# The same as <tt>path_parameters</tt> with explicitly symbolized keys.
def symbolized_path_parameters
@_symbolized_path_params ||= path_parameters.symbolize_keys
@symbolized_path_params ||= path_parameters.symbolize_keys
end
# Returns a hash with the \parameters used to form the \path of the request.

@ -549,6 +549,14 @@ def test_params_reset_after_post_request
assert_blank @request.params[:foo]
end
def test_symbolized_path_params_reset_after_request
get :test_params, :id => "foo"
assert_equal "foo", @request.symbolized_path_parameters[:id]
@request.recycle!
get :test_params
assert_nil @request.symbolized_path_parameters[:id]
end
def test_should_have_knowledge_of_client_side_cookie_state_even_if_they_are_not_set
@request.cookies['foo'] = 'bar'
get :no_op