diff options
-rw-r--r-- | actionpack/CHANGELOG | 2 | ||||
-rw-r--r-- | actionpack/lib/action_controller/assertions.rb | 3 | ||||
-rwxr-xr-x | actionpack/test/controller/redirect_test.rb | 55 |
3 files changed, 57 insertions, 3 deletions
diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG index 382215da8a..41528e5fea 100644 --- a/actionpack/CHANGELOG +++ b/actionpack/CHANGELOG @@ -10,7 +10,7 @@ xml.cdata! "some text" # => <![CDATA[some text]]> -* Added evaluation of <SCRIPT> blocks in content returned to Ajax calls #1577 [Thomas Fuchs/court3nay] +* Added evaluation of <SCRIPT> blocks in content returned to Ajax calls #1577 [Thomas Fuchs/court3nay/Sean Treadway] * Directly generate paths with a leading slash instead of tacking it on later. #1543 [Nicholas Seckar] diff --git a/actionpack/lib/action_controller/assertions.rb b/actionpack/lib/action_controller/assertions.rb index c8245c7a3a..64b47c94da 100644 --- a/actionpack/lib/action_controller/assertions.rb +++ b/actionpack/lib/action_controller/assertions.rb @@ -56,11 +56,10 @@ module Test #:nodoc: # such at assert_redirected_to(:controller => "weblog") will also match the redirection of # redirect_to(:controller => "weblog", :action => "show") and so on. def assert_redirected_to(options = {}, message=nil) - assert_redirect(message) + assert_response(:redirect, message) if options.is_a?(String) msg = build_message(message, "expected a redirect to <?>, found one to <?>", options, @response.redirect_url) - url_regexp = %r{^(\w+://.*?(/|$|\?))(.*)$} eurl, epath, url, path = [options, @response.redirect_url].collect do |url| u, p = (url_regexp =~ url) ? [$1, $3] : [nil, url] diff --git a/actionpack/test/controller/redirect_test.rb b/actionpack/test/controller/redirect_test.rb index ee20457508..36e742453a 100755 --- a/actionpack/test/controller/redirect_test.rb +++ b/actionpack/test/controller/redirect_test.rb @@ -13,6 +13,10 @@ class RedirectController < ActionController::Base redirect_to :action => "other_host", :only_path => false, :host => 'other.test.host' end + def module_redirect + redirect_to :controller => 'module_test/module_redirect', :action => "hello_world" + end + def rescue_errors(e) raise e end protected @@ -42,4 +46,55 @@ class RedirectTest < Test::Unit::TestCase get :host_redirect assert_redirected_to :action => "other_host", :only_path => false, :host => 'other.test.host' end + + def test_module_redirect + get :module_redirect + assert_redirect_url "http://test.host/module_test/module_redirect/hello_world" + end + + def test_module_redirect_using_options + get :module_redirect + assert_redirected_to :controller => 'module_test/module_redirect', :action => 'hello_world' + end end + +module ModuleTest + class ModuleRedirectController < ::RedirectController + def module_redirect + redirect_to :controller => '/redirect', :action => "hello_world" + end + end + + class ModuleRedirectTest < Test::Unit::TestCase + def setup + @controller = ModuleRedirectController.new + @request = ActionController::TestRequest.new + @response = ActionController::TestResponse.new + end + + def test_simple_redirect + get :simple_redirect + assert_redirect_url "http://test.host/module_test/module_redirect/hello_world" + end + + def test_redirect_with_method_reference_and_parameters + get :method_redirect + assert_redirect_url "http://test.host/module_test/module_redirect/dashboard/1?message=hello" + end + + def test_simple_redirect_using_options + get :host_redirect + assert_redirected_to :action => "other_host", :only_path => false, :host => 'other.test.host' + end + + def test_module_redirect + get :module_redirect + assert_redirect_url "http://test.host/redirect/hello_world" + end + + def test_module_redirect_using_options + get :module_redirect + assert_redirected_to :controller => 'redirect', :action => "hello_world" + end + end +end
\ No newline at end of file |