aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafael França <rafaelmfranca@gmail.com>2017-01-06 04:18:54 -0500
committerGitHub <noreply@github.com>2017-01-06 04:18:54 -0500
commit5eff7a9ca7bb2ee7f16db1ab4d11cebe28757ba5 (patch)
tree427d127b00c6316498dabbd5d13f5909d75d7177
parent5f03172f54a58a57a48a3121562beb2cef866cbe (diff)
parentc5da6414715e3e61f6e51a40245525aa9504a6f3 (diff)
downloadrails-5eff7a9ca7bb2ee7f16db1ab4d11cebe28757ba5.tar.gz
rails-5eff7a9ca7bb2ee7f16db1ab4d11cebe28757ba5.tar.bz2
rails-5eff7a9ca7bb2ee7f16db1ab4d11cebe28757ba5.zip
Merge pull request #27586 from maclover7/jm-fix-27584
Update `cookies` helper on all HTTP requests
-rw-r--r--actionpack/lib/action_controller/test_case.rb5
-rw-r--r--actionpack/test/dispatch/cookies_test.rb9
2 files changed, 11 insertions, 3 deletions
diff --git a/actionpack/lib/action_controller/test_case.rb b/actionpack/lib/action_controller/test_case.rb
index 7b620ac95e..57dd605b51 100644
--- a/actionpack/lib/action_controller/test_case.rb
+++ b/actionpack/lib/action_controller/test_case.rb
@@ -389,9 +389,7 @@ module ActionController
# 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 @@ module ActionController
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!
diff --git a/actionpack/test/dispatch/cookies_test.rb b/actionpack/test/dispatch/cookies_test.rb
index 664faa31bb..73ad677419 100644
--- a/actionpack/test/dispatch/cookies_test.rb
+++ b/actionpack/test/dispatch/cookies_test.rb
@@ -395,6 +395,15 @@ class CookiesTest < ActionController::TestCase
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")