aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--actionpack/CHANGELOG2
-rw-r--r--actionpack/lib/action_controller/assertions.rb6
-rw-r--r--actionpack/test/controller/action_pack_assertions_test.rb27
3 files changed, 29 insertions, 6 deletions
diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG
index e30d645713..dcf8d4ef08 100644
--- a/actionpack/CHANGELOG
+++ b/actionpack/CHANGELOG
@@ -1,5 +1,7 @@
*SVN*
+* Fixed assert_redirected_to to handle absolute controller paths properly #1472 [Rick Olson/Nicholas Seckar]
+
* Added event-based observations when frequency is not set on observe_field/form #1474 [flash@vanklinkenbergsoftware.nl]
* Added script.aculo.us Javascripts (controls.js, dragdrop.js, effects.js) (NEEDS MORE DESCRIPTION) #1509 [Thomas Fuchs]
diff --git a/actionpack/lib/action_controller/assertions.rb b/actionpack/lib/action_controller/assertions.rb
index f2eb2fd2f4..b19ccc3b2b 100644
--- a/actionpack/lib/action_controller/assertions.rb
+++ b/actionpack/lib/action_controller/assertions.rb
@@ -78,8 +78,10 @@ module Test #:nodoc:
if options.is_a?(Symbol)
@response.redirected_to == options
else
- options.keys.all? do |k|
- options[k] == (@response.redirected_to[k].respond_to?(:to_param) ? @response.redirected_to[k].to_param : @response.redirected_to[k] unless @response.redirected_to[k].nil?)
+ options.keys.all? do |k|
+ if k == :controller then options[k] == ActionController::Routing.controller_relative_to(@response.redirected_to[k], @controller.class.controller_path)
+ else options[k] == (@response.redirected_to[k].respond_to?(:to_param) ? @response.redirected_to[k].to_param : @response.redirected_to[k] unless @response.redirected_to[k].nil?)
+ end
end
end
end
diff --git a/actionpack/test/controller/action_pack_assertions_test.rb b/actionpack/test/controller/action_pack_assertions_test.rb
index 4ecf6b6b5b..2cf9c72f45 100644
--- a/actionpack/test/controller/action_pack_assertions_test.rb
+++ b/actionpack/test/controller/action_pack_assertions_test.rb
@@ -79,7 +79,17 @@ class ActionPackAssertionsController < ActionController::Base
# 911
def rescue_action(e) raise; end
-
+end
+
+module Admin
+ class InnerModuleController < ActionController::Base
+ def redirect_to_absolute_controller
+ redirect_to :controller => '/content'
+ end
+ def redirect_to_fellow_controller
+ redirect_to :controller => 'user'
+ end
+ end
end
# ---------------------------------------------------------------------------
@@ -392,6 +402,15 @@ class ActionPackAssertionsControllerTest < Test::Unit::TestCase
process :redirect_to_path
assert_redirected_to 'http://test.host/some/path'
end
+
+ def test_redirected_to_with_nested_controller
+ @controller = Admin::InnerModuleController.new
+ get :redirect_to_absolute_controller
+ assert_redirected_to :controller => 'content'
+
+ get :redirect_to_fellow_controller
+ assert_redirected_to :controller => 'admin/user'
+ end
end
class ActionPackHeaderTest < Test::Unit::TestCase
@@ -404,8 +423,8 @@ class ActionPackHeaderTest < Test::Unit::TestCase
assert_equal('text/xml', @controller.headers['Content-Type'])
end
def test_rendering_xml_respects_content_type
- @response.headers['Content-Type'] = 'application/pdf'
- process :hello_xml_world
- assert_equal('application/pdf', @controller.headers['Content-Type'])
+ @response.headers['Content-Type'] = 'application/pdf'
+ process :hello_xml_world
+ assert_equal('application/pdf', @controller.headers['Content-Type'])
end
end