提交 c5da6414 编写于 作者: J Jon Moss

Update `cookies` helper on all HTTP requests

Regression introduced by ae291421 / 8363b879.

Previously, cookies were only updated on `GET` requests. Now we will
update the helper for all requests, as part of `process`. Added
regression tests for all available HTTP method helpers in
`ActionController::TestCase`.
上级 5f03172f
......@@ -389,9 +389,7 @@ def determine_default_controller_class(name)
# Note that the request method is not verified. The different methods are
# available to make the tests more expressive.
def get(action, **args)
res = process(action, method: "GET", **args)
cookies.update res.cookies
res
process(action, method: "GET", **args)
end
# Simulate a POST request with the given parameters and set/volley the response.
......@@ -519,6 +517,7 @@ def process(action, method: "GET", params: {}, session: nil, body: nil, flash: {
unless @request.cookie_jar.committed?
@request.cookie_jar.write(@response)
cookies.update(@request.cookie_jar.instance_variable_get(:@cookies))
cookies.update(@response.cookies)
end
end
@response.prepare!
......
......@@ -395,6 +395,15 @@ def test_deleted_cookie_predicate
assert_equal false, cookies.deleted?("another")
end
# Ensure all HTTP methods have their cookies updated
[:get, :post, :patch, :put, :delete, :head].each do |method|
define_method("test_deleting_cookie_#{method}") do
request.cookies[:user_name] = "Joe"
public_send method, :logout
assert_nil cookies[:user_name]
end
end
def test_deleted_cookie_predicate_with_mismatching_options
cookies[:user_name] = "Joe"
cookies.delete("user_name", path: "/path")
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册