diff options
author | Derek Prior <derekprior@gmail.com> | 2013-04-26 14:30:29 -0400 |
---|---|---|
committer | Derek Prior <derekprior@gmail.com> | 2013-09-19 09:23:20 -0400 |
commit | 1dacfbabf3bb1e0a9057dd2a016b1804e7fa38c0 (patch) | |
tree | 7a82fbf9bb30202b01590c2306c9ffd1846f5e89 /actionpack/lib/action_dispatch/testing | |
parent | fb2785ec3d97f0e3578e181012f18eda920dca10 (diff) | |
download | rails-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/testing')
-rw-r--r-- | actionpack/lib/action_dispatch/testing/assertions/response.rb | 20 |
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 |