aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack
diff options
context:
space:
mode:
authorDominic Cleal <dominic@cleal.org>2017-01-20 14:33:52 +0000
committerDominic Cleal <dominic@cleal.org>2017-01-23 17:56:57 +0000
commit13c7f2b537b580beb5f3df29b8396d2157bdfdab (patch)
tree4a880692055af920da504e56e7f213c849b3e1e9 /actionpack
parentc309073c7476f50dfb1e796d058580f176101c36 (diff)
downloadrails-13c7f2b537b580beb5f3df29b8396d2157bdfdab.tar.gz
rails-13c7f2b537b580beb5f3df29b8396d2157bdfdab.tar.bz2
rails-13c7f2b537b580beb5f3df29b8396d2157bdfdab.zip
Delete PATH_INFO after each controller test request
Prevents PATH_INFO from being used to infer the request format in later test requests when no explicit format is given. As the request PATH_INFO may be set before a request, it can't be deleted during pre-request scrubbing. Fixes #27774
Diffstat (limited to 'actionpack')
-rw-r--r--actionpack/lib/action_controller/test_case.rb1
-rw-r--r--actionpack/test/controller/test_case_test.rb14
2 files changed, 15 insertions, 0 deletions
diff --git a/actionpack/lib/action_controller/test_case.rb b/actionpack/lib/action_controller/test_case.rb
index 7b620ac95e..7229c67f30 100644
--- a/actionpack/lib/action_controller/test_case.rb
+++ b/actionpack/lib/action_controller/test_case.rb
@@ -534,6 +534,7 @@ module ActionController
@request.delete_header "HTTP_ACCEPT"
end
@request.query_string = ""
+ @request.env.delete "PATH_INFO"
@response.sent!
end
diff --git a/actionpack/test/controller/test_case_test.rb b/actionpack/test/controller/test_case_test.rb
index 874f9c3c42..ac99830208 100644
--- a/actionpack/test/controller/test_case_test.rb
+++ b/actionpack/test/controller/test_case_test.rb
@@ -728,6 +728,20 @@ XML
assert_equal "text/html", @response.body
end
+ def test_request_path_info_and_format_reset
+ get :test_format, format: "json"
+ assert_equal "application/json", @response.body
+
+ get :test_uri, format: "json"
+ assert_equal "/test_case_test/test/test_uri.json", @response.body
+
+ get :test_format
+ assert_equal "text/html", @response.body
+
+ get :test_uri
+ assert_equal "/test_case_test/test/test_uri", @response.body
+ end
+
def test_request_format_kwarg_overrides_params
get :test_format, format: "json", params: { format: "html" }
assert_equal "application/json", @response.body