aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/test/controller/test_case_test.rb
diff options
context:
space:
mode:
authorJeremy Kemper <jeremykemper@gmail.com>2015-02-24 17:28:45 -0700
committerJeremy Kemper <jeremykemper@gmail.com>2015-02-25 09:49:25 -0700
commitf6e293ec54f02f83cdb37502bea117f66f87bcae (patch)
treebf2d9a7d1de683860700a1c11ca0594bd304fc1e /actionpack/test/controller/test_case_test.rb
parent2abed7af6e4b87da7277952e9ad73681ac337f2e (diff)
downloadrails-f6e293ec54f02f83cdb37502bea117f66f87bcae.tar.gz
rails-f6e293ec54f02f83cdb37502bea117f66f87bcae.tar.bz2
rails-f6e293ec54f02f83cdb37502bea117f66f87bcae.zip
Fix default headers in test responses
Fixes regression in #18423. Merge default headers for new responses, but don't merge when creating a response from the last session request. hat tip @senny :heart:
Diffstat (limited to 'actionpack/test/controller/test_case_test.rb')
-rw-r--r--actionpack/test/controller/test_case_test.rb46
1 files changed, 46 insertions, 0 deletions
diff --git a/actionpack/test/controller/test_case_test.rb b/actionpack/test/controller/test_case_test.rb
index ca854040b7..e348749f78 100644
--- a/actionpack/test/controller/test_case_test.rb
+++ b/actionpack/test/controller/test_case_test.rb
@@ -965,6 +965,52 @@ XML
end
end
+class ResponseDefaultHeadersTest < ActionController::TestCase
+ class TestController < ActionController::Base
+ def remove_header
+ headers.delete params[:header]
+ head :ok, 'C' => '3'
+ end
+ end
+
+ setup do
+ @original = ActionDispatch::Response.default_headers
+ @defaults = { 'A' => '1', 'B' => '2' }
+ ActionDispatch::Response.default_headers = @defaults
+ end
+
+ teardown do
+ ActionDispatch::Response.default_headers = @original
+ end
+
+ def setup
+ super
+ @controller = TestController.new
+ @request = ActionController::TestRequest.new
+ @response = ActionController::TestResponse.new
+ @request.env['PATH_INFO'] = nil
+ @routes = ActionDispatch::Routing::RouteSet.new.tap do |r|
+ r.draw do
+ get ':controller(/:action(/:id))'
+ end
+ end
+ end
+
+ test "response contains default headers" do
+ # Response headers start out with the defaults
+ assert_equal @defaults, response.headers
+
+ get :remove_header, params: { header: 'A' }
+ assert_response :ok
+
+ # After a request, the response in the test case doesn't have the
+ # defaults merged on top again.
+ assert_not_includes response.headers, 'A'
+ assert_includes response.headers, 'B'
+ assert_includes response.headers, 'C'
+ end
+end
+
module EngineControllerTests
class Engine < ::Rails::Engine
isolate_namespace EngineControllerTests