Merge branch 'master' into openid
[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 test_login_openid_success
7     get '/login'
8     assert_response :redirect
9     assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
10     follow_redirect!
11     assert_response :success
12     post '/login', {'openid_url' => "http://localhost:1123/john.doe?openid.success=true", :referer => "/browse"}
13     assert_response :redirect
14
15     res = openid_request(@response.redirected_to)
16     res2 = post '/login', res
17
18     assert_response :redirect
19     follow_redirect!
20     assert_response :success
21     assert_template 'changeset/list'
22   end
23
24   def test_login_openid_cancel
25     get '/login'
26     assert_response :redirect
27     assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
28     follow_redirect!
29     assert_response :success
30     post '/login', {'openid_url' => "http://localhost:1123/john.doe", :referer => "/diary"}
31     assert_response :redirect
32
33     res = openid_request(@response.redirected_to)
34     post '/login', res
35
36     assert_response :redirect
37     follow_redirect!
38     assert_response :success
39     assert_template 'login'
40   end
41
42   def test_login_openid_invalid_provider
43     get '/login'
44     assert_response :redirect
45     assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
46     follow_redirect!
47     assert_response :success
48     #Use a different port that doesn't have the OpenID provider running on to test an invalid openID
49     post '/login', {'openid_url' => "http://localhost:1124/john.doe", :referer => "/diary"}
50     assert_response :redirect
51     follow_redirect!
52     assert_response :success
53     assert_template 'login'
54   end
55
56   def test_login_openid_invalid_url
57     get '/login'
58     assert_response :redirect
59     assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
60     follow_redirect!
61     assert_response :success
62     #Use a url with an invalid protocol to make sure it handles that correctly too
63     post '/login', {'openid_url' => "htt://localhost:1123/john.doe", :referer => "/diary"}
64     assert_response :redirect
65     follow_redirect!
66     assert_response :success
67     assert_template 'login'
68   end
69
70   def test_login_openid_unknown
71     get '/login'
72     assert_response :redirect
73     assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
74     follow_redirect!
75     assert_response :success
76     post '/login', {'openid_url' => "http://localhost:1123/john.doe?openid.success=true_somethingelse", :referer => "/diary"}
77     assert_response :redirect
78
79     res = openid_request(@response.redirected_to)
80     res2 = post '/login', res
81
82     assert_response :redirect
83     follow_redirect!
84     assert_response :success
85     assert_template 'user/new'
86   end
87 end