1 require '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" }
25 verify
:only => :guarded_by_xhr, :xhr => true,
26 :redirect_to => { :action => "unguarded" }
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 verify
:only => :no_default_action, :params => "santa"
42 verify
:only => :guarded_with_back, :method => :post,
46 render
:text => "#{params[:one]}"
49 def guarded_one_for_named_route_test
50 render
:text => "#{params[:one]}"
53 def guarded_with_flash
54 render
:text => "#{params[:one]}"
58 render
:text => "#{params[:one]}:#{params[:two]}"
61 def guarded_in_session
62 render
:text => "#{session["one
"]}"
66 render
:text => "#{session["one
"]}:#{session["two
"]}"
70 render
:text => "#{session["two
"]}:#{session["one
"]}"
74 render
:text => "#{request.method}"
78 render
:text => "#{request.xhr?}"
81 def guarded_by_not_xhr
82 render
:text => "#{request.xhr?}"
86 render
:text => "#{params[:one]}"
90 render
:nothing => true
94 render
:text => "Was a post!"
98 render
:text => "#{params[:one]}"
101 def no_default_action
106 def rescue_action(e
) raise end
108 def unconditional_redirect
109 redirect_to
:action => "unguarded"
114 @controller = TestController
.new
115 @request = ActionController
::TestRequest.new
116 @response = ActionController
::TestResponse.new
117 ActionController
::Routing::Routes.add_named_route
:foo, '/foo', :controller => 'test', :action => 'foo'
120 def test_using_symbol_back_with_no_referrer
121 assert_raise(ActionController
::RedirectBackError) { get
:guarded_with_back }
124 def test_using_symbol_back_redirects_to_referrer
125 @request.env["HTTP_REFERER"] = "/foo"
126 get
:guarded_with_back
127 assert_redirected_to
'/foo'
130 def test_no_deprecation_warning_for_named_route
131 assert_not_deprecated
do
132 get
:guarded_one_for_named_route_test, :two => "not one"
133 assert_redirected_to
'/foo'
137 def test_guarded_one_with_prereqs
138 get
:guarded_one, :one => "here"
139 assert_equal
"here", @response.body
142 def test_guarded_one_without_prereqs
144 assert_redirected_to
:action => "unguarded"
145 assert_equal
'unguarded', flash
[:error]
148 def test_guarded_with_flash_with_prereqs
149 get
:guarded_with_flash, :one => "here"
150 assert_equal
"here", @response.body
154 def test_guarded_with_flash_without_prereqs
155 get
:guarded_with_flash
156 assert_redirected_to
:action => "unguarded"
157 assert_equal
"prereqs failed", flash
[:notice]
160 def test_guarded_two_with_prereqs
161 get
:guarded_two, :one => "here", :two => "there"
162 assert_equal
"here:there", @response.body
165 def test_guarded_two_without_prereqs_one
166 get
:guarded_two, :two => "there"
167 assert_redirected_to
:action => "unguarded"
170 def test_guarded_two_without_prereqs_two
171 get
:guarded_two, :one => "here"
172 assert_redirected_to
:action => "unguarded"
175 def test_guarded_two_without_prereqs_both
177 assert_redirected_to
:action => "unguarded"
180 def test_unguarded_with_params
181 get
:unguarded, :one => "here"
182 assert_equal
"here", @response.body
185 def test_unguarded_without_params
187 assert_equal
"", @response.body
190 def test_guarded_in_session_with_prereqs
191 get
:guarded_in_session, {}, "one" => "here"
192 assert_equal
"here", @response.body
195 def test_guarded_in_session_without_prereqs
196 get
:guarded_in_session
197 assert_redirected_to
:action => "unguarded"
200 def test_multi_one_with_prereqs
201 get
:multi_one, {}, "one" => "here", "two" => "there"
202 assert_equal
"here:there", @response.body
205 def test_multi_one_without_prereqs
207 assert_redirected_to
:action => "unguarded"
210 def test_multi_two_with_prereqs
211 get
:multi_two, {}, "one" => "here", "two" => "there"
212 assert_equal
"there:here", @response.body
215 def test_multi_two_without_prereqs
217 assert_redirected_to
:action => "unguarded"
220 def test_guarded_by_method_with_prereqs
221 post
:guarded_by_method
222 assert_equal
"post", @response.body
225 def test_guarded_by_method_without_prereqs
226 get
:guarded_by_method
227 assert_redirected_to
:action => "unguarded"
230 def test_guarded_by_xhr_with_prereqs
231 xhr
:post, :guarded_by_xhr
232 assert_equal
"true", @response.body
235 def test_guarded_by_xhr_without_prereqs
237 assert_redirected_to
:action => "unguarded"
240 def test_guarded_by_not_xhr_with_prereqs
241 get
:guarded_by_not_xhr
242 assert_equal
"false", @response.body
245 def test_guarded_by_not_xhr_without_prereqs
246 xhr
:post, :guarded_by_not_xhr
247 assert_redirected_to
:action => "unguarded"
250 def test_guarded_post_and_calls_render_succeeds
252 assert_equal
"Was a post!", @response.body
255 def test_default_failure_should_be_a_bad_request
256 post
:no_default_action
257 assert_response
:bad_request
260 def test_guarded_post_and_calls_render_fails_and_sets_allow_header
263 assert_equal
"Must be post", @response.body
264 assert_equal
"POST", @response.headers
["Allow"]
267 def test_second_redirect
268 assert_nothing_raised
{ get
:two_redirects }