aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafael Mendonça França <rafaelmfranca@gmail.com>2012-08-02 18:50:26 -0700
committerRafael Mendonça França <rafaelmfranca@gmail.com>2012-08-02 18:50:26 -0700
commit3c731a4ad62430100ba0b65bc966aa6dc6280c5f (patch)
tree61063da65fd36a13eb5aa2b56eb5597e2f73bb30
parent9abf589051006b62a2c7f8cf614eff629a083fd5 (diff)
parentc62abed8ca480216b3b6386c95935bfc24683216 (diff)
downloadrails-3c731a4ad62430100ba0b65bc966aa6dc6280c5f.tar.gz
rails-3c731a4ad62430100ba0b65bc966aa6dc6280c5f.tar.bz2
rails-3c731a4ad62430100ba0b65bc966aa6dc6280c5f.zip
Merge pull request #7231 from armanddp/no_content
Remove single character body in head(:no_content) response
-rw-r--r--actionpack/lib/action_controller/metal/head.rb8
-rw-r--r--actionpack/test/controller/mime_responds_test.rb8
-rw-r--r--actionpack/test/controller/new_base/bare_metal_test.rb30
3 files changed, 38 insertions, 8 deletions
diff --git a/actionpack/lib/action_controller/metal/head.rb b/actionpack/lib/action_controller/metal/head.rb
index 2fcd933d32..747e1273be 100644
--- a/actionpack/lib/action_controller/metal/head.rb
+++ b/actionpack/lib/action_controller/metal/head.rb
@@ -29,19 +29,19 @@ module ActionController
self.status = status
self.location = url_for(location) if location
- if include_content_headers?(self.status)
+ if include_content?(self.status)
self.content_type = content_type || (Mime[formats.first] if formats)
+ self.response_body = " "
else
headers.delete('Content-Type')
headers.delete('Content-Length')
+ self.response_body = ""
end
-
- self.response_body = " "
end
private
# :nodoc:
- def include_content_headers?(status)
+ def include_content?(status)
case status
when 100..199
false
diff --git a/actionpack/test/controller/mime_responds_test.rb b/actionpack/test/controller/mime_responds_test.rb
index d093e31b3d..6f9dd44e21 100644
--- a/actionpack/test/controller/mime_responds_test.rb
+++ b/actionpack/test/controller/mime_responds_test.rb
@@ -850,7 +850,7 @@ class RespondWithControllerTest < ActionController::TestCase
put :using_resource
assert_equal "application/xml", @response.content_type
assert_equal 204, @response.status
- assert_equal " ", @response.body
+ assert_equal "", @response.body
end
def test_using_resource_for_put_with_json_yields_no_content_on_success
@@ -859,7 +859,7 @@ class RespondWithControllerTest < ActionController::TestCase
put :using_resource
assert_equal "application/json", @response.content_type
assert_equal 204, @response.status
- assert_equal " ", @response.body
+ assert_equal "", @response.body
end
def test_using_resource_for_put_with_xml_yields_unprocessable_entity_on_failure
@@ -901,7 +901,7 @@ class RespondWithControllerTest < ActionController::TestCase
delete :using_resource
assert_equal "application/xml", @response.content_type
assert_equal 204, @response.status
- assert_equal " ", @response.body
+ assert_equal "", @response.body
end
def test_using_resource_for_delete_with_json_yields_no_content_on_success
@@ -911,7 +911,7 @@ class RespondWithControllerTest < ActionController::TestCase
delete :using_resource
assert_equal "application/json", @response.content_type
assert_equal 204, @response.status
- assert_equal " ", @response.body
+ assert_equal "", @response.body
end
def test_using_resource_for_delete_with_html_redirects_on_failure
diff --git a/actionpack/test/controller/new_base/bare_metal_test.rb b/actionpack/test/controller/new_base/bare_metal_test.rb
index 5bcd79ebec..7396c850ad 100644
--- a/actionpack/test/controller/new_base/bare_metal_test.rb
+++ b/actionpack/test/controller/new_base/bare_metal_test.rb
@@ -110,6 +110,36 @@ module BareMetalTest
assert_nil headers['Content-Type']
assert_nil headers['Content-Length']
end
+
+ test "head :no_content (204) does not return any content" do
+ content = HeadController.action(:no_content).call(Rack::MockRequest.env_for("/")).third.first
+ assert_empty content
+ end
+
+ test "head :reset_content (205) does not return any content" do
+ content = HeadController.action(:reset_content).call(Rack::MockRequest.env_for("/")).third.first
+ assert_empty content
+ end
+
+ test "head :not_modified (304) does not return any content" do
+ content = HeadController.action(:not_modified).call(Rack::MockRequest.env_for("/")).third.first
+ assert_empty content
+ end
+
+ test "head :continue (100) does not return any content" do
+ content = HeadController.action(:continue).call(Rack::MockRequest.env_for("/")).third.first
+ assert_empty content
+ end
+
+ test "head :switching_protocols (101) does not return any content" do
+ content = HeadController.action(:switching_protocols).call(Rack::MockRequest.env_for("/")).third.first
+ assert_empty content
+ end
+
+ test "head :processing (102) does not return any content" do
+ content = HeadController.action(:processing).call(Rack::MockRequest.env_for("/")).third.first
+ assert_empty content
+ end
end
class BareControllerTest < ActionController::TestCase