diff options
author | Manfred Stienstra <manfred@fngtps.com> | 2009-04-07 09:16:48 -0500 |
---|---|---|
committer | Joshua Peek <josh@joshpeek.com> | 2009-04-07 09:16:48 -0500 |
commit | f209d3898fbd866e1405861319b85c97674a0508 (patch) | |
tree | f3ed665dadbd37693f46ce1a5d0f98b8400280b6 /railties/test/rails_info_controller_test.rb | |
parent | 660fc93942697b74a8093d4d5338d1ced25cbe7f (diff) | |
download | rails-f209d3898fbd866e1405861319b85c97674a0508.tar.gz rails-f209d3898fbd866e1405861319b85c97674a0508.tar.bz2 rails-f209d3898fbd866e1405861319b85c97674a0508.zip |
Improve tests and code for Rails::InfoController and Rails::Info [#2411 state:resolved]
- Refactor Rails::InfoController tests.
- Return forbidden status from the InfoController for remote requests instead of a 500.
- Add tests for displaying middleware in Rails::Info.
Signed-off-by: Joshua Peek <josh@joshpeek.com>
Diffstat (limited to 'railties/test/rails_info_controller_test.rb')
-rw-r--r-- | railties/test/rails_info_controller_test.rb | 54 |
1 files changed, 24 insertions, 30 deletions
diff --git a/railties/test/rails_info_controller_test.rb b/railties/test/rails_info_controller_test.rb index e274e1aa6e..607ece99a9 100644 --- a/railties/test/rails_info_controller_test.rb +++ b/railties/test/rails_info_controller_test.rb @@ -2,51 +2,45 @@ require 'abstract_unit' require 'action_controller' require 'action_controller/test_process' -module Rails; end require 'rails/info' require 'rails/info_controller' -class Rails::InfoController < ActionController::Base - @local_request = false - class << self - cattr_accessor :local_request - end - - # Re-raise errors caught by the controller. - def rescue_action(e) raise e end; - -protected - def local_request? - self.class.local_request - end -end - ActionController::Routing::Routes.draw do |map| map.connect ':controller/:action/:id' end -class Rails::InfoControllerTest < ActionController::TestCase +class InfoControllerTest < ActionController::TestCase + tests Rails::InfoController + def setup - @controller = Rails::InfoController.new - @request = ActionController::TestRequest.new - @response = ActionController::TestResponse.new + @controller.stubs(:consider_all_requests_local => false, :local_request? => true) + end + + test "info controller does not allow remote requests" do + @controller.stubs(:consider_all_requests_local => false, :local_request? => false) + get :properties + assert_response :forbidden + end - ActionController::Base.consider_all_requests_local = true + test "info controller renders an error message when request was forbidden" do + @controller.stubs(:consider_all_requests_local => false, :local_request? => false) + get :properties + assert_select 'p' + end + + test "info controller allows requests when all requests are considered local" do + @controller.stubs(:consider_all_requests_local => true, :local_request? => false) + get :properties + assert_response :success end - def test_rails_info_properties_table_rendered_for_local_request - Rails::InfoController.local_request = true + test "info controller allows local requests" do get :properties - assert_tag :tag => 'table' assert_response :success end - - def test_rails_info_properties_error_rendered_for_non_local_request - Rails::InfoController.local_request = false - ActionController::Base.consider_all_requests_local = false + test "info controller renders a table with properties" do get :properties - assert_tag :tag => 'p' - assert_response 500 + assert_select 'table' end end |