From 7ec665303d125c945f7d59affb904f974143a087 Mon Sep 17 00:00:00 2001 From: Arthur Neves Date: Tue, 13 May 2014 00:03:38 -0400 Subject: [PATCH] Fix regression on `assert_redirected_to`. `assert_redirected_to` would fail if there is no controller set on a `ActionDispatch::IntegrationTest`, as _compute_redirect_to_location would be called on the controller to build the url. This regression was introduced after 1dacfbabf3bb1e0a9057dd2a016b1804e7fa38c0. [fixes #14691] --- .../lib/action_dispatch/testing/assertions/response.rb | 8 +++++++- actionpack/test/controller/integration_test.rb | 6 ++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/actionpack/lib/action_dispatch/testing/assertions/response.rb b/actionpack/lib/action_dispatch/testing/assertions/response.rb index 68feb26936..0adc6c84ff 100644 --- a/actionpack/lib/action_dispatch/testing/assertions/response.rb +++ b/actionpack/lib/action_dispatch/testing/assertions/response.rb @@ -73,7 +73,13 @@ def normalize_argument_to_redirection(fragment) if Regexp === fragment fragment else - @controller._compute_redirect_to_location(fragment) + handle = @controller || Class.new(ActionController::Metal) do + include ActionController::Redirecting + def initialize(request) + @_request = request + end + end.new(@request) + handle._compute_redirect_to_location(fragment) end end end diff --git a/actionpack/test/controller/integration_test.rb b/actionpack/test/controller/integration_test.rb index e851cc6a63..200a2dcc47 100644 --- a/actionpack/test/controller/integration_test.rb +++ b/actionpack/test/controller/integration_test.rb @@ -374,6 +374,10 @@ def test_redirect follow_redirect! assert_response :success assert_equal "/get", path + + get '/moved' + assert_response :redirect + assert_redirected_to '/method' end end @@ -511,6 +515,8 @@ def with_test_route_set end set.draw do + get 'moved' => redirect('/method') + match ':action', :to => controller, :via => [:get, :post], :as => :action get 'get/:action', :to => controller, :as => :get_action end -- GitLab