Permalink
Browse files

@response.redirect_url works with 201 Created responses: just return …

…headers['Location'] rather than checking the response status.

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@5643 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
  • Loading branch information...
1 parent f6e85e4 commit 13e1d295d69d6410e0e4350aff8dde0e5151717d @jeremy jeremy committed Nov 28, 2006
@@ -1,5 +1,7 @@
*SVN*
+* @response.redirect_url works with 201 Created responses: just return headers['Location'] rather than checking the response status. [Jeremy Kemper]
+
* Added CSV to Mime::SET so that respond_to csv will work [Cody Fauser]
* Fixed that HEAD should return the proper Content-Length header (that is, actually use @body.size, not just 0) [DHH]
@@ -179,7 +179,7 @@ def error?
# returns the redirection location or nil
def redirect_url
- redirect? ? headers['Location'] : nil
+ headers['Location']
end
# does the redirect location match this regexp pattern?
@@ -66,6 +66,11 @@ def redirect_to_different_controller
redirect_to :controller => 'fail', :id => 5
end
+ def create
+ headers['Location'] = 'created resource'
+ head :created
+ end
+
private
def rescue_action(e)
raise e
@@ -463,6 +468,20 @@ def test_assert_follow_redirect_to_different_controller
end
end
+ def test_redirect_url_only_cares_about_location_header
+ get :create
+ assert_response :created
+
+ # Redirect url doesn't care that it wasn't a :redirect response.
+ assert_equal 'created resource', @response.redirect_url
+ assert_equal @response.redirect_url, redirect_to_url
+
+ # Must be a :redirect response.
+ assert_raise(Test::Unit::AssertionFailedError) do
+ assert_redirected_to 'created resource'
+ end
+ end
+
protected
def with_foo_routing
with_routing do |set|

0 comments on commit 13e1d29

Please sign in to comment.