##// END OF EJS Templates
remove garbage comment from test/integration/account_test.rb...
Toshi MARUYAMA -
r12697:b4fd6b47b1ab
parent child
Show More
@@ -1,298 +1,297
1 # Redmine - project management software
1 # Redmine - project management software
2 # Copyright (C) 2006-2014 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.
8 #
8 #
9 # This program is distributed in the hope that it will be useful,
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
12 # GNU General Public License for more details.
13 #
13 #
14 # You should have received a copy of the GNU General Public License
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
17
18 require File.expand_path('../../test_helper', __FILE__)
18 require File.expand_path('../../test_helper', __FILE__)
19
19
20 begin
20 begin
21 require 'mocha/setup'
21 require 'mocha/setup'
22 rescue
22 rescue
23 # Won't run some tests
23 # Won't run some tests
24 end
24 end
25
25
26 class AccountTest < ActionController::IntegrationTest
26 class AccountTest < ActionController::IntegrationTest
27 fixtures :users, :roles
27 fixtures :users, :roles
28
28
29 # Replace this with your real tests.
30 def test_login
29 def test_login
31 get "my/page"
30 get "my/page"
32 assert_redirected_to "/login?back_url=http%3A%2F%2Fwww.example.com%2Fmy%2Fpage"
31 assert_redirected_to "/login?back_url=http%3A%2F%2Fwww.example.com%2Fmy%2Fpage"
33 log_user('jsmith', 'jsmith')
32 log_user('jsmith', 'jsmith')
34
33
35 get "my/account"
34 get "my/account"
36 assert_response :success
35 assert_response :success
37 assert_template "my/account"
36 assert_template "my/account"
38 end
37 end
39
38
40 def test_autologin
39 def test_autologin
41 user = User.find(1)
40 user = User.find(1)
42 Setting.autologin = "7"
41 Setting.autologin = "7"
43 Token.delete_all
42 Token.delete_all
44
43
45 # User logs in with 'autologin' checked
44 # User logs in with 'autologin' checked
46 post '/login', :username => user.login, :password => 'admin', :autologin => 1
45 post '/login', :username => user.login, :password => 'admin', :autologin => 1
47 assert_redirected_to '/my/page'
46 assert_redirected_to '/my/page'
48 token = Token.first
47 token = Token.first
49 assert_not_nil token
48 assert_not_nil token
50 assert_equal user, token.user
49 assert_equal user, token.user
51 assert_equal 'autologin', token.action
50 assert_equal 'autologin', token.action
52 assert_equal user.id, session[:user_id]
51 assert_equal user.id, session[:user_id]
53 assert_equal token.value, cookies['autologin']
52 assert_equal token.value, cookies['autologin']
54
53
55 # Session is cleared
54 # Session is cleared
56 reset!
55 reset!
57 User.current = nil
56 User.current = nil
58 # Clears user's last login timestamp
57 # Clears user's last login timestamp
59 user.update_attribute :last_login_on, nil
58 user.update_attribute :last_login_on, nil
60 assert_nil user.reload.last_login_on
59 assert_nil user.reload.last_login_on
61
60
62 # User comes back with user's autologin cookie
61 # User comes back with user's autologin cookie
63 cookies[:autologin] = token.value
62 cookies[:autologin] = token.value
64 get '/my/page'
63 get '/my/page'
65 assert_response :success
64 assert_response :success
66 assert_template 'my/page'
65 assert_template 'my/page'
67 assert_equal user.id, session[:user_id]
66 assert_equal user.id, session[:user_id]
68 assert_not_nil user.reload.last_login_on
67 assert_not_nil user.reload.last_login_on
69 end
68 end
70
69
71 def test_autologin_should_use_autologin_cookie_name
70 def test_autologin_should_use_autologin_cookie_name
72 Token.delete_all
71 Token.delete_all
73 Redmine::Configuration.stubs(:[]).with('autologin_cookie_name').returns('custom_autologin')
72 Redmine::Configuration.stubs(:[]).with('autologin_cookie_name').returns('custom_autologin')
74 Redmine::Configuration.stubs(:[]).with('autologin_cookie_path').returns('/')
73 Redmine::Configuration.stubs(:[]).with('autologin_cookie_path').returns('/')
75 Redmine::Configuration.stubs(:[]).with('autologin_cookie_secure').returns(false)
74 Redmine::Configuration.stubs(:[]).with('autologin_cookie_secure').returns(false)
76
75
77 with_settings :autologin => '7' do
76 with_settings :autologin => '7' do
78 assert_difference 'Token.count' do
77 assert_difference 'Token.count' do
79 post '/login', :username => 'admin', :password => 'admin', :autologin => 1
78 post '/login', :username => 'admin', :password => 'admin', :autologin => 1
80 end
79 end
81 assert_response 302
80 assert_response 302
82 assert cookies['custom_autologin'].present?
81 assert cookies['custom_autologin'].present?
83 token = cookies['custom_autologin']
82 token = cookies['custom_autologin']
84
83
85 # Session is cleared
84 # Session is cleared
86 reset!
85 reset!
87 cookies['custom_autologin'] = token
86 cookies['custom_autologin'] = token
88 get '/my/page'
87 get '/my/page'
89 assert_response :success
88 assert_response :success
90
89
91 assert_difference 'Token.count', -1 do
90 assert_difference 'Token.count', -1 do
92 post '/logout'
91 post '/logout'
93 end
92 end
94 assert cookies['custom_autologin'].blank?
93 assert cookies['custom_autologin'].blank?
95 end
94 end
96 end
95 end
97
96
98 def test_lost_password
97 def test_lost_password
99 Token.delete_all
98 Token.delete_all
100
99
101 get "account/lost_password"
100 get "account/lost_password"
102 assert_response :success
101 assert_response :success
103 assert_template "account/lost_password"
102 assert_template "account/lost_password"
104 assert_select 'input[name=mail]'
103 assert_select 'input[name=mail]'
105
104
106 post "account/lost_password", :mail => 'jSmith@somenet.foo'
105 post "account/lost_password", :mail => 'jSmith@somenet.foo'
107 assert_redirected_to "/login"
106 assert_redirected_to "/login"
108
107
109 token = Token.first
108 token = Token.first
110 assert_equal 'recovery', token.action
109 assert_equal 'recovery', token.action
111 assert_equal 'jsmith@somenet.foo', token.user.mail
110 assert_equal 'jsmith@somenet.foo', token.user.mail
112 assert !token.expired?
111 assert !token.expired?
113
112
114 get "account/lost_password", :token => token.value
113 get "account/lost_password", :token => token.value
115 assert_response :success
114 assert_response :success
116 assert_template "account/password_recovery"
115 assert_template "account/password_recovery"
117 assert_select 'input[type=hidden][name=token][value=?]', token.value
116 assert_select 'input[type=hidden][name=token][value=?]', token.value
118 assert_select 'input[name=new_password]'
117 assert_select 'input[name=new_password]'
119 assert_select 'input[name=new_password_confirmation]'
118 assert_select 'input[name=new_password_confirmation]'
120
119
121 post "account/lost_password",
120 post "account/lost_password",
122 :token => token.value, :new_password => 'newpass123',
121 :token => token.value, :new_password => 'newpass123',
123 :new_password_confirmation => 'newpass123'
122 :new_password_confirmation => 'newpass123'
124 assert_redirected_to "/login"
123 assert_redirected_to "/login"
125 assert_equal 'Password was successfully updated.', flash[:notice]
124 assert_equal 'Password was successfully updated.', flash[:notice]
126
125
127 log_user('jsmith', 'newpass123')
126 log_user('jsmith', 'newpass123')
128 assert_equal 0, Token.count
127 assert_equal 0, Token.count
129 end
128 end
130
129
131 def test_user_with_must_change_passwd_should_be_forced_to_change_its_password
130 def test_user_with_must_change_passwd_should_be_forced_to_change_its_password
132 User.find_by_login('jsmith').update_attribute :must_change_passwd, true
131 User.find_by_login('jsmith').update_attribute :must_change_passwd, true
133
132
134 post '/login', :username => 'jsmith', :password => 'jsmith'
133 post '/login', :username => 'jsmith', :password => 'jsmith'
135 assert_redirected_to '/my/page'
134 assert_redirected_to '/my/page'
136 follow_redirect!
135 follow_redirect!
137 assert_redirected_to '/my/password'
136 assert_redirected_to '/my/password'
138
137
139 get '/issues'
138 get '/issues'
140 assert_redirected_to '/my/password'
139 assert_redirected_to '/my/password'
141 end
140 end
142
141
143 def test_user_with_must_change_passwd_should_be_able_to_change_its_password
142 def test_user_with_must_change_passwd_should_be_able_to_change_its_password
144 User.find_by_login('jsmith').update_attribute :must_change_passwd, true
143 User.find_by_login('jsmith').update_attribute :must_change_passwd, true
145
144
146 post '/login', :username => 'jsmith', :password => 'jsmith'
145 post '/login', :username => 'jsmith', :password => 'jsmith'
147 assert_redirected_to '/my/page'
146 assert_redirected_to '/my/page'
148 follow_redirect!
147 follow_redirect!
149 assert_redirected_to '/my/password'
148 assert_redirected_to '/my/password'
150 follow_redirect!
149 follow_redirect!
151 assert_response :success
150 assert_response :success
152 post '/my/password', :password => 'jsmith', :new_password => 'newpassword', :new_password_confirmation => 'newpassword'
151 post '/my/password', :password => 'jsmith', :new_password => 'newpassword', :new_password_confirmation => 'newpassword'
153 assert_redirected_to '/my/account'
152 assert_redirected_to '/my/account'
154 follow_redirect!
153 follow_redirect!
155 assert_response :success
154 assert_response :success
156
155
157 assert_equal false, User.find_by_login('jsmith').must_change_passwd?
156 assert_equal false, User.find_by_login('jsmith').must_change_passwd?
158 end
157 end
159
158
160 def test_register_with_automatic_activation
159 def test_register_with_automatic_activation
161 Setting.self_registration = '3'
160 Setting.self_registration = '3'
162
161
163 get 'account/register'
162 get 'account/register'
164 assert_response :success
163 assert_response :success
165 assert_template 'account/register'
164 assert_template 'account/register'
166
165
167 post 'account/register',
166 post 'account/register',
168 :user => {:login => "newuser", :language => "en",
167 :user => {:login => "newuser", :language => "en",
169 :firstname => "New", :lastname => "User", :mail => "newuser@foo.bar",
168 :firstname => "New", :lastname => "User", :mail => "newuser@foo.bar",
170 :password => "newpass123", :password_confirmation => "newpass123"}
169 :password => "newpass123", :password_confirmation => "newpass123"}
171 assert_redirected_to '/my/account'
170 assert_redirected_to '/my/account'
172 follow_redirect!
171 follow_redirect!
173 assert_response :success
172 assert_response :success
174 assert_template 'my/account'
173 assert_template 'my/account'
175
174
176 user = User.find_by_login('newuser')
175 user = User.find_by_login('newuser')
177 assert_not_nil user
176 assert_not_nil user
178 assert user.active?
177 assert user.active?
179 assert_not_nil user.last_login_on
178 assert_not_nil user.last_login_on
180 end
179 end
181
180
182 def test_register_with_manual_activation
181 def test_register_with_manual_activation
183 Setting.self_registration = '2'
182 Setting.self_registration = '2'
184
183
185 post 'account/register',
184 post 'account/register',
186 :user => {:login => "newuser", :language => "en",
185 :user => {:login => "newuser", :language => "en",
187 :firstname => "New", :lastname => "User", :mail => "newuser@foo.bar",
186 :firstname => "New", :lastname => "User", :mail => "newuser@foo.bar",
188 :password => "newpass123", :password_confirmation => "newpass123"}
187 :password => "newpass123", :password_confirmation => "newpass123"}
189 assert_redirected_to '/login'
188 assert_redirected_to '/login'
190 assert !User.find_by_login('newuser').active?
189 assert !User.find_by_login('newuser').active?
191 end
190 end
192
191
193 def test_register_with_email_activation
192 def test_register_with_email_activation
194 Setting.self_registration = '1'
193 Setting.self_registration = '1'
195 Token.delete_all
194 Token.delete_all
196
195
197 post 'account/register',
196 post 'account/register',
198 :user => {:login => "newuser", :language => "en",
197 :user => {:login => "newuser", :language => "en",
199 :firstname => "New", :lastname => "User", :mail => "newuser@foo.bar",
198 :firstname => "New", :lastname => "User", :mail => "newuser@foo.bar",
200 :password => "newpass123", :password_confirmation => "newpass123"}
199 :password => "newpass123", :password_confirmation => "newpass123"}
201 assert_redirected_to '/login'
200 assert_redirected_to '/login'
202 assert !User.find_by_login('newuser').active?
201 assert !User.find_by_login('newuser').active?
203
202
204 token = Token.first
203 token = Token.first
205 assert_equal 'register', token.action
204 assert_equal 'register', token.action
206 assert_equal 'newuser@foo.bar', token.user.mail
205 assert_equal 'newuser@foo.bar', token.user.mail
207 assert !token.expired?
206 assert !token.expired?
208
207
209 get 'account/activate', :token => token.value
208 get 'account/activate', :token => token.value
210 assert_redirected_to '/login'
209 assert_redirected_to '/login'
211 log_user('newuser', 'newpass123')
210 log_user('newuser', 'newpass123')
212 end
211 end
213
212
214 def test_onthefly_registration
213 def test_onthefly_registration
215 # disable registration
214 # disable registration
216 Setting.self_registration = '0'
215 Setting.self_registration = '0'
217 AuthSource.expects(:authenticate).returns(
216 AuthSource.expects(:authenticate).returns(
218 {:login => 'foo', :firstname => 'Foo', :lastname => 'Smith',
217 {:login => 'foo', :firstname => 'Foo', :lastname => 'Smith',
219 :mail => 'foo@bar.com', :auth_source_id => 66})
218 :mail => 'foo@bar.com', :auth_source_id => 66})
220
219
221 post '/login', :username => 'foo', :password => 'bar'
220 post '/login', :username => 'foo', :password => 'bar'
222 assert_redirected_to '/my/page'
221 assert_redirected_to '/my/page'
223
222
224 user = User.find_by_login('foo')
223 user = User.find_by_login('foo')
225 assert user.is_a?(User)
224 assert user.is_a?(User)
226 assert_equal 66, user.auth_source_id
225 assert_equal 66, user.auth_source_id
227 assert user.hashed_password.blank?
226 assert user.hashed_password.blank?
228 end
227 end
229
228
230 def test_onthefly_registration_with_invalid_attributes
229 def test_onthefly_registration_with_invalid_attributes
231 # disable registration
230 # disable registration
232 Setting.self_registration = '0'
231 Setting.self_registration = '0'
233 AuthSource.expects(:authenticate).returns(
232 AuthSource.expects(:authenticate).returns(
234 {:login => 'foo', :lastname => 'Smith', :auth_source_id => 66})
233 {:login => 'foo', :lastname => 'Smith', :auth_source_id => 66})
235
234
236 post '/login', :username => 'foo', :password => 'bar'
235 post '/login', :username => 'foo', :password => 'bar'
237 assert_response :success
236 assert_response :success
238 assert_template 'account/register'
237 assert_template 'account/register'
239 assert_tag :input, :attributes => { :name => 'user[firstname]', :value => '' }
238 assert_tag :input, :attributes => { :name => 'user[firstname]', :value => '' }
240 assert_tag :input, :attributes => { :name => 'user[lastname]', :value => 'Smith' }
239 assert_tag :input, :attributes => { :name => 'user[lastname]', :value => 'Smith' }
241 assert_no_tag :input, :attributes => { :name => 'user[login]' }
240 assert_no_tag :input, :attributes => { :name => 'user[login]' }
242 assert_no_tag :input, :attributes => { :name => 'user[password]' }
241 assert_no_tag :input, :attributes => { :name => 'user[password]' }
243
242
244 post 'account/register',
243 post 'account/register',
245 :user => {:firstname => 'Foo', :lastname => 'Smith', :mail => 'foo@bar.com'}
244 :user => {:firstname => 'Foo', :lastname => 'Smith', :mail => 'foo@bar.com'}
246 assert_redirected_to '/my/account'
245 assert_redirected_to '/my/account'
247
246
248 user = User.find_by_login('foo')
247 user = User.find_by_login('foo')
249 assert user.is_a?(User)
248 assert user.is_a?(User)
250 assert_equal 66, user.auth_source_id
249 assert_equal 66, user.auth_source_id
251 assert user.hashed_password.blank?
250 assert user.hashed_password.blank?
252 end
251 end
253
252
254 def test_registered_user_should_be_able_to_get_a_new_activation_email
253 def test_registered_user_should_be_able_to_get_a_new_activation_email
255 Token.delete_all
254 Token.delete_all
256
255
257 with_settings :self_registration => '1', :default_language => 'en' do
256 with_settings :self_registration => '1', :default_language => 'en' do
258 # register a new account
257 # register a new account
259 assert_difference 'User.count' do
258 assert_difference 'User.count' do
260 assert_difference 'Token.count' do
259 assert_difference 'Token.count' do
261 post 'account/register',
260 post 'account/register',
262 :user => {:login => "newuser", :language => "en",
261 :user => {:login => "newuser", :language => "en",
263 :firstname => "New", :lastname => "User", :mail => "newuser@foo.bar",
262 :firstname => "New", :lastname => "User", :mail => "newuser@foo.bar",
264 :password => "newpass123", :password_confirmation => "newpass123"}
263 :password => "newpass123", :password_confirmation => "newpass123"}
265 end
264 end
266 end
265 end
267 user = User.order('id desc').first
266 user = User.order('id desc').first
268 assert_equal User::STATUS_REGISTERED, user.status
267 assert_equal User::STATUS_REGISTERED, user.status
269 reset!
268 reset!
270
269
271 # try to use "lost password"
270 # try to use "lost password"
272 assert_no_difference 'ActionMailer::Base.deliveries.size' do
271 assert_no_difference 'ActionMailer::Base.deliveries.size' do
273 post '/account/lost_password', :mail => 'newuser@foo.bar'
272 post '/account/lost_password', :mail => 'newuser@foo.bar'
274 end
273 end
275 assert_redirected_to '/account/lost_password'
274 assert_redirected_to '/account/lost_password'
276 follow_redirect!
275 follow_redirect!
277 assert_response :success
276 assert_response :success
278 assert_select 'div.flash', :text => /new activation email/
277 assert_select 'div.flash', :text => /new activation email/
279 assert_select 'div.flash a[href=/account/activation_email]'
278 assert_select 'div.flash a[href=/account/activation_email]'
280
279
281 # request a new action activation email
280 # request a new action activation email
282 assert_difference 'ActionMailer::Base.deliveries.size' do
281 assert_difference 'ActionMailer::Base.deliveries.size' do
283 get '/account/activation_email'
282 get '/account/activation_email'
284 end
283 end
285 assert_redirected_to '/login'
284 assert_redirected_to '/login'
286 token = Token.order('id desc').first
285 token = Token.order('id desc').first
287 activation_path = "/account/activate?token=#{token.value}"
286 activation_path = "/account/activate?token=#{token.value}"
288 assert_include activation_path, mail_body(ActionMailer::Base.deliveries.last)
287 assert_include activation_path, mail_body(ActionMailer::Base.deliveries.last)
289
288
290 # activate the account
289 # activate the account
291 get activation_path
290 get activation_path
292 assert_redirected_to '/login'
291 assert_redirected_to '/login'
293
292
294 post '/login', :username => 'newuser', :password => 'newpass123'
293 post '/login', :username => 'newuser', :password => 'newpass123'
295 assert_redirected_to '/my/page'
294 assert_redirected_to '/my/page'
296 end
295 end
297 end
296 end
298 end
297 end
General Comments 0
You need to be logged in to leave comments. Login now