aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/test/controller
diff options
context:
space:
mode:
authorPatrick Toomey <ptoomey3@biasedcoin.com>2017-08-22 12:45:22 -0600
committerPatrick Toomey <ptoomey3@biasedcoin.com>2017-08-22 12:45:22 -0600
commit8a7e91b084c9d502ebe569c6c64616f1ebdba7fd (patch)
treef4fb826fd34998bafd71ae77feedb8c92d8724b9 /actionpack/test/controller
parent665ac7cff212d010a3573f85cea895666fbaad15 (diff)
downloadrails-8a7e91b084c9d502ebe569c6c64616f1ebdba7fd.tar.gz
rails-8a7e91b084c9d502ebe569c6c64616f1ebdba7fd.tar.bz2
rails-8a7e91b084c9d502ebe569c6c64616f1ebdba7fd.zip
Normalize/process Cach-Control headers consistently
In the existing logic, the `Cache-Control` header may or may not get normalized by additional logic depending on whether `response.cache_conrol` has been modified. This leads to inconsistent behavior, since sometimes `Cache-Control` can contain whatever a user sets and sometimes it gets normalized, based on the logic inside of `set_conditional_cache_control!`. It seems like this normalization process should happen regardless to ensure consistent behavior.
Diffstat (limited to 'actionpack/test/controller')
-rw-r--r--actionpack/test/controller/render_test.rb23
1 files changed, 23 insertions, 0 deletions
diff --git a/actionpack/test/controller/render_test.rb b/actionpack/test/controller/render_test.rb
index 3619afc513..f1ec383070 100644
--- a/actionpack/test/controller/render_test.rb
+++ b/actionpack/test/controller/render_test.rb
@@ -162,6 +162,17 @@ class TestController < ActionController::Base
render action: "hello_world"
end
+ def conditional_hello_with_expires_and_confliciting_cache_control_headers
+ response.headers["Cache-Control"] = "no-cache, must-revalidate"
+ expires_now
+ render action: "hello_world"
+ end
+
+ def conditional_hello_without_expires_and_confliciting_cache_control_headers
+ response.headers["Cache-Control"] = "no-cache, must-revalidate"
+ render action: "hello_world"
+ end
+
def conditional_hello_with_bangs
render action: "hello_world"
end
@@ -368,6 +379,18 @@ class ExpiresInRenderTest < ActionController::TestCase
assert_match(/no-transform/, @response.headers["Cache-Control"])
end
+ def test_expires_now_with_conflicting_cache_control_headers
+ get :conditional_hello_with_expires_and_confliciting_cache_control_headers
+ assert_match(/no-cache/, @response.headers["Cache-Control"])
+ refute_match(/must-revalidate/, @response.headers["Cache-Control"])
+ end
+
+ def test_no_expires_now_with_conflicting_cache_control_headers
+ get :conditional_hello_without_expires_and_confliciting_cache_control_headers
+ assert_match(/no-cache/, @response.headers["Cache-Control"])
+ refute_match(/must-revalidate/, @response.headers["Cache-Control"])
+ end
+
def test_date_header_when_expires_in
time = Time.mktime(2011, 10, 30)
Time.stub :now, time do