aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/test/controller/verification_test.rb
diff options
context:
space:
mode:
authorDavid Heinemeier Hansson <david@loudthinking.com>2005-03-26 21:41:10 +0000
committerDavid Heinemeier Hansson <david@loudthinking.com>2005-03-26 21:41:10 +0000
commitf569a14318e25005dfe27a51b3950c426581f18f (patch)
tree0fdd5c87b997ef88b01c248da677f8250855f3cb /actionpack/test/controller/verification_test.rb
parent48b4d28d81f07204b6ae2c5c6b034e9fb9983788 (diff)
downloadrails-f569a14318e25005dfe27a51b3950c426581f18f.tar.gz
rails-f569a14318e25005dfe27a51b3950c426581f18f.tar.bz2
rails-f569a14318e25005dfe27a51b3950c426581f18f.zip
Added Verifications that allows you to specify preconditions to actions in form of statements like <tt>verify :only => :update_post, :params => "admin_privileges", :redirect_to => { :action => "settings" }</tt>, which ensure that the update_post action is only called if admin_privileges is available as a parameter -- otherwise the user is redirected to settings. #897 [Jamis Buck]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1008 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'actionpack/test/controller/verification_test.rb')
-rw-r--r--actionpack/test/controller/verification_test.rb137
1 files changed, 137 insertions, 0 deletions
diff --git a/actionpack/test/controller/verification_test.rb b/actionpack/test/controller/verification_test.rb
new file mode 100644
index 0000000000..07dc73eb1c
--- /dev/null
+++ b/actionpack/test/controller/verification_test.rb
@@ -0,0 +1,137 @@
+require File.dirname(__FILE__) + '/../abstract_unit'
+
+class VerificationTest < Test::Unit::TestCase
+ class TestController < ActionController::Base
+ verify :only => :guarded_one, :params => "one",
+ :redirect_to => { :action => "unguarded" }
+
+ verify :only => :guarded_two, :params => %w( one two ),
+ :redirect_to => { :action => "unguarded" }
+
+ verify :only => :guarded_with_flash, :params => "one",
+ :add_flash => { "notice" => "prereqs failed" },
+ :redirect_to => { :action => "unguarded" }
+
+ verify :only => :guarded_in_session, :session => "one",
+ :redirect_to => { :action => "unguarded" }
+
+ verify :only => [:multi_one, :multi_two], :session => %w( one two ),
+ :redirect_to => { :action => "unguarded" }
+
+ def guarded_one
+ render_text "#{@params["one"]}"
+ end
+
+ def guarded_with_flash
+ render_text "#{@params["one"]}"
+ end
+
+ def guarded_two
+ render_text "#{@params["one"]}:#{@params["two"]}"
+ end
+
+ def guarded_in_session
+ render_text "#{@session["one"]}"
+ end
+
+ def multi_one
+ render_text "#{@session["one"]}:#{@session["two"]}"
+ end
+
+ def multi_two
+ render_text "#{@session["two"]}:#{@session["one"]}"
+ end
+
+ def unguarded
+ render_text "#{@params["one"]}"
+ end
+ end
+
+ def setup
+ @controller = TestController.new
+ @request = ActionController::TestRequest.new
+ @response = ActionController::TestResponse.new
+ end
+
+ def test_guarded_one_with_prereqs
+ process "guarded_one", "one" => "here"
+ assert_equal "here", @response.body
+ end
+
+ def test_guarded_one_without_prereqs
+ process "guarded_one"
+ assert_redirected_to :action => "unguarded"
+ end
+
+ def test_guarded_with_flash_with_prereqs
+ process "guarded_with_flash", "one" => "here"
+ assert_equal "here", @response.body
+ assert_flash_empty
+ end
+
+ def test_guarded_with_flash_without_prereqs
+ process "guarded_with_flash"
+ assert_redirected_to :action => "unguarded"
+ assert_flash_equal "prereqs failed", "notice"
+ end
+
+ def test_guarded_two_with_prereqs
+ process "guarded_two", "one" => "here", "two" => "there"
+ assert_equal "here:there", @response.body
+ end
+
+ def test_guarded_two_without_prereqs_one
+ process "guarded_two", "two" => "there"
+ assert_redirected_to :action => "unguarded"
+ end
+
+ def test_guarded_two_without_prereqs_two
+ process "guarded_two", "one" => "here"
+ assert_redirected_to :action => "unguarded"
+ end
+
+ def test_guarded_two_without_prereqs_both
+ process "guarded_two"
+ assert_redirected_to :action => "unguarded"
+ end
+
+ def test_unguarded_with_params
+ process "unguarded", "one" => "here"
+ assert_equal "here", @response.body
+ end
+
+ def test_unguarded_without_params
+ process "unguarded"
+ assert_equal "", @response.body
+ end
+
+ def test_guarded_in_session_with_prereqs
+ process "guarded_in_session", {}, "one" => "here"
+ assert_equal "here", @response.body
+ end
+
+ def test_guarded_in_session_without_prereqs
+ process "guarded_in_session"
+ assert_redirected_to :action => "unguarded"
+ end
+
+ def test_multi_one_with_prereqs
+ process "multi_one", {}, "one" => "here", "two" => "there"
+ assert_equal "here:there", @response.body
+ end
+
+ def test_multi_one_without_prereqs
+ process "multi_one"
+ assert_redirected_to :action => "unguarded"
+ end
+
+ def test_multi_two_with_prereqs
+ process "multi_two", {}, "one" => "here", "two" => "there"
+ assert_equal "there:here", @response.body
+ end
+
+ def test_multi_two_without_prereqs
+ process "multi_two"
+ assert_redirected_to :action => "unguarded"
+ end
+end