Upgraded Rails and RSpec
[monkeycharger.git] / vendor / rails / actionpack / test / controller / verification_test.rb
blobbbcd7d59d8a8f8bfb6d8991eaf74ef1a204235c6
1 require File.dirname(__FILE__) + '/../abstract_unit'
3 class VerificationTest < Test::Unit::TestCase
4   class TestController < ActionController::Base
5     verify :only => :guarded_one, :params => "one",
6            :add_flash => { :error => 'unguarded' },
7            :redirect_to => { :action => "unguarded" }
9     verify :only => :guarded_two, :params => %w( one two ),
10            :redirect_to => { :action => "unguarded" }
12     verify :only => :guarded_with_flash, :params => "one",
13            :add_flash => { :notice => "prereqs failed" },
14            :redirect_to => { :action => "unguarded" }
16     verify :only => :guarded_in_session, :session => "one",
17            :redirect_to => { :action => "unguarded" }
19     verify :only => [:multi_one, :multi_two], :session => %w( one two ),
20            :redirect_to => { :action => "unguarded" }
22     verify :only => :guarded_by_method, :method => :post,
23            :redirect_to => { :action => "unguarded" }
24            
25     verify :only => :guarded_by_xhr, :xhr => true,
26            :redirect_to => { :action => "unguarded" }
27            
28     verify :only => :guarded_by_not_xhr, :xhr => false,
29            :redirect_to => { :action => "unguarded" }
31     before_filter :unconditional_redirect, :only => :two_redirects
32     verify :only => :two_redirects, :method => :post,
33            :redirect_to => { :action => "unguarded" }
35     verify :only => :must_be_post, :method => :post, :render => { :status => 405, :text => "Must be post" }, :add_headers => { "Allow" => "POST" }
37     verify :only => :guarded_one_for_named_route_test, :params => "one",
38            :redirect_to => :foo_url
40     def guarded_one
41       render :text => "#{params[:one]}"
42     end
43     
44     def guarded_one_for_named_route_test
45       render :text => "#{params[:one]}"
46     end
48     def guarded_with_flash
49       render :text => "#{params[:one]}"
50     end
52     def guarded_two
53       render :text => "#{params[:one]}:#{params[:two]}"
54     end
56     def guarded_in_session
57       render :text => "#{session["one"]}"
58     end
60     def multi_one
61       render :text => "#{session["one"]}:#{session["two"]}"
62     end
64     def multi_two
65       render :text => "#{session["two"]}:#{session["one"]}"
66     end
68     def guarded_by_method
69       render :text => "#{request.method}"
70     end
71     
72     def guarded_by_xhr
73       render :text => "#{request.xhr?}"
74     end
75     
76     def guarded_by_not_xhr
77       render :text => "#{request.xhr?}"
78     end
80     def unguarded
81       render :text => "#{params[:one]}"
82     end
84     def two_redirects
85       render :nothing => true
86     end
87     
88     def must_be_post
89       render :text => "Was a post!"
90     end
91     
92     protected
93       def rescue_action(e) raise end
95       def unconditional_redirect
96         redirect_to :action => "unguarded"
97       end
98   end
100   def setup
101     @controller = TestController.new
102     @request    = ActionController::TestRequest.new
103     @response   = ActionController::TestResponse.new
104     ActionController::Routing::Routes.add_named_route :foo, '/foo', :controller => 'test', :action => 'foo'
105   end
106   
107   def test_no_deprecation_warning_for_named_route
108     assert_not_deprecated do
109       get :guarded_one_for_named_route_test, :two => "not one"
110       assert_redirected_to '/foo'
111     end
112   end
114   def test_guarded_one_with_prereqs
115     get :guarded_one, :one => "here"
116     assert_equal "here", @response.body
117   end
119   def test_guarded_one_without_prereqs
120     get :guarded_one
121     assert_redirected_to :action => "unguarded"
122     assert_equal 'unguarded', flash[:error]
123   end
125   def test_guarded_with_flash_with_prereqs
126     get :guarded_with_flash, :one => "here"
127     assert_equal "here", @response.body
128     assert flash.empty?
129   end
131   def test_guarded_with_flash_without_prereqs
132     get :guarded_with_flash
133     assert_redirected_to :action => "unguarded"
134     assert_equal "prereqs failed", flash[:notice]
135   end
137   def test_guarded_two_with_prereqs
138     get :guarded_two, :one => "here", :two => "there"
139     assert_equal "here:there", @response.body
140   end
142   def test_guarded_two_without_prereqs_one
143     get :guarded_two, :two => "there"
144     assert_redirected_to :action => "unguarded"
145   end
147   def test_guarded_two_without_prereqs_two
148     get :guarded_two, :one => "here"
149     assert_redirected_to :action => "unguarded"
150   end
152   def test_guarded_two_without_prereqs_both
153     get :guarded_two
154     assert_redirected_to :action => "unguarded"
155   end
157   def test_unguarded_with_params
158     get :unguarded, :one => "here"
159     assert_equal "here", @response.body
160   end
162   def test_unguarded_without_params
163     get :unguarded
164     assert_equal "", @response.body
165   end
167   def test_guarded_in_session_with_prereqs
168     get :guarded_in_session, {}, "one" => "here"
169     assert_equal "here", @response.body
170   end
172   def test_guarded_in_session_without_prereqs
173     get :guarded_in_session
174     assert_redirected_to :action => "unguarded"
175   end
177   def test_multi_one_with_prereqs
178     get :multi_one, {}, "one" => "here", "two" => "there"
179     assert_equal "here:there", @response.body
180   end
182   def test_multi_one_without_prereqs
183     get :multi_one
184     assert_redirected_to :action => "unguarded"
185   end
187   def test_multi_two_with_prereqs
188     get :multi_two, {}, "one" => "here", "two" => "there"
189     assert_equal "there:here", @response.body
190   end
192   def test_multi_two_without_prereqs
193     get :multi_two
194     assert_redirected_to :action => "unguarded"
195   end
197   def test_guarded_by_method_with_prereqs
198     post :guarded_by_method
199     assert_equal "post", @response.body
200   end
202   def test_guarded_by_method_without_prereqs
203     get :guarded_by_method
204     assert_redirected_to :action => "unguarded"
205   end
206   
207   def test_guarded_by_xhr_with_prereqs
208     xhr :post, :guarded_by_xhr
209     assert_equal "true", @response.body
210   end
211     
212   def test_guarded_by_xhr_without_prereqs
213     get :guarded_by_xhr
214     assert_redirected_to :action => "unguarded"
215   end
216   
217   def test_guarded_by_not_xhr_with_prereqs
218     get :guarded_by_not_xhr
219     assert_equal "false", @response.body
220   end
221     
222   def test_guarded_by_not_xhr_without_prereqs
223     xhr :post, :guarded_by_not_xhr
224     assert_redirected_to :action => "unguarded"
225   end
226   
227   def test_guarded_post_and_calls_render_succeeds
228     post :must_be_post
229     assert_equal "Was a post!", @response.body
230   end
231     
232   def test_guarded_post_and_calls_render_fails_and_sets_allow_header
233     get :must_be_post
234     assert_response 405
235     assert_equal "Must be post", @response.body
236     assert_equal "POST", @response.headers["Allow"]
237   end
238   
239   def test_second_redirect
240     assert_nothing_raised { get :two_redirects }
241   end