Standardise on double quoted strings
[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