comparison test/functional/account_controller_openid_test.rb @ 1526:404aa68d4227

Merge from live branch
author Chris Cannam
date Thu, 11 Sep 2014 12:46:20 +0100
parents dffacf8a6908
children
comparison
equal deleted inserted replaced
1493:a5f2bdf3b486 1526:404aa68d4227
1 # Redmine - project management software 1 # Redmine - project management software
2 # Copyright (C) 2006-2012 Jean-Philippe Lang 2 # Copyright (C) 2006-2014 Jean-Philippe Lang
3 # 3 #
4 # This program is free software; you can redistribute it and/or 4 # This program is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License 5 # modify it under the terms of the GNU General Public License
6 # as published by the Free Software Foundation; either version 2 6 # as published by the Free Software Foundation; either version 2
7 # of the License, or (at your option) any later version. 7 # of the License, or (at your option) any later version.
38 :lastname => 'User', 38 :lastname => 'User',
39 :mail => 'user@somedomain.com', 39 :mail => 'user@somedomain.com',
40 :identity_url => 'http://openid.example.com/good_user') 40 :identity_url => 'http://openid.example.com/good_user')
41 existing_user.login = 'cool_user' 41 existing_user.login = 'cool_user'
42 assert existing_user.save! 42 assert existing_user.save!
43 43
44 post :login, :openid_url => existing_user.identity_url 44 post :login, :openid_url => existing_user.identity_url
45 assert_redirected_to '/my/page' 45 assert_redirected_to '/my/page'
46 end 46 end
47 47
48 def test_login_with_invalid_openid_provider 48 def test_login_with_invalid_openid_provider
49 Setting.self_registration = '0' 49 Setting.self_registration = '0'
50 post :login, :openid_url => 'http;//openid.example.com/good_user' 50 post :login, :openid_url => 'http;//openid.example.com/good_user'
51 assert_redirected_to home_url 51 assert_redirected_to home_url
52 end 52 end
53 53
54 def test_login_with_openid_for_existing_non_active_user 54 def test_login_with_openid_for_existing_non_active_user
55 Setting.self_registration = '2' 55 Setting.self_registration = '2'
56 existing_user = User.new(:firstname => 'Cool', 56 existing_user = User.new(:firstname => 'Cool',
57 :lastname => 'User', 57 :lastname => 'User',
58 :mail => 'user@somedomain.com', 58 :mail => 'user@somedomain.com',
59 :identity_url => 'http://openid.example.com/good_user', 59 :identity_url => 'http://openid.example.com/good_user',
60 :status => User::STATUS_REGISTERED) 60 :status => User::STATUS_REGISTERED)
61 existing_user.login = 'cool_user' 61 existing_user.login = 'cool_user'
62 assert existing_user.save! 62 assert existing_user.save!
63 63
64 post :login, :openid_url => existing_user.identity_url 64 post :login, :openid_url => existing_user.identity_url
65 assert_redirected_to '/login' 65 assert_redirected_to '/login'
66 end 66 end
67 67
68 def test_login_with_openid_with_new_user_created 68 def test_login_with_openid_with_new_user_created
69 Setting.self_registration = '3' 69 Setting.self_registration = '3'
70 post :login, :openid_url => 'http://openid.example.com/good_user' 70 post :login, :openid_url => 'http://openid.example.com/good_user'
71 assert_redirected_to '/my/account' 71 assert_redirected_to '/my/account'
72 user = User.find_by_login('cool_user') 72 user = User.find_by_login('cool_user')
73 assert user 73 assert user
74 assert_equal 'Cool', user.firstname 74 assert_equal 'Cool', user.firstname
75 assert_equal 'User', user.lastname 75 assert_equal 'User', user.lastname
76 end 76 end
77 77
78 def test_login_with_openid_with_new_user_and_self_registration_off 78 def test_login_with_openid_with_new_user_and_self_registration_off
79 Setting.self_registration = '0' 79 Setting.self_registration = '0'
80 post :login, :openid_url => 'http://openid.example.com/good_user' 80 post :login, :openid_url => 'http://openid.example.com/good_user'
81 assert_redirected_to home_url 81 assert_redirected_to home_url
82 user = User.find_by_login('cool_user') 82 user = User.find_by_login('cool_user')
83 assert_nil user 83 assert_nil user
84 end 84 end
85 85
86 def test_login_with_openid_with_new_user_created_with_email_activation_should_have_a_token 86 def test_login_with_openid_with_new_user_created_with_email_activation_should_have_a_token
87 Setting.self_registration = '1' 87 Setting.self_registration = '1'
88 post :login, :openid_url => 'http://openid.example.com/good_user' 88 post :login, :openid_url => 'http://openid.example.com/good_user'
89 assert_redirected_to '/login' 89 assert_redirected_to '/login'
90 user = User.find_by_login('cool_user') 90 user = User.find_by_login('cool_user')
91 assert user 91 assert user
92 92
93 token = Token.find_by_user_id_and_action(user.id, 'register') 93 token = Token.find_by_user_id_and_action(user.id, 'register')
94 assert token 94 assert token
95 end 95 end
96 96
97 def test_login_with_openid_with_new_user_created_with_manual_activation 97 def test_login_with_openid_with_new_user_created_with_manual_activation
98 Setting.self_registration = '2' 98 Setting.self_registration = '2'
99 post :login, :openid_url => 'http://openid.example.com/good_user' 99 post :login, :openid_url => 'http://openid.example.com/good_user'
100 assert_redirected_to '/login' 100 assert_redirected_to '/login'
101 user = User.find_by_login('cool_user') 101 user = User.find_by_login('cool_user')
102 assert user 102 assert user
103 assert_equal User::STATUS_REGISTERED, user.status 103 assert_equal User::STATUS_REGISTERED, user.status
104 end 104 end
105 105
106 def test_login_with_openid_with_new_user_with_conflict_should_register 106 def test_login_with_openid_with_new_user_with_conflict_should_register
107 Setting.self_registration = '3' 107 Setting.self_registration = '3'
108 existing_user = User.new(:firstname => 'Cool', :lastname => 'User', :mail => 'user@somedomain.com') 108 existing_user = User.new(:firstname => 'Cool', :lastname => 'User', :mail => 'user@somedomain.com')
109 existing_user.login = 'cool_user' 109 existing_user.login = 'cool_user'
110 assert existing_user.save! 110 assert existing_user.save!
111 111
112 post :login, :openid_url => 'http://openid.example.com/good_user' 112 post :login, :openid_url => 'http://openid.example.com/good_user'
113 assert_response :success 113 assert_response :success
114 assert_template 'register' 114 assert_template 'register'
115 assert assigns(:user) 115 assert assigns(:user)
116 assert_equal 'http://openid.example.com/good_user', assigns(:user)[:identity_url] 116 assert_equal 'http://openid.example.com/good_user', assigns(:user)[:identity_url]
117 end 117 end
118 118
119 def test_login_with_openid_with_new_user_with_missing_information_should_register 119 def test_login_with_openid_with_new_user_with_missing_information_should_register
120 Setting.self_registration = '3' 120 Setting.self_registration = '3'
121 121
122 post :login, :openid_url => 'http://openid.example.com/good_blank_user' 122 post :login, :openid_url => 'http://openid.example.com/good_blank_user'
123 assert_response :success 123 assert_response :success
124 assert_template 'register' 124 assert_template 'register'
125 assert assigns(:user) 125 assert assigns(:user)
126 assert_equal 'http://openid.example.com/good_blank_user', assigns(:user)[:identity_url] 126 assert_equal 'http://openid.example.com/good_blank_user', assigns(:user)[:identity_url]
127 127
128 assert_select 'input[name=?]', 'user[login]' 128 assert_select 'input[name=?]', 'user[login]'
129 assert_select 'input[name=?]', 'user[password]' 129 assert_select 'input[name=?]', 'user[password]'
130 assert_select 'input[name=?]', 'user[password_confirmation]' 130 assert_select 'input[name=?]', 'user[password_confirmation]'
131 assert_select 'input[name=?][value=?]', 'user[identity_url]', 'http://openid.example.com/good_blank_user' 131 assert_select 'input[name=?][value=?]', 'user[identity_url]', 'http://openid.example.com/good_blank_user'
132 end
133
134 def test_post_login_should_not_verify_token_when_using_open_id
135 ActionController::Base.allow_forgery_protection = true
136 AccountController.any_instance.stubs(:using_open_id?).returns(true)
137 AccountController.any_instance.stubs(:authenticate_with_open_id).returns(true)
138 post :login
139 assert_response 200
140 ensure
141 ActionController::Base.allow_forgery_protection = false
132 end 142 end
133 143
134 def test_register_after_login_failure_should_not_require_user_to_enter_a_password 144 def test_register_after_login_failure_should_not_require_user_to_enter_a_password
135 Setting.self_registration = '3' 145 Setting.self_registration = '3'
136 146
145 :identity_url => 'http://openid.example.com/good_blank_user' 155 :identity_url => 'http://openid.example.com/good_blank_user'
146 } 156 }
147 assert_response 302 157 assert_response 302
148 end 158 end
149 159
150 user = User.first(:order => 'id DESC') 160 user = User.order('id DESC').first
151 assert_equal 'http://openid.example.com/good_blank_user', user.identity_url 161 assert_equal 'http://openid.example.com/good_blank_user', user.identity_url
152 assert user.hashed_password.blank?, "Hashed password was #{user.hashed_password}" 162 assert user.hashed_password.blank?, "Hashed password was #{user.hashed_password}"
153 end 163 end
154 164
155 def test_setting_openid_should_return_true_when_set_to_true 165 def test_setting_openid_should_return_true_when_set_to_true