Merge remote branch 'apmon/openID' 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', {'user[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', {'user[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 :success
37         assert_template 'login'
38   end
39
40   def test_login_openid_invalid_provider
41     get '/login'
42     assert_response :redirect
43     assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
44     follow_redirect!
45     assert_response :success
46         #Use a different port that doesn't have the OpenID provider running on to test an invalid openID
47     post '/login', {'user[openid_url]' => "http://localhost:1124/john.doe", :referer => "/diary"}
48     assert_response :success
49         assert_template 'login'
50   end
51
52   def test_login_openid_invalid_url
53     get '/login'
54     assert_response :redirect
55     assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
56     follow_redirect!
57     assert_response :success
58         #Use a url with an invalid protocol to make sure it handles that correctly too
59     post '/login', {'user[openid_url]' => "htt://localhost:1123/john.doe", :referer => "/diary"}
60     assert_response :success
61         assert_template 'login'
62   end
63
64   def test_login_openid_unknown
65     get '/login'
66     assert_response :redirect
67     assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
68     follow_redirect!
69     assert_response :success
70     post '/login', {'user[openid_url]' => "http://localhost:1123/john.doe?openid.success=true_somethingelse", :referer => "/diary"}
71     assert_response :redirect
72
73         res = openid_request(@response.redirected_to)
74         res2 = post '/login', res
75
76     assert_response :redirect
77     follow_redirect!
78         assert_response :success
79         assert_template 'user/new'
80   end
81 end