3 class UserLoginTest < ActionDispatch::IntegrationTest
7 OmniAuth.config.test_mode = true
11 OmniAuth.config.mock_auth[:openid] = nil
12 OmniAuth.config.test_mode = false
15 def test_login_email_password_normal
16 user = users(:normal_user)
19 assert_response :redirect
20 assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
22 assert_response :success
24 post "/login", :username => user.email, :password => "wrong", :referer => "/history"
25 assert_response :redirect
27 assert_response :success
28 assert_template "login"
30 post "/login", :username => user.email, :password => "test", :referer => "/history"
31 assert_response :redirect
33 assert_response :success
34 assert_template "changeset/history"
35 assert_select "span.username", "test"
38 def test_login_email_password_normal_upcase
39 user = users(:normal_user)
42 assert_response :redirect
43 assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
45 assert_response :success
47 post "/login", :username => user.email.upcase, :password => "wrong", :referer => "/history"
48 assert_response :redirect
50 assert_response :success
51 assert_template "login"
53 post "/login", :username => user.email.upcase, :password => "test", :referer => "/history"
54 assert_response :redirect
56 assert_response :success
57 assert_template "changeset/history"
58 assert_select "span.username", "TEST"
61 def test_login_email_password_normal_titlecase
62 user = users(:normal_user)
65 assert_response :redirect
66 assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
68 assert_response :success
70 post "/login", :username => user.email.titlecase, :password => "wrong", :referer => "/history"
71 assert_response :redirect
73 assert_response :success
74 assert_template "login"
76 post "/login", :username => user.email.titlecase, :password => "test", :referer => "/history"
77 assert_response :redirect
79 assert_response :success
80 assert_template "login"
81 assert_select "span.username", false
84 def test_login_email_password_public
85 user = users(:public_user)
88 assert_response :redirect
89 assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
91 assert_response :success
93 post "/login", :username => user.email, :password => "wrong", :referer => "/history"
94 assert_response :redirect
96 assert_response :success
97 assert_template "login"
99 post "/login", :username => user.email, :password => "test", :referer => "/history"
100 assert_response :redirect
102 assert_response :success
103 assert_template "changeset/history"
104 assert_select "span.username", "test2"
107 def test_login_email_password_public_upcase
108 user = users(:public_user)
111 assert_response :redirect
112 assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
114 assert_response :success
116 post "/login", :username => user.email.upcase, :password => "wrong", :referer => "/history"
117 assert_response :redirect
119 assert_response :success
120 assert_template "login"
122 post "/login", :username => user.email.upcase, :password => "test", :referer => "/history"
123 assert_response :redirect
125 assert_response :success
126 assert_template "changeset/history"
127 assert_select "span.username", "test2"
130 def test_login_email_password_public_titlecase
131 user = users(:public_user)
134 assert_response :redirect
135 assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
137 assert_response :success
139 post "/login", :username => user.email.titlecase, :password => "wrong", :referer => "/history"
140 assert_response :redirect
142 assert_response :success
143 assert_template "login"
145 post "/login", :username => user.email.titlecase, :password => "test", :referer => "/history"
146 assert_response :redirect
148 assert_response :success
149 assert_template "changeset/history"
150 assert_select "span.username", "test2"
153 def test_login_email_password_inactive
154 user = users(:inactive_user)
157 assert_response :redirect
158 assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
160 assert_response :success
162 post "/login", :username => user.email, :password => "wrong", :referer => "/history"
163 assert_response :redirect
165 assert_response :success
166 assert_template "login"
168 post "/login", :username => user.email, :password => "test2", :referer => "/history"
169 assert_response :redirect
171 assert_response :success
172 assert_template "confirm"
175 def test_login_email_password_inactive_upcase
176 user = users(:inactive_user)
179 assert_response :redirect
180 assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
182 assert_response :success
184 post "/login", :username => user.email.upcase, :password => "wrong", :referer => "/history"
185 assert_response :redirect
187 assert_response :success
188 assert_template "login"
190 post "/login", :username => user.email.upcase, :password => "test2", :referer => "/history"
191 assert_response :redirect
193 assert_response :success
194 assert_template "confirm"
197 def test_login_email_password_inactive_titlecase
198 user = users(:inactive_user)
201 assert_response :redirect
202 assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
204 assert_response :success
206 post "/login", :username => user.email.titlecase, :password => "wrong", :referer => "/history"
207 assert_response :redirect
209 assert_response :success
210 assert_template "login"
212 post "/login", :username => user.email.titlecase, :password => "test2", :referer => "/history"
213 assert_response :redirect
215 assert_response :success
216 assert_template "confirm"
219 def test_login_email_password_suspended
220 user = users(:suspended_user)
223 assert_response :redirect
224 assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
226 assert_response :success
228 post "/login", :username => user.email, :password => "wrong", :referer => "/history"
229 assert_response :redirect
231 assert_response :success
232 assert_template "login"
234 post "/login", :username => user.email, :password => "test", :referer => "/history"
235 assert_response :redirect
237 assert_response :success
238 assert_template "login"
239 assert_select "div.flash.error", /your account has been suspended/
242 def test_login_email_password_suspended_upcase
243 user = users(:suspended_user)
246 assert_response :redirect
247 assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
249 assert_response :success
251 post "/login", :username => user.email.upcase, :password => "wrong", :referer => "/history"
252 assert_response :redirect
254 assert_response :success
255 assert_template "login"
257 post "/login", :username => user.email.upcase, :password => "test", :referer => "/history"
258 assert_response :redirect
260 assert_response :success
261 assert_template "login"
262 assert_select "div.flash.error", /your account has been suspended/
265 def test_login_email_password_suspended_titlecase
266 user = users(:suspended_user)
269 assert_response :redirect
270 assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
272 assert_response :success
274 post "/login", :username => user.email.titlecase, :password => "wrong", :referer => "/history"
275 assert_response :redirect
277 assert_response :success
278 assert_template "login"
280 post "/login", :username => user.email.titlecase, :password => "test", :referer => "/history"
281 assert_response :redirect
283 assert_response :success
284 assert_template "login"
285 assert_select "div.flash.error", /your account has been suspended/
288 def test_login_email_password_blocked
289 user = users(:blocked_user)
292 assert_response :redirect
293 assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
295 assert_response :success
297 post "/login", :username => user.email, :password => "wrong", :referer => "/history"
298 assert_response :redirect
300 assert_response :success
301 assert_template "login"
303 post "/login", :username => user.email, :password => "test", :referer => "/history"
304 assert_response :redirect
306 assert_response :success
307 assert_template "user_blocks/show"
310 def test_login_email_password_blocked_upcase
311 user = users(:blocked_user)
314 assert_response :redirect
315 assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
317 assert_response :success
319 post "/login", :username => user.email.upcase, :password => "wrong", :referer => "/history"
320 assert_response :redirect
322 assert_response :success
323 assert_template "login"
325 post "/login", :username => user.email.upcase, :password => "test", :referer => "/history"
326 assert_response :redirect
328 assert_response :success
329 assert_template "user_blocks/show"
332 def test_login_email_password_blocked_titlecase
333 user = users(:blocked_user)
336 assert_response :redirect
337 assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
339 assert_response :success
341 post "/login", :username => user.email.titlecase, :password => "wrong", :referer => "/history"
342 assert_response :redirect
344 assert_response :success
345 assert_template "login"
347 post "/login", :username => user.email.titlecase, :password => "test", :referer => "/history"
348 assert_response :redirect
350 assert_response :success
351 assert_template "user_blocks/show"
354 def test_login_username_password_normal
355 user = users(:normal_user)
358 assert_response :redirect
359 assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
361 assert_response :success
363 post "/login", :username => user.display_name, :password => "wrong", :referer => "/history"
364 assert_response :redirect
366 assert_response :success
367 assert_template "login"
369 post "/login", :username => user.display_name, :password => "test", :referer => "/history"
370 assert_response :redirect
372 assert_response :success
373 assert_template "changeset/history"
374 assert_select "span.username", "test"
377 def test_login_username_password_normal_upcase
378 user = users(:normal_user)
381 assert_response :redirect
382 assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
384 assert_response :success
386 post "/login", :username => user.display_name.upcase, :password => "wrong", :referer => "/history"
387 assert_response :redirect
389 assert_response :success
390 assert_template "login"
392 post "/login", :username => user.display_name.upcase, :password => "test", :referer => "/history"
393 assert_response :redirect
395 assert_response :success
396 assert_template "changeset/history"
397 assert_select "span.username", "TEST"
400 def test_login_username_password_normal_titlecase
401 user = users(:normal_user)
404 assert_response :redirect
405 assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
407 assert_response :success
409 post "/login", :username => user.display_name.titlecase, :password => "wrong", :referer => "/history"
410 assert_response :redirect
412 assert_response :success
413 assert_template "login"
415 post "/login", :username => user.display_name.titlecase, :password => "test", :referer => "/history"
416 assert_response :redirect
418 assert_response :success
419 assert_template "login"
420 assert_select "span.username", false
423 def test_login_username_password_public
424 user = users(:public_user)
427 assert_response :redirect
428 assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
430 assert_response :success
432 post "/login", :username => user.display_name, :password => "wrong", :referer => "/history"
433 assert_response :redirect
435 assert_response :success
436 assert_template "login"
438 post "/login", :username => user.display_name, :password => "test", :referer => "/history"
439 assert_response :redirect
441 assert_response :success
442 assert_template "changeset/history"
443 assert_select "span.username", "test2"
446 def test_login_username_password_public_upcase
447 user = users(:public_user)
450 assert_response :redirect
451 assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
453 assert_response :success
455 post "/login", :username => user.display_name.upcase, :password => "wrong", :referer => "/history"
456 assert_response :redirect
458 assert_response :success
459 assert_template "login"
461 post "/login", :username => user.display_name.upcase, :password => "test", :referer => "/history"
462 assert_response :redirect
464 assert_response :success
465 assert_template "changeset/history"
466 assert_select "span.username", "test2"
469 def test_login_username_password_public_titlecase
470 user = users(:public_user)
473 assert_response :redirect
474 assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
476 assert_response :success
478 post "/login", :username => user.display_name.titlecase, :password => "wrong", :referer => "/history"
479 assert_response :redirect
481 assert_response :success
482 assert_template "login"
484 post "/login", :username => user.display_name.titlecase, :password => "test", :referer => "/history"
485 assert_response :redirect
487 assert_response :success
488 assert_template "changeset/history"
489 assert_select "span.username", "test2"
492 def test_login_username_password_inactive
493 user = users(:inactive_user)
496 assert_response :redirect
497 assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
499 assert_response :success
501 post "/login", :username => user.display_name, :password => "wrong", :referer => "/history"
502 assert_response :redirect
504 assert_response :success
505 assert_template "login"
507 post "/login", :username => user.display_name, :password => "test2", :referer => "/history"
508 assert_response :redirect
510 assert_response :success
511 assert_template "confirm"
514 def test_login_username_password_inactive_upcase
515 user = users(:inactive_user)
518 assert_response :redirect
519 assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
521 assert_response :success
523 post "/login", :username => user.display_name.upcase, :password => "wrong", :referer => "/history"
524 assert_response :redirect
526 assert_response :success
527 assert_template "login"
529 post "/login", :username => user.display_name.upcase, :password => "test2", :referer => "/history"
530 assert_response :redirect
532 assert_response :success
533 assert_template "confirm"
536 def test_login_username_password_inactive_titlecase
537 user = users(:inactive_user)
540 assert_response :redirect
541 assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
543 assert_response :success
545 post "/login", :username => user.display_name.titlecase, :password => "wrong", :referer => "/history"
546 assert_response :redirect
548 assert_response :success
549 assert_template "login"
551 post "/login", :username => user.display_name.titlecase, :password => "test2", :referer => "/history"
552 assert_response :redirect
554 assert_response :success
555 assert_template "confirm"
558 def test_login_username_password_suspended
559 user = users(:suspended_user)
562 assert_response :redirect
563 assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
565 assert_response :success
567 post "/login", :username => user.display_name, :password => "wrong", :referer => "/history"
568 assert_response :redirect
570 assert_response :success
571 assert_template "login"
573 post "/login", :username => user.display_name, :password => "test", :referer => "/history"
574 assert_response :redirect
576 assert_response :success
577 assert_template "login"
578 assert_select "div.flash.error", /your account has been suspended/
581 def test_login_username_password_suspended_upcase
582 user = users(:suspended_user)
585 assert_response :redirect
586 assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
588 assert_response :success
590 post "/login", :username => user.display_name.upcase, :password => "wrong", :referer => "/history"
591 assert_response :redirect
593 assert_response :success
594 assert_template "login"
596 post "/login", :username => user.display_name.upcase, :password => "test", :referer => "/history"
597 assert_response :redirect
599 assert_response :success
600 assert_template "login"
601 assert_select "div.flash.error", /your account has been suspended/
604 def test_login_username_password_suspended_titlecase
605 user = users(:suspended_user)
608 assert_response :redirect
609 assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
611 assert_response :success
613 post "/login", :username => user.display_name.titlecase, :password => "wrong", :referer => "/history"
614 assert_response :redirect
616 assert_response :success
617 assert_template "login"
619 post "/login", :username => user.display_name.titlecase, :password => "test", :referer => "/history"
620 assert_response :redirect
622 assert_response :success
623 assert_template "login"
624 assert_select "div.flash.error", /your account has been suspended/
627 def test_login_username_password_blocked
628 user = users(:blocked_user)
631 assert_response :redirect
632 assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
634 assert_response :success
636 post "/login", :username => user.display_name, :password => "wrong", :referer => "/history"
637 assert_response :redirect
639 assert_response :success
640 assert_template "login"
642 post "/login", :username => user.display_name, :password => "test", :referer => "/history"
643 assert_response :redirect
645 assert_response :success
646 assert_template "user_blocks/show"
649 def test_login_username_password_blocked_upcase
650 user = users(:blocked_user)
653 assert_response :redirect
654 assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
656 assert_response :success
658 post "/login", :username => user.display_name.upcase, :password => "wrong", :referer => "/history"
659 assert_response :redirect
661 assert_response :success
662 assert_template "login"
664 post "/login", :username => user.display_name.upcase, :password => "test", :referer => "/history"
665 assert_response :redirect
667 assert_response :success
668 assert_template "user_blocks/show"
671 def test_login_username_password_blocked_titlecase
672 user = users(:blocked_user)
675 assert_response :redirect
676 assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
678 assert_response :success
680 post "/login", :username => user.display_name.titlecase, :password => "wrong", :referer => "/history"
681 assert_response :redirect
683 assert_response :success
684 assert_template "login"
686 post "/login", :username => user.display_name.titlecase, :password => "test", :referer => "/history"
687 assert_response :redirect
689 assert_response :success
690 assert_template "user_blocks/show"
693 def test_login_email_password_remember_me
694 user = users(:normal_user)
697 assert_response :redirect
698 assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
700 assert_response :success
702 post "/login", :username => user.email, :password => "test", :remember_me => true, :referer => "/history"
703 assert_response :redirect
705 assert_response :success
706 assert_template "changeset/history"
707 assert_select "span.username", "test"
708 assert session.key?(:_remember_for)
711 def test_login_username_password_remember_me
712 user = users(:normal_user)
715 assert_response :redirect
716 assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
718 assert_response :success
720 post "/login", :username => user.display_name, :password => "test", :remember_me => true, :referer => "/history"
721 assert_response :redirect
723 assert_response :success
724 assert_template "changeset/history"
725 assert_select "span.username", "test"
726 assert session.key?(:_remember_for)
729 def test_login_openid_success
730 OmniAuth.config.add_mock(:openid, :uid => "http://localhost:1123/john.doe")
733 assert_response :redirect
734 assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
736 assert_response :success
737 post "/login", :openid_url => "http://localhost:1123/john.doe", :referer => "/history"
738 assert_response :redirect
739 assert_redirected_to auth_path(:provider => "openid", :openid_url => "http://localhost:1123/john.doe", :origin => "/login")
741 assert_response :redirect
742 assert_redirected_to auth_success_path(:provider => "openid", :openid_url => "http://localhost:1123/john.doe", :origin => "/login")
744 assert_response :redirect
746 assert_response :success
747 assert_template "changeset/history"
748 assert_select "span.username", "openIDuser"
751 def test_login_openid_remember_me
752 OmniAuth.config.add_mock(:openid, :uid => "http://localhost:1123/john.doe")
755 assert_response :redirect
756 assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
758 assert_response :success
759 post "/login", :openid_url => "http://localhost:1123/john.doe", :remember_me_openid => true, :referer => "/history"
760 assert_response :redirect
761 assert_redirected_to auth_path(:provider => "openid", :openid_url => "http://localhost:1123/john.doe", :origin => "/login")
763 assert_response :redirect
764 assert_redirected_to auth_success_path(:provider => "openid", :openid_url => "http://localhost:1123/john.doe", :origin => "/login")
766 assert_response :redirect
768 assert_response :success
769 assert_template "changeset/history"
770 assert_select "span.username", "openIDuser"
771 assert session.key?(:_remember_for)
774 def test_login_openid_connection_failed
775 OmniAuth.config.mock_auth[:openid] = :connection_failed
778 assert_response :redirect
779 assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
781 assert_response :success
782 post "/login", :openid_url => "http://localhost:1123/john.doe", :referer => "/history"
783 assert_response :redirect
784 assert_redirected_to auth_path(:provider => "openid", :openid_url => "http://localhost:1123/john.doe", :origin => "/login")
786 assert_response :redirect
787 assert_redirected_to auth_success_path(:provider => "openid", :openid_url => "http://localhost:1123/john.doe", :origin => "/login")
789 assert_response :redirect
790 assert_redirected_to auth_failure_path(:strategy => "openid", :message => "connection_failed", :origin => "/login")
792 assert_response :redirect
794 assert_response :success
795 assert_template "login"
796 assert_select "div.flash.error", "Connection to authentication provider failed"
797 assert_select "span.username", false
800 def test_login_openid_invalid_credentials
801 OmniAuth.config.mock_auth[:openid] = :invalid_credentials
804 assert_response :redirect
805 assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
807 assert_response :success
808 post "/login", :openid_url => "http://localhost:1123/john.doe", :referer => "/history"
809 assert_response :redirect
810 assert_redirected_to auth_path(:provider => "openid", :openid_url => "http://localhost:1123/john.doe", :origin => "/login")
812 assert_response :redirect
813 assert_redirected_to auth_success_path(:provider => "openid", :openid_url => "http://localhost:1123/john.doe", :origin => "/login")
815 assert_response :redirect
816 assert_redirected_to auth_failure_path(:strategy => "openid", :message => "invalid_credentials", :origin => "/login")
818 assert_response :redirect
820 assert_response :success
821 assert_template "login"
822 assert_select "div.flash.error", "Invalid authentication credentials"
823 assert_select "span.username", false
826 def test_login_openid_unknown
827 OmniAuth.config.add_mock(:openid, :uid => "http://localhost:1123/fred.bloggs")
830 assert_response :redirect
831 assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
833 assert_response :success
834 post "/login", :openid_url => "http://localhost:1123/fred.bloggs", :referer => "/diary"
835 assert_response :redirect
836 assert_redirected_to auth_path(:provider => "openid", :openid_url => "http://localhost:1123/fred.bloggs", :origin => "/login")
838 assert_response :redirect
839 assert_redirected_to auth_success_path(:provider => "openid", :openid_url => "http://localhost:1123/fred.bloggs", :origin => "/login")
841 assert_response :redirect
843 assert_response :success
844 assert_template "user/new"
845 assert_select "span.username", false