Mercurial > hg > soundsoftware-site
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 |