]> git.openstreetmap.org Git - rails.git/blob - test/integration/user_login_test.rb
Fix two issues with the remember_me_openid button
[rails.git] / test / integration / user_login_test.rb
1 require 'test_helper'
2
3 class UserLoginTest < ActionDispatch::IntegrationTest
4   fixtures :users
5
6   def setup
7     openid_setup
8   end
9
10   def test_login_email_password_normal
11     user = users(:normal_user)
12
13     get '/login'
14     assert_response :redirect
15     assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
16     follow_redirect!
17     assert_response :success
18
19     post '/login', {'username' => user.email, 'password' => "wrong", :referer => "/history"}
20     assert_response :redirect
21     follow_redirect!
22     assert_response :success
23     assert_template 'login'
24
25     post '/login', {'username' => user.email, 'password' => "test", :referer => "/history"}
26     assert_response :redirect
27     follow_redirect!
28     assert_response :success
29     assert_template 'changeset/history'
30     assert_select "span.username", "test"
31   end
32
33   def test_login_email_password_normal_upcase
34     user = users(:normal_user)
35
36     get '/login'
37     assert_response :redirect
38     assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
39     follow_redirect!
40     assert_response :success
41
42     post '/login', {'username' => user.email.upcase, 'password' => "wrong", :referer => "/history"}
43     assert_response :redirect
44     follow_redirect!
45     assert_response :success
46     assert_template 'login'
47
48     post '/login', {'username' => user.email.upcase, 'password' => "test", :referer => "/history"}
49     assert_response :redirect
50     follow_redirect!
51     assert_response :success
52     assert_template 'changeset/history'
53     assert_select "span.username", "TEST"
54   end
55
56   def test_login_email_password_normal_titlecase
57     user = users(:normal_user)
58
59     get '/login'
60     assert_response :redirect
61     assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
62     follow_redirect!
63     assert_response :success
64
65     post '/login', {'username' => user.email.titlecase, 'password' => "wrong", :referer => "/history"}
66     assert_response :redirect
67     follow_redirect!
68     assert_response :success
69     assert_template 'login'
70
71     post '/login', {'username' => user.email.titlecase, 'password' => "test", :referer => "/history"}
72     assert_response :redirect
73     follow_redirect!
74     assert_response :success
75     assert_template 'login'
76     assert_select "span.username", false
77   end
78
79   def test_login_email_password_public
80     user = users(:public_user)
81
82     get '/login'
83     assert_response :redirect
84     assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
85     follow_redirect!
86     assert_response :success
87
88     post '/login', {'username' => user.email, 'password' => "wrong", :referer => "/history"}
89     assert_response :redirect
90     follow_redirect!
91     assert_response :success
92     assert_template 'login'
93
94     post '/login', {'username' => user.email, 'password' => "test", :referer => "/history"}
95     assert_response :redirect
96     follow_redirect!
97     assert_response :success
98     assert_template 'changeset/history'
99     assert_select "span.username", "test2"
100   end
101
102   def test_login_email_password_public_upcase
103     user = users(:public_user)
104
105     get '/login'
106     assert_response :redirect
107     assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
108     follow_redirect!
109     assert_response :success
110
111     post '/login', {'username' => user.email.upcase, 'password' => "wrong", :referer => "/history"}
112     assert_response :redirect
113     follow_redirect!
114     assert_response :success
115     assert_template 'login'
116
117     post '/login', {'username' => user.email.upcase, 'password' => "test", :referer => "/history"}
118     assert_response :redirect
119     follow_redirect!
120     assert_response :success
121     assert_template 'changeset/history'
122     assert_select "span.username", "test2"
123   end
124
125   def test_login_email_password_public_titlecase
126     user = users(:public_user)
127
128     get '/login'
129     assert_response :redirect
130     assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
131     follow_redirect!
132     assert_response :success
133
134     post '/login', {'username' => user.email.titlecase, 'password' => "wrong", :referer => "/history"}
135     assert_response :redirect
136     follow_redirect!
137     assert_response :success
138     assert_template 'login'
139
140     post '/login', {'username' => user.email.titlecase, 'password' => "test", :referer => "/history"}
141     assert_response :redirect
142     follow_redirect!
143     assert_response :success
144     assert_template 'changeset/history'
145     assert_select "span.username", "test2"
146   end
147
148   def test_login_username_password_normal
149     user = users(:normal_user)
150
151     get '/login'
152     assert_response :redirect
153     assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
154     follow_redirect!
155     assert_response :success
156
157     post '/login', {'username' => user.display_name, 'password' => "wrong", :referer => "/history"}
158     assert_response :redirect
159     follow_redirect!
160     assert_response :success
161     assert_template 'login'
162
163     post '/login', {'username' => user.display_name, 'password' => "test", :referer => "/history"}
164     assert_response :redirect
165     follow_redirect!
166     assert_response :success
167     assert_template 'changeset/history'
168     assert_select "span.username", "test"
169   end
170
171   def test_login_username_password_normal_upcase
172     user = users(:normal_user)
173
174     get '/login'
175     assert_response :redirect
176     assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
177     follow_redirect!
178     assert_response :success
179
180     post '/login', {'username' => user.display_name.upcase, 'password' => "wrong", :referer => "/history"}
181     assert_response :redirect
182     follow_redirect!
183     assert_response :success
184     assert_template 'login'
185
186     post '/login', {'username' => user.display_name.upcase, 'password' => "test", :referer => "/history"}
187     assert_response :redirect
188     follow_redirect!
189     assert_response :success
190     assert_template 'changeset/history'
191     assert_select "span.username", "TEST"
192   end
193
194   def test_login_username_password_normal_titlecase
195     user = users(:normal_user)
196
197     get '/login'
198     assert_response :redirect
199     assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
200     follow_redirect!
201     assert_response :success
202
203     post '/login', {'username' => user.display_name.titlecase, 'password' => "wrong", :referer => "/history"}
204     assert_response :redirect
205     follow_redirect!
206     assert_response :success
207     assert_template 'login'
208
209     post '/login', {'username' => user.display_name.titlecase, 'password' => "test", :referer => "/history"}
210     assert_response :redirect
211     follow_redirect!
212     assert_response :success
213     assert_template 'login'
214     assert_select "span.username", false
215   end
216
217   def test_login_username_password_public
218     user = users(:public_user)
219
220     get '/login'
221     assert_response :redirect
222     assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
223     follow_redirect!
224     assert_response :success
225
226     post '/login', {'username' => user.display_name, 'password' => "wrong", :referer => "/history"}
227     assert_response :redirect
228     follow_redirect!
229     assert_response :success
230     assert_template 'login'
231
232     post '/login', {'username' => user.display_name, 'password' => "test", :referer => "/history"}
233     assert_response :redirect
234     follow_redirect!
235     assert_response :success
236     assert_template 'changeset/history'
237     assert_select "span.username", "test2"
238   end
239
240   def test_login_username_password_public_upcase
241     user = users(:public_user)
242
243     get '/login'
244     assert_response :redirect
245     assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
246     follow_redirect!
247     assert_response :success
248
249     post '/login', {'username' => user.display_name.upcase, 'password' => "wrong", :referer => "/history"}
250     assert_response :redirect
251     follow_redirect!
252     assert_response :success
253     assert_template 'login'
254
255     post '/login', {'username' => user.display_name.upcase, 'password' => "test", :referer => "/history"}
256     assert_response :redirect
257     follow_redirect!
258     assert_response :success
259     assert_template 'changeset/history'
260     assert_select "span.username", "test2"
261   end
262
263   def test_login_username_password_public_titlecase
264     user = users(:public_user)
265
266     get '/login'
267     assert_response :redirect
268     assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
269     follow_redirect!
270     assert_response :success
271
272     post '/login', {'username' => user.display_name.titlecase, 'password' => "wrong", :referer => "/history"}
273     assert_response :redirect
274     follow_redirect!
275     assert_response :success
276     assert_template 'login'
277
278     post '/login', {'username' => user.display_name.titlecase, 'password' => "test", :referer => "/history"}
279     assert_response :redirect
280     follow_redirect!
281     assert_response :success
282     assert_template 'changeset/history'
283     assert_select "span.username", "test2"
284   end
285
286   def test_login_openid_success
287     get '/login'
288     assert_response :redirect
289     assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
290     follow_redirect!
291     assert_response :success
292     post '/login', {'openid_url' => "http://localhost:1123/john.doe?openid.success=true", :referer => "/history"}
293     assert_response :redirect
294
295     res = openid_request(@response.redirect_url)
296     res2 = post '/login', res
297
298     assert_response :redirect
299     follow_redirect!
300     assert_response :success
301     assert_template 'changeset/history'
302     assert_select "span.username", "openIDuser"
303   end
304
305   def test_login_openid_cancel
306     get '/login'
307     assert_response :redirect
308     assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
309     follow_redirect!
310     assert_response :success
311     post '/login', {'openid_url' => "http://localhost:1123/john.doe", :referer => "/diary"}
312     assert_response :redirect
313
314     res = openid_request(@response.redirect_url)
315     post '/login', res
316
317     assert_response :redirect
318     follow_redirect!
319     assert_response :success
320     assert_template 'login'
321     assert_select "span.username", false
322   end
323
324   def test_login_openid_invalid_provider
325     get '/login'
326     assert_response :redirect
327     assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
328     follow_redirect!
329     assert_response :success
330     #Use a different port that doesn't have the OpenID provider running on to test an invalid openID
331     post '/login', {'openid_url' => "http://localhost:1124/john.doe", :referer => "/diary"}
332     assert_response :redirect
333     follow_redirect!
334     assert_response :success
335     assert_template 'login'
336     assert_select "span.username", false
337   end
338
339   def test_login_openid_invalid_url
340     get '/login'
341     assert_response :redirect
342     assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
343     follow_redirect!
344     assert_response :success
345     #Use a url with an invalid protocol to make sure it handles that correctly too
346     post '/login', {'openid_url' => "htt://localhost:1123/john.doe", :referer => "/diary"}
347     assert_response :redirect
348     follow_redirect!
349     assert_response :success
350     assert_template 'login'
351     assert_select "span.username", false
352   end
353
354   def test_login_openid_unknown
355     get '/login'
356     assert_response :redirect
357     assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
358     follow_redirect!
359     assert_response :success
360     post '/login', {'openid_url' => "http://localhost:1123/john.doe?openid.success=true_somethingelse", :referer => "/diary"}
361     assert_response :redirect
362
363     res = openid_request(@response.redirect_url)
364     res2 = post '/login', res
365
366     assert_response :redirect
367     follow_redirect!
368     assert_response :success
369     assert_template 'user/new'
370     assert_select "span.username", false
371   end
372 end