Start ROTS for user login tests as well as creation tests
[rails.git] / test / integration / user_login_test.rb
1 require File.dirname(__FILE__) + '/../test_helper'
2
3 class UserLoginTest < ActionController::IntegrationTest
4   fixtures :users
5
6   def setup
7     openid_setup
8   end
9
10   def test_login_openid_success
11     get '/login'
12     assert_response :redirect
13     assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
14     follow_redirect!
15     assert_response :success
16     post '/login', {'openid_url' => "http://localhost:1123/john.doe?openid.success=true", :referer => "/browse"}
17     assert_response :redirect
18
19     res = openid_request(@response.redirected_to)
20     res2 = post '/login', res
21
22     assert_response :redirect
23     follow_redirect!
24     assert_response :success
25     assert_template 'changeset/list'
26   end
27
28   def test_login_openid_cancel
29     get '/login'
30     assert_response :redirect
31     assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
32     follow_redirect!
33     assert_response :success
34     post '/login', {'openid_url' => "http://localhost:1123/john.doe", :referer => "/diary"}
35     assert_response :redirect
36
37     res = openid_request(@response.redirected_to)
38     post '/login', res
39
40     assert_response :redirect
41     follow_redirect!
42     assert_response :success
43     assert_template 'login'
44   end
45
46   def test_login_openid_invalid_provider
47     get '/login'
48     assert_response :redirect
49     assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
50     follow_redirect!
51     assert_response :success
52     #Use a different port that doesn't have the OpenID provider running on to test an invalid openID
53     post '/login', {'openid_url' => "http://localhost:1124/john.doe", :referer => "/diary"}
54     assert_response :redirect
55     follow_redirect!
56     assert_response :success
57     assert_template 'login'
58   end
59
60   def test_login_openid_invalid_url
61     get '/login'
62     assert_response :redirect
63     assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
64     follow_redirect!
65     assert_response :success
66     #Use a url with an invalid protocol to make sure it handles that correctly too
67     post '/login', {'openid_url' => "htt://localhost:1123/john.doe", :referer => "/diary"}
68     assert_response :redirect
69     follow_redirect!
70     assert_response :success
71     assert_template 'login'
72   end
73
74   def test_login_openid_unknown
75     get '/login'
76     assert_response :redirect
77     assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
78     follow_redirect!
79     assert_response :success
80     post '/login', {'openid_url' => "http://localhost:1123/john.doe?openid.success=true_somethingelse", :referer => "/diary"}
81     assert_response :redirect
82
83     res = openid_request(@response.redirected_to)
84     res2 = post '/login', res
85
86     assert_response :redirect
87     follow_redirect!
88     assert_response :success
89     assert_template 'user/new'
90   end
91 end