diff options
author | Jeremy Kemper <jeremy@bitsweat.net> | 2009-04-22 00:23:47 -0700 |
---|---|---|
committer | Jeremy Kemper <jeremy@bitsweat.net> | 2009-04-22 00:23:47 -0700 |
commit | e9ed44af88fcffe75e1658e963e6dfb26b31edbe (patch) | |
tree | 1a3c641f02b9b0b0bda0c85574f45c052ec62a03 /actionpack/test | |
parent | 5afc2abee66cda565f2cb890fe11c3d8e918d882 (diff) | |
parent | 6ee8329af6cd0c62945f216fae80fdd1679d477d (diff) | |
download | rails-e9ed44af88fcffe75e1658e963e6dfb26b31edbe.tar.gz rails-e9ed44af88fcffe75e1658e963e6dfb26b31edbe.tar.bz2 rails-e9ed44af88fcffe75e1658e963e6dfb26b31edbe.zip |
Merge branch 'master' into cherry
Diffstat (limited to 'actionpack/test')
-rw-r--r-- | actionpack/test/controller/rescue_test.rb | 96 | ||||
-rw-r--r-- | actionpack/test/dispatch/session/cookie_store_test.rb (renamed from actionpack/test/controller/session/cookie_store_test.rb) | 0 | ||||
-rw-r--r-- | actionpack/test/dispatch/session/mem_cache_store_test.rb (renamed from actionpack/test/controller/session/mem_cache_store_test.rb) | 0 | ||||
-rw-r--r-- | actionpack/test/dispatch/session/test_session_test.rb (renamed from actionpack/test/controller/session/test_session_test.rb) | 0 |
4 files changed, 80 insertions, 16 deletions
diff --git a/actionpack/test/controller/rescue_test.rb b/actionpack/test/controller/rescue_test.rb index 741b01caa8..894420a910 100644 --- a/actionpack/test/controller/rescue_test.rb +++ b/actionpack/test/controller/rescue_test.rb @@ -400,22 +400,6 @@ class RescueControllerTest < ActionController::TestCase assert_equal "RescueController::ResourceUnavailableToRescueAsString", @response.body end - def test_rescue_dispatcher_exceptions - env = @request.env - env["action_controller.rescue.request"] = @request - env["action_controller.rescue.response"] = @response - - RescueController.call_with_exception(env, ActionController::RoutingError.new("Route not found")) - assert_equal "no way", @response.body - end - - def test_rescue_dispatcher_exceptions_without_request_set - @request.env['REQUEST_URI'] = '/no_way' - response = RescueController.call_with_exception(@request.env, ActionController::RoutingError.new("Route not found")) - assert_kind_of ActionDispatch::Response, response - assert_equal "no way", response.body - end - protected def with_all_requests_local(local = true) old_local, ActionController::Base.consider_all_requests_local = @@ -537,3 +521,83 @@ class ControllerInheritanceRescueControllerTest < ActionController::TestCase assert_response :created end end + +class ApplicationController < ActionController::Base + rescue_from ActionController::RoutingError do + render :text => 'no way' + end +end + +class RescueTest < ActionController::IntegrationTest + class TestController < ActionController::Base + class RecordInvalid < StandardError + def message + 'invalid' + end + end + rescue_from RecordInvalid, :with => :show_errors + + def foo + render :text => "foo" + end + + def invalid + raise RecordInvalid + end + + def b00m + raise 'b00m' + end + + protected + def show_errors(exception) + render :text => exception.message + end + end + + test 'normal request' do + with_test_routing do + get '/foo' + assert_equal 'foo', response.body + end + end + + test 'rescue exceptions inside controller' do + with_test_routing do + get '/invalid' + assert_equal 'invalid', response.body + end + end + + test 'rescue routing exceptions' do + assert_equal 1, ApplicationController.rescue_handlers.length + + begin + with_test_routing do + get '/no_way' + assert_equal 'no way', response.body + end + ensure + ActionController::Base.rescue_handlers.clear + end + end + + test 'unrescued exception' do + with_test_routing do + get '/b00m' + assert_match(/Action Controller: Exception caught/, response.body) + end + end + + private + def with_test_routing + with_routing do |set| + set.draw do |map| + map.connect 'foo', :controller => "rescue_test/test", :action => 'foo' + map.connect 'invalid', :controller => "rescue_test/test", :action => 'invalid' + map.connect 'b00m', :controller => "rescue_test/test", :action => 'b00m' + end + yield + end + end +end diff --git a/actionpack/test/controller/session/cookie_store_test.rb b/actionpack/test/dispatch/session/cookie_store_test.rb index b9bf8cf411..b9bf8cf411 100644 --- a/actionpack/test/controller/session/cookie_store_test.rb +++ b/actionpack/test/dispatch/session/cookie_store_test.rb diff --git a/actionpack/test/controller/session/mem_cache_store_test.rb b/actionpack/test/dispatch/session/mem_cache_store_test.rb index 7561c93e4a..7561c93e4a 100644 --- a/actionpack/test/controller/session/mem_cache_store_test.rb +++ b/actionpack/test/dispatch/session/mem_cache_store_test.rb diff --git a/actionpack/test/controller/session/test_session_test.rb b/actionpack/test/dispatch/session/test_session_test.rb index de6539e1cc..de6539e1cc 100644 --- a/actionpack/test/controller/session/test_session_test.rb +++ b/actionpack/test/dispatch/session/test_session_test.rb |