Ryan Angilly
2009-Mar-18 16:20 UTC
Functional tests with multiple requests are concatenating parameters on 2.3.2
Hey guys,
I just ran into a situation where this test started failing after upgrading
to 2.3.2 from 2.2.2:
xhr :post, :signin, :email => "ryan@angilly.com", :password =>
"correct"
assert_template "signin/link"
xhr :post, :signin, :email => "ryan@angilly.com"
assert_template "signin/index"
The second assert is failing. Instead of rendering the index template,
it''s
rendering the link template again. After a bit of debugging, I saw that the
second request has :password => "correct" being passed in as a
parameter.
I tracked it down to action_controller/request.rb:
420 # Override Rack''s GET method to support indifferent access
421 def GET
422 @env["action_controller.request.query_parameters"]
||normalize_parameters(super)
423 end
424 alias_method :query_parameters, :GET
425
426 # Override Rack''s POST method to support indifferent access
427 def POST
428 @env["action_controller.request.request_parameters"]
||normalize_parameters(super)
429 end
430 alias_method :request_parameters, :POST
In action_controller/test_process.rb, there are several places where we try
to clean up the current request by setting @parameters to nil, but this
ignores the fact that request_parameters no longer relies on @parameters.
It''s now duping
@env["action_controller.request.request_parameters"]
So I''m thinking test_process needs a
''clear_parameters'' method:
def clear_parameters
@request.env.delete(''action_controller.request.request_parameters'')
@request.env.delete(''action_controller.request.query_parameters'')
end
And that this method should be called in place of @parameters = nil
This is my first foray into the world of Rack, so I could be way off base
here. Thoughts?
Thanks,
Ryan
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Core" group.
To post to this group, send email to rubyonrails-core@googlegroups.com
To unsubscribe from this group, send email to
rubyonrails-core+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/rubyonrails-core?hl=en
-~----------~----~----~----~------~----~------~--~---