diff options
Diffstat (limited to 'actionpack/test')
-rw-r--r-- | actionpack/test/controller/base_test.rb | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/actionpack/test/controller/base_test.rb b/actionpack/test/controller/base_test.rb index 588b9f60af..9cf035d1cb 100644 --- a/actionpack/test/controller/base_test.rb +++ b/actionpack/test/controller/base_test.rb @@ -12,6 +12,7 @@ module Submodule hide_action :hidden_action def hidden_action + raise "Noooo!" end def another_hidden_action @@ -33,6 +34,21 @@ class NonEmptyController < ActionController::Base end end +class MethodMissingController < ActionController::Base + + hide_action :shouldnt_be_called + def shouldnt_be_called + raise "NO WAY!" + end + +protected + + def method_missing(selector) + render :text => selector.to_s + end + +end + class ControllerClassTests < Test::Unit::TestCase def test_controller_path assert_equal 'empty', EmptyController.controller_path @@ -64,4 +80,46 @@ class ControllerInstanceTests < Test::Unit::TestCase assert_equal Set.new('public_action'), c.send(:action_methods), "#{c.controller_path} should not be empty!" end end + end + + +class PerformActionTest < Test::Unit::TestCase + def use_controller(controller_class) + @controller = controller_class.new + + # enable a logger so that (e.g.) the benchmarking stuff runs, so we can get + # a more accurate simulation of what happens in "real life". + @controller.logger = Logger.new(nil) + + @request = ActionController::TestRequest.new + @response = ActionController::TestResponse.new + + @request.host = "www.nextangle.com" + end + + def test_get_on_priv_should_show_selector + use_controller MethodMissingController + get :shouldnt_be_called + assert_response :success + assert_equal 'shouldnt_be_called', @response.body + end + + def test_method_missing_is_not_an_action_name + use_controller MethodMissingController + assert ! @controller.send(:action_methods).include?('method_missing') + + get :method_missing + assert_response :success + assert_equal 'method_missing', @response.body + end + + def test_get_on_hidden_should_fail + use_controller NonEmptyController + get :hidden_action + assert_response 404 + + get :another_hidden_action + assert_response 404 + end +end
\ No newline at end of file |