comparison test/integration/account_test.rb @ 909:cbb26bc654de redmine-1.3

Update to Redmine 1.3-stable branch (Redmine SVN rev 8964)
author Chris Cannam
date Fri, 24 Feb 2012 19:09:32 +0000
parents 8661b858af72
children 433d4f72a19b
comparison
equal deleted inserted replaced
908:c6c2cbd0afee 909:cbb26bc654de
1 # redMine - project management software 1 # Redmine - project management software
2 # Copyright (C) 2006-2007 Jean-Philippe Lang 2 # Copyright (C) 2006-2011 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__)
29 # Replace this with your real tests. 29 # Replace this with your real tests.
30 def test_login 30 def test_login
31 get "my/page" 31 get "my/page"
32 assert_redirected_to "/login?back_url=http%3A%2F%2Fwww.example.com%2Fmy%2Fpage" 32 assert_redirected_to "/login?back_url=http%3A%2F%2Fwww.example.com%2Fmy%2Fpage"
33 log_user('jsmith', 'jsmith') 33 log_user('jsmith', 'jsmith')
34 34
35 get "my/account" 35 get "my/account"
36 assert_response :success 36 assert_response :success
37 assert_template "my/account" 37 assert_template "my/account"
38 end 38 end
39 39
40 def test_autologin 40 def test_autologin
41 user = User.find(1) 41 user = User.find(1)
42 Setting.autologin = "7" 42 Setting.autologin = "7"
43 Token.delete_all 43 Token.delete_all
44 44
45 # User logs in with 'autologin' checked 45 # User logs in with 'autologin' checked
46 post '/login', :username => user.login, :password => 'admin', :autologin => 1 46 post '/login', :username => user.login, :password => 'admin', :autologin => 1
47 assert_redirected_to '/my/page' 47 assert_redirected_to '/my/page'
48 token = Token.find :first 48 token = Token.find :first
49 assert_not_nil token 49 assert_not_nil token
50 assert_equal user, token.user 50 assert_equal user, token.user
51 assert_equal 'autologin', token.action 51 assert_equal 'autologin', token.action
52 assert_equal user.id, session[:user_id] 52 assert_equal user.id, session[:user_id]
53 assert_equal token.value, cookies['autologin'] 53 assert_equal token.value, cookies['autologin']
54 54
55 # Session is cleared 55 # Session is cleared
56 reset! 56 reset!
57 User.current = nil 57 User.current = nil
58 # Clears user's last login timestamp 58 # Clears user's last login timestamp
59 user.update_attribute :last_login_on, nil 59 user.update_attribute :last_login_on, nil
60 assert_nil user.reload.last_login_on 60 assert_nil user.reload.last_login_on
61 61
62 # User comes back with his autologin cookie 62 # User comes back with his autologin cookie
63 cookies[:autologin] = token.value 63 cookies[:autologin] = token.value
64 get '/my/page' 64 get '/my/page'
65 assert_response :success 65 assert_response :success
66 assert_template 'my/page' 66 assert_template 'my/page'
67 assert_equal user.id, session[:user_id] 67 assert_equal user.id, session[:user_id]
68 assert_not_nil user.reload.last_login_on 68 assert_not_nil user.reload.last_login_on
69 assert user.last_login_on.utc > 10.second.ago.utc 69 assert user.last_login_on.utc > 10.second.ago.utc
70 end 70 end
71 71
72 def test_lost_password 72 def test_lost_password
73 Token.delete_all 73 Token.delete_all
74 74
75 get "account/lost_password" 75 get "account/lost_password"
76 assert_response :success 76 assert_response :success
77 assert_template "account/lost_password" 77 assert_template "account/lost_password"
78 78
79 post "account/lost_password", :mail => 'jSmith@somenet.foo' 79 post "account/lost_password", :mail => 'jSmith@somenet.foo'
80 assert_redirected_to "/login" 80 assert_redirected_to "/login"
81 81
82 token = Token.find(:first) 82 token = Token.find(:first)
83 assert_equal 'recovery', token.action 83 assert_equal 'recovery', token.action
84 assert_equal 'jsmith@somenet.foo', token.user.mail 84 assert_equal 'jsmith@somenet.foo', token.user.mail
85 assert !token.expired? 85 assert !token.expired?
86 86
87 get "account/lost_password", :token => token.value 87 get "account/lost_password", :token => token.value
88 assert_response :success 88 assert_response :success
89 assert_template "account/password_recovery" 89 assert_template "account/password_recovery"
90 90
91 post "account/lost_password", :token => token.value, :new_password => 'newpass', :new_password_confirmation => 'newpass' 91 post "account/lost_password", :token => token.value, :new_password => 'newpass', :new_password_confirmation => 'newpass'
92 assert_redirected_to "/login" 92 assert_redirected_to "/login"
93 assert_equal 'Password was successfully updated.', flash[:notice] 93 assert_equal 'Password was successfully updated.', flash[:notice]
94 94
95 log_user('jsmith', 'newpass') 95 log_user('jsmith', 'newpass')
96 assert_equal 0, Token.count 96 assert_equal 0, Token.count
97 end 97 end
98 98
99 def test_register_with_automatic_activation 99 def test_register_with_automatic_activation
100 Setting.self_registration = '3' 100 Setting.self_registration = '3'
101 101
102 get 'account/register' 102 get 'account/register'
103 assert_response :success 103 assert_response :success
104 assert_template 'account/register' 104 assert_template 'account/register'
105 105
106 post 'account/register', :user => {:login => "newuser", :language => "en", :firstname => "New", :lastname => "User", :mail => "newuser@foo.bar"}, 106 post 'account/register', :user => {:login => "newuser", :language => "en", :firstname => "New", :lastname => "User", :mail => "newuser@foo.bar"},
107 :password => "newpass", :password_confirmation => "newpass" 107 :password => "newpass", :password_confirmation => "newpass"
108 assert_redirected_to '/my/account' 108 assert_redirected_to '/my/account'
109 follow_redirect! 109 follow_redirect!
110 assert_response :success 110 assert_response :success
111 assert_template 'my/account' 111 assert_template 'my/account'
112 112
113 user = User.find_by_login('newuser') 113 user = User.find_by_login('newuser')
114 assert_not_nil user 114 assert_not_nil user
115 assert user.active? 115 assert user.active?
116 assert_not_nil user.last_login_on 116 assert_not_nil user.last_login_on
117 end 117 end
118 118
119 def test_register_with_manual_activation 119 def test_register_with_manual_activation
120 Setting.self_registration = '2' 120 Setting.self_registration = '2'
121 121
122 post 'account/register', :user => {:login => "newuser", :language => "en", :firstname => "New", :lastname => "User", :mail => "newuser@foo.bar"}, 122 post 'account/register', :user => {:login => "newuser", :language => "en", :firstname => "New", :lastname => "User", :mail => "newuser@foo.bar"},
123 :password => "newpass", :password_confirmation => "newpass" 123 :password => "newpass", :password_confirmation => "newpass"
124 assert_redirected_to '/login' 124 assert_redirected_to '/login'
125 assert !User.find_by_login('newuser').active? 125 assert !User.find_by_login('newuser').active?
126 end 126 end
127 127
128 def test_register_with_email_activation 128 def test_register_with_email_activation
129 Setting.self_registration = '1' 129 Setting.self_registration = '1'
130 Token.delete_all 130 Token.delete_all
131 131
132 post 'account/register', :user => {:login => "newuser", :language => "en", :firstname => "New", :lastname => "User", :mail => "newuser@foo.bar"}, 132 post 'account/register', :user => {:login => "newuser", :language => "en", :firstname => "New", :lastname => "User", :mail => "newuser@foo.bar"},
133 :password => "newpass", :password_confirmation => "newpass" 133 :password => "newpass", :password_confirmation => "newpass"
134 assert_redirected_to '/login' 134 assert_redirected_to '/login'
135 assert !User.find_by_login('newuser').active? 135 assert !User.find_by_login('newuser').active?
136 136
137 token = Token.find(:first) 137 token = Token.find(:first)
138 assert_equal 'register', token.action 138 assert_equal 'register', token.action
139 assert_equal 'newuser@foo.bar', token.user.mail 139 assert_equal 'newuser@foo.bar', token.user.mail
140 assert !token.expired? 140 assert !token.expired?
141 141
142 get 'account/activate', :token => token.value 142 get 'account/activate', :token => token.value
143 assert_redirected_to '/login' 143 assert_redirected_to '/login'
144 log_user('newuser', 'newpass') 144 log_user('newuser', 'newpass')
145 end 145 end
146 146
147 if Object.const_defined?(:Mocha) 147 if Object.const_defined?(:Mocha)
148 148
149 def test_onthefly_registration 149 def test_onthefly_registration
150 # disable registration 150 # disable registration
151 Setting.self_registration = '0' 151 Setting.self_registration = '0'
152 AuthSource.expects(:authenticate).returns({:login => 'foo', :firstname => 'Foo', :lastname => 'Smith', :mail => 'foo@bar.com', :auth_source_id => 66}) 152 AuthSource.expects(:authenticate).returns({:login => 'foo', :firstname => 'Foo', :lastname => 'Smith', :mail => 'foo@bar.com', :auth_source_id => 66})
153 153
154 post 'account/login', :username => 'foo', :password => 'bar' 154 post 'account/login', :username => 'foo', :password => 'bar'
155 assert_redirected_to '/my/page' 155 assert_redirected_to '/my/page'
156 156
157 user = User.find_by_login('foo') 157 user = User.find_by_login('foo')
158 assert user.is_a?(User) 158 assert user.is_a?(User)
159 assert_equal 66, user.auth_source_id 159 assert_equal 66, user.auth_source_id
160 assert user.hashed_password.blank? 160 assert user.hashed_password.blank?
161 end 161 end
162 162
163 def test_onthefly_registration_with_invalid_attributes 163 def test_onthefly_registration_with_invalid_attributes
164 # disable registration 164 # disable registration
165 Setting.self_registration = '0' 165 Setting.self_registration = '0'
166 AuthSource.expects(:authenticate).returns({:login => 'foo', :lastname => 'Smith', :auth_source_id => 66}) 166 AuthSource.expects(:authenticate).returns({:login => 'foo', :lastname => 'Smith', :auth_source_id => 66})
167 167
168 post 'account/login', :username => 'foo', :password => 'bar' 168 post 'account/login', :username => 'foo', :password => 'bar'
169 assert_response :success 169 assert_response :success
170 assert_template 'account/register' 170 assert_template 'account/register'
171 assert_tag :input, :attributes => { :name => 'user[firstname]', :value => '' } 171 assert_tag :input, :attributes => { :name => 'user[firstname]', :value => '' }
172 assert_tag :input, :attributes => { :name => 'user[lastname]', :value => 'Smith' } 172 assert_tag :input, :attributes => { :name => 'user[lastname]', :value => 'Smith' }
173 assert_no_tag :input, :attributes => { :name => 'user[login]' } 173 assert_no_tag :input, :attributes => { :name => 'user[login]' }
174 assert_no_tag :input, :attributes => { :name => 'user[password]' } 174 assert_no_tag :input, :attributes => { :name => 'user[password]' }
175 175
176 post 'account/register', :user => {:firstname => 'Foo', :lastname => 'Smith', :mail => 'foo@bar.com'} 176 post 'account/register', :user => {:firstname => 'Foo', :lastname => 'Smith', :mail => 'foo@bar.com'}
177 assert_redirected_to '/my/account' 177 assert_redirected_to '/my/account'
178 178
179 user = User.find_by_login('foo') 179 user = User.find_by_login('foo')
180 assert user.is_a?(User) 180 assert user.is_a?(User)
181 assert_equal 66, user.auth_source_id 181 assert_equal 66, user.auth_source_id
182 assert user.hashed_password.blank? 182 assert user.hashed_password.blank?
183 end 183 end
184 184
185 def test_login_and_logout_should_clear_session 185 def test_login_and_logout_should_clear_session
186 get '/login' 186 get '/login'
187 sid = session[:session_id] 187 sid = session[:session_id]
188 188
189 post '/login', :username => 'admin', :password => 'admin' 189 post '/login', :username => 'admin', :password => 'admin'
190 assert_redirected_to '/my/page' 190 assert_redirected_to '/my/page'
191 assert_not_equal sid, session[:session_id], "login should reset session" 191 assert_not_equal sid, session[:session_id], "login should reset session"
192 assert_equal 1, session[:user_id] 192 assert_equal 1, session[:user_id]
193 sid = session[:session_id] 193 sid = session[:session_id]
194 194
195 get '/' 195 get '/'
196 assert_equal sid, session[:session_id] 196 assert_equal sid, session[:session_id]
197 197
198 get '/logout' 198 get '/logout'
199 assert_not_equal sid, session[:session_id], "logout should reset session" 199 assert_not_equal sid, session[:session_id], "logout should reset session"
200 assert_nil session[:user_id] 200 assert_nil session[:user_id]
201 end 201 end
202 202
203 else 203 else
204 puts 'Mocha is missing. Skipping tests.' 204 puts 'Mocha is missing. Skipping tests.'
205 end 205 end
206 end 206 end