Fix rubocop lint issues
[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     post '/login', openid_request(@response.redirect_url)
296
297     assert_response :redirect
298     follow_redirect!
299     assert_response :success
300     assert_template 'changeset/history'
301     assert_select "span.username", "openIDuser"
302   end
303
304   def test_login_openid_cancel
305     get '/login'
306     assert_response :redirect
307     assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
308     follow_redirect!
309     assert_response :success
310     post '/login', 'openid_url' => "http://localhost:1123/john.doe", :referer => "/diary"
311     assert_response :redirect
312
313     post '/login', openid_request(@response.redirect_url)
314
315     assert_response :redirect
316     follow_redirect!
317     assert_response :success
318     assert_template 'login'
319     assert_select "span.username", false
320   end
321
322   def test_login_openid_invalid_provider
323     get '/login'
324     assert_response :redirect
325     assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
326     follow_redirect!
327     assert_response :success
328     # Use a different port that doesn't have the OpenID provider running on to test an invalid openID
329     post '/login', 'openid_url' => "http://localhost:1124/john.doe", :referer => "/diary"
330     assert_response :redirect
331     follow_redirect!
332     assert_response :success
333     assert_template 'login'
334     assert_select "span.username", false
335   end
336
337   def test_login_openid_invalid_url
338     get '/login'
339     assert_response :redirect
340     assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
341     follow_redirect!
342     assert_response :success
343     # Use a url with an invalid protocol to make sure it handles that correctly too
344     post '/login', 'openid_url' => "htt://localhost:1123/john.doe", :referer => "/diary"
345     assert_response :redirect
346     follow_redirect!
347     assert_response :success
348     assert_template 'login'
349     assert_select "span.username", false
350   end
351
352   def test_login_openid_unknown
353     get '/login'
354     assert_response :redirect
355     assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
356     follow_redirect!
357     assert_response :success
358     post '/login', 'openid_url' => "http://localhost:1123/john.doe?openid.success=true_somethingelse", :referer => "/diary"
359     assert_response :redirect
360
361     res = openid_request(@response.redirect_url)
362     post '/login', res
363
364     assert_response :redirect
365     follow_redirect!
366     assert_response :success
367     assert_template 'user/new'
368     assert_select "span.username", false
369   end
370 end