aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_dispatch
diff options
context:
space:
mode:
authorDerek Prior <derekprior@gmail.com>2013-04-26 14:30:29 -0400
committerDerek Prior <derekprior@gmail.com>2013-09-19 09:23:20 -0400
commit1dacfbabf3bb1e0a9057dd2a016b1804e7fa38c0 (patch)
tree7a82fbf9bb30202b01590c2306c9ffd1846f5e89 /actionpack/lib/action_dispatch
parentfb2785ec3d97f0e3578e181012f18eda920dca10 (diff)
downloadrails-1dacfbabf3bb1e0a9057dd2a016b1804e7fa38c0.tar.gz
rails-1dacfbabf3bb1e0a9057dd2a016b1804e7fa38c0.tar.bz2
rails-1dacfbabf3bb1e0a9057dd2a016b1804e7fa38c0.zip
Fix incorrect assert_redirected_to failure message
In some instances, `assert_redirected_to` assertion was returning an incorrect and misleading failure message when the assertion failed. This was due to a disconnect in how the assertion computes the redirect string for the failure message and how `redirect_to` computes the string that is actually used for redirection. I made the `_compute_redirect_to_loaction` method used by `redirect_to` public and call that from the method `assert_redirect_to` uses to calculate the URL. The reveals a new test failure due to the regex used by `_compute_redirect_to_location` allow `_` in the URL scheme.
Diffstat (limited to 'actionpack/lib/action_dispatch')
-rw-r--r--actionpack/lib/action_dispatch/testing/assertions/response.rb20
1 files changed, 5 insertions, 15 deletions
diff --git a/actionpack/lib/action_dispatch/testing/assertions/response.rb b/actionpack/lib/action_dispatch/testing/assertions/response.rb
index 44ed0ac1f3..93f9fab9c2 100644
--- a/actionpack/lib/action_dispatch/testing/assertions/response.rb
+++ b/actionpack/lib/action_dispatch/testing/assertions/response.rb
@@ -67,21 +67,11 @@ module ActionDispatch
end
def normalize_argument_to_redirection(fragment)
- normalized = case fragment
- when Regexp
- fragment
- when %r{^\w[A-Za-z\d+.-]*:.*}
- fragment
- when String
- @request.protocol + @request.host_with_port + fragment
- when :back
- raise RedirectBackError unless refer = @request.headers["Referer"]
- refer
- else
- @controller.url_for(fragment)
- end
-
- normalized.respond_to?(:delete) ? normalized.delete("\0\r\n") : normalized
+ if Regexp === fragment
+ fragment
+ else
+ @controller._compute_redirect_to_location(fragment)
+ end
end
end
end