multi_auth 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. data/README +36 -0
  2. data/app/controllers/application_controller.rb +11 -0
  3. data/app/controllers/auth/email_controller.rb +34 -0
  4. data/app/controllers/auth/open_id_controller.rb +43 -0
  5. data/app/controllers/auth_controller.rb +24 -0
  6. data/app/controllers/credentials/email_controller.rb +156 -0
  7. data/app/controllers/credentials/open_id_controller.rb +85 -0
  8. data/app/controllers/credentials_controller.rb +14 -0
  9. data/app/controllers/signup/email_controller.rb +132 -0
  10. data/app/controllers/signup/open_id_controller.rb +62 -0
  11. data/app/controllers/signup_controller.rb +8 -0
  12. data/app/helpers/application_helper.rb +5 -0
  13. data/app/models/activation_mailer.rb +114 -0
  14. data/app/models/email_credential.rb +89 -0
  15. data/app/models/email_credential_edit_form.rb +52 -0
  16. data/app/models/email_login_form.rb +24 -0
  17. data/app/models/email_password_edit_form.rb +36 -0
  18. data/app/models/open_id_credential.rb +33 -0
  19. data/app/models/open_id_login_form.rb +17 -0
  20. data/app/models/session.rb +19 -0
  21. data/app/models/user.rb +37 -0
  22. data/app/views/activation_mailer/complete_for_credential.erb +4 -0
  23. data/app/views/activation_mailer/complete_for_notice.erb +4 -0
  24. data/app/views/activation_mailer/complete_for_signup.erb +4 -0
  25. data/app/views/activation_mailer/request_for_credential.erb +11 -0
  26. data/app/views/activation_mailer/request_for_notice.erb +11 -0
  27. data/app/views/activation_mailer/request_for_signup.erb +11 -0
  28. data/app/views/auth/email/index.html.erb +90 -0
  29. data/app/views/auth/logged_in.html.erb +21 -0
  30. data/app/views/auth/logged_out.html.erb +21 -0
  31. data/app/views/auth/open_id/index.html.erb +16 -0
  32. data/app/views/credentials/email/activated.html.erb +4 -0
  33. data/app/views/credentials/email/activation.html.erb +15 -0
  34. data/app/views/credentials/email/created.html.erb +15 -0
  35. data/app/views/credentials/email/delete.html.erb +20 -0
  36. data/app/views/credentials/email/edit_password.html.erb +31 -0
  37. data/app/views/credentials/email/new.html.erb +36 -0
  38. data/app/views/credentials/index.html.erb +88 -0
  39. data/app/views/credentials/open_id/delete.html.erb +20 -0
  40. data/app/views/credentials/open_id/new.html.erb +26 -0
  41. data/app/views/signup/email/_progress.html.erb +14 -0
  42. data/app/views/signup/email/activated.html.erb +9 -0
  43. data/app/views/signup/email/activation.html.erb +27 -0
  44. data/app/views/signup/email/created.html.erb +14 -0
  45. data/app/views/signup/email/index.html.erb +34 -0
  46. data/app/views/signup/email/validated.html.erb +21 -0
  47. data/app/views/signup/index.html.erb +51 -0
  48. data/app/views/signup/open_id/authenticated.html.erb +15 -0
  49. data/app/views/signup/open_id/created.html.erb +6 -0
  50. data/app/views/signup/open_id/index.html.erb +16 -0
  51. data/config/boot.rb +110 -0
  52. data/config/database.yml +22 -0
  53. data/config/database.yml.sqlite3 +22 -0
  54. data/config/environment.rb +62 -0
  55. data/config/routes.rb +51 -0
  56. data/config/smtp.yml.example +8 -0
  57. data/db/development.sqlite3 +0 -0
  58. data/db/schema.rb +88 -0
  59. data/db/test.sqlite3 +0 -0
  60. data/lib/action_mailer_util.rb +15 -0
  61. data/lib/multi_auth.rb +64 -0
  62. data/lib/multi_auth_helper.rb +98 -0
  63. data/lib/notice_formatter.rb +106 -0
  64. data/lib/open_id_authentication/result.rb +12 -0
  65. data/lib/token_util.rb +18 -0
  66. data/public/404.html +92 -0
  67. data/public/422.html +91 -0
  68. data/public/500.html +92 -0
  69. data/public/503.html +92 -0
  70. data/public/favicon.ico +0 -0
  71. data/public/images/battery/cell.png +0 -0
  72. data/public/images/battery/level-green.png +0 -0
  73. data/public/images/battery/level-orange.png +0 -0
  74. data/public/images/battery/level-red.png +0 -0
  75. data/public/images/battery/level-yellow.png +0 -0
  76. data/public/images/battery/style.html +82 -0
  77. data/public/images/favicons/livedoor.png +0 -0
  78. data/public/images/favicons/mixi.png +0 -0
  79. data/public/images/favicons/yahoo.png +0 -0
  80. data/public/images/h1-back.png +0 -0
  81. data/public/images/icons/fam/add.png +0 -0
  82. data/public/images/icons/fam/bin.png +0 -0
  83. data/public/images/icons/fam/bomb.png +0 -0
  84. data/public/images/icons/fam/cog.png +0 -0
  85. data/public/images/icons/fam/delete.png +0 -0
  86. data/public/images/icons/fam/email-with-desc.png +0 -0
  87. data/public/images/icons/fam/email.png +0 -0
  88. data/public/images/icons/fam/feed.png +0 -0
  89. data/public/images/icons/fam/help.png +0 -0
  90. data/public/images/icons/fam/key-with-desc.png +0 -0
  91. data/public/images/icons/fam/key.png +0 -0
  92. data/public/images/icons/fam/lightning.png +0 -0
  93. data/public/images/icons/fam/plugin.png +0 -0
  94. data/public/images/icons/fam/stop.png +0 -0
  95. data/public/images/icons/fam/table_save.png +0 -0
  96. data/public/images/icons/fam/tick.png +0 -0
  97. data/public/images/icons/fam/user.png +0 -0
  98. data/public/images/icons/fam/vcard.png +0 -0
  99. data/public/images/icons/openid-with-desc.png +0 -0
  100. data/public/images/icons/openid.png +0 -0
  101. data/public/images/logo-back.png +0 -0
  102. data/public/images/logo.png +0 -0
  103. data/public/images/side-column-back.png +0 -0
  104. data/public/javascripts/application.js +2 -0
  105. data/public/javascripts/controls.js +963 -0
  106. data/public/javascripts/dragdrop.js +973 -0
  107. data/public/javascripts/effects.js +1128 -0
  108. data/public/javascripts/prototype.js +4320 -0
  109. data/public/robots.txt +5 -0
  110. data/public/stylesheets/application.css +365 -0
  111. data/public/stylesheets/auth.css +22 -0
  112. data/public/stylesheets/home.css +114 -0
  113. data/rails/init.rb +24 -0
  114. data/test/functional/auth/email_controller_test.rb +102 -0
  115. data/test/functional/auth/open_id_controller_test.rb +76 -0
  116. data/test/functional/auth_controller_test.rb +74 -0
  117. data/test/functional/credentials/email_controller_test.rb +488 -0
  118. data/test/functional/credentials/open_id_controller_test.rb +308 -0
  119. data/test/functional/credentials_controller_test.rb +49 -0
  120. data/test/functional/signup/email_controller_test.rb +369 -0
  121. data/test/functional/signup/open_id_controller_test.rb +44 -0
  122. data/test/functional/signup_controller_test.rb +17 -0
  123. data/test/performance/browsing_test.rb +9 -0
  124. data/test/test_helper.rb +82 -0
  125. data/test/unit/action_mailer_util_test.rb +63 -0
  126. data/test/unit/activation_mailer_test.rb +181 -0
  127. data/test/unit/email_credential_edit_form_test.rb +173 -0
  128. data/test/unit/email_credential_test.rb +324 -0
  129. data/test/unit/email_login_form_test.rb +76 -0
  130. data/test/unit/email_password_edit_form_test.rb +117 -0
  131. data/test/unit/helpers/auth_helper_test.rb +4 -0
  132. data/test/unit/helpers/credentials/email_helper_test.rb +4 -0
  133. data/test/unit/helpers/credentials/open_id_helper_test.rb +4 -0
  134. data/test/unit/helpers/credentials_helper_test.rb +4 -0
  135. data/test/unit/helpers/email_auth_helper_test.rb +4 -0
  136. data/test/unit/helpers/email_signup_helper_test.rb +4 -0
  137. data/test/unit/helpers/open_id_auth_helper_test.rb +4 -0
  138. data/test/unit/helpers/open_id_signup_helper_test.rb +4 -0
  139. data/test/unit/helpers/password_auth_helper_test.rb +4 -0
  140. data/test/unit/helpers/password_signup_helper_test.rb +4 -0
  141. data/test/unit/helpers/signup_helper_test.rb +4 -0
  142. data/test/unit/notice_formatter_test.rb +153 -0
  143. data/test/unit/open_id_credential_test.rb +108 -0
  144. data/test/unit/open_id_login_form_test.rb +57 -0
  145. data/test/unit/session_test.rb +53 -0
  146. data/test/unit/token_util_test.rb +51 -0
  147. data/test/unit/user_test.rb +177 -0
  148. metadata +220 -0
@@ -0,0 +1,74 @@
1
+
2
+ require 'test_helper'
3
+
4
+ class AuthControllerTest < ActionController::TestCase
5
+ test "routes" do
6
+ base = {:controller => "auth"}
7
+
8
+ assert_routing("/auth/logged_in", base.merge(:action => "logged_in"))
9
+ assert_routing("/auth/logout", base.merge(:action => "logout"))
10
+ assert_routing("/auth/logged_out", base.merge(:action => "logged_out"))
11
+ end
12
+
13
+ test "GET logged_in" do
14
+ return_path = "/return"
15
+
16
+ get :logged_in, :return_path => return_path
17
+
18
+ assert_response(:success)
19
+ assert_template("logged_in")
20
+
21
+ assert_equal(return_path, assigns(:return_path))
22
+ end
23
+
24
+ test "GET logged_in, without return path" do
25
+ get :logged_in
26
+
27
+ assert_response(:success)
28
+ assert_template("logged_in")
29
+
30
+ assert_equal(root_path, assigns(:return_path))
31
+ end
32
+
33
+ test "POST logout" do
34
+ @request.session[:user_id] = 0
35
+
36
+ post :logout
37
+
38
+ assert_response(:redirect)
39
+ assert_redirected_to(:controller => "auth", :action => "logged_out")
40
+
41
+ assert_equal(nil, @request.session[:user_id])
42
+ end
43
+
44
+ test "GET logout, abnormal, method not allowed" do
45
+ @request.session[:user_id] = 0
46
+
47
+ get :logout
48
+
49
+ assert_response(405)
50
+ assert_template(nil)
51
+
52
+ assert_equal(0, @request.session[:user_id])
53
+ end
54
+
55
+ test "GET logged_out" do
56
+ return_path = "/return"
57
+
58
+ get :logged_out, :return_path => return_path
59
+
60
+ assert_response(:success)
61
+ assert_template("logged_out")
62
+
63
+ assert_equal(return_path, assigns(:return_path))
64
+ end
65
+
66
+ test "GET logged_out, without return path" do
67
+ get :logged_out
68
+
69
+ assert_response(:success)
70
+ assert_template("logged_out")
71
+
72
+ assert_equal(root_path, assigns(:return_path))
73
+ end
74
+ end
@@ -0,0 +1,488 @@
1
+
2
+ require 'test_helper'
3
+
4
+ class Credentials::EmailControllerTest < ActionController::TestCase
5
+ def setup
6
+ @yuya = users(:yuya)
7
+ @yuya_gmail = email_credentials(:yuya_gmail)
8
+ @yuya_nayutaya = email_credentials(:yuya_nayutaya)
9
+ @risa_example = email_credentials(:risa_example)
10
+
11
+ @edit_form = EmailCredentialEditForm.new(
12
+ :email => "email@example.jp",
13
+ :password => "password",
14
+ :password_confirmation => "password")
15
+
16
+ @password_edit_form = EmailPasswordEditForm.new(
17
+ :password => "password",
18
+ :password_confirmation => "password")
19
+
20
+ session_login(@yuya)
21
+ end
22
+
23
+ test "routes" do
24
+ base = {:controller => "credentials/email"}
25
+
26
+ assert_routing("/credentials/email/new", base.merge(:action => "new"))
27
+ assert_routing("/credentials/email/create", base.merge(:action => "create"))
28
+
29
+ assert_routing("/credential/email/1234567890/created", base.merge(:action => "created", :email_credential_id => "1234567890"))
30
+ assert_routing("/credential/email/1234567890/edit_password", base.merge(:action => "edit_password", :email_credential_id => "1234567890"))
31
+ assert_routing("/credential/email/1234567890/update_password", base.merge(:action => "update_password", :email_credential_id => "1234567890"))
32
+ assert_routing("/credential/email/1234567890/delete", base.merge(:action => "delete", :email_credential_id => "1234567890"))
33
+ assert_routing("/credential/email/1234567890/destroy", base.merge(:action => "destroy", :email_credential_id => "1234567890"))
34
+
35
+ assert_routing("/credential/email/token/0123456789/activation", base.merge(:action => "activation", :activation_token => "0123456789"))
36
+ assert_routing("/credential/email/token/0123456789/activate", base.merge(:action => "activate", :activation_token => "0123456789"))
37
+ assert_routing("/credential/email/token/0123456789/activated", base.merge(:action => "activated", :activation_token => "0123456789"))
38
+ end
39
+
40
+ test "GET new" do
41
+ get :new
42
+
43
+ assert_response(:success)
44
+ assert_template("new")
45
+ assert_flash_empty
46
+ assert_logged_in(@yuya)
47
+
48
+ assert_equal(
49
+ EmailCredentialEditForm.new.attributes,
50
+ assigns(:edit_form).attributes)
51
+ end
52
+
53
+ test "GET new, abnormal, no login" do
54
+ session_logout
55
+
56
+ get :new
57
+
58
+ assert_response(:redirect)
59
+ assert_redirected_to(root_path)
60
+ assert_flash_error
61
+ end
62
+
63
+ test "POST create" do
64
+ assert_equal(true, @edit_form.valid?)
65
+
66
+ assert_difference("EmailCredential.count", +1) {
67
+ post :create, :edit_form => @edit_form.attributes
68
+ }
69
+
70
+ assert_response(:redirect)
71
+ assert_redirected_to(:controller => "credentials/email", :action => "created", :email_credential_id => assigns(:email_credential).id)
72
+ assert_flash_notice
73
+ assert_logged_in(@yuya)
74
+
75
+ assert_equal(
76
+ @edit_form.attributes,
77
+ assigns(:edit_form).attributes)
78
+
79
+ assigns(:email_credential).reload
80
+ assert_equal(@yuya.id, assigns(:email_credential).user_id)
81
+ assert_equal(@edit_form.email, assigns(:email_credential).email)
82
+ assert_equal(true, EmailCredential.compare_hashed_password(@edit_form.password, assigns(:email_credential).hashed_password))
83
+ assert_equal(nil, assigns(:email_credential).activated_at)
84
+
85
+ # TODO: アクティベーションメールを送信
86
+ end
87
+
88
+ test "POST create, invalid form" do
89
+ @edit_form.email = nil
90
+ assert_equal(false, @edit_form.valid?)
91
+
92
+ assert_difference("EmailCredential.count", 0) {
93
+ post :create, :edit_form => @edit_form.attributes
94
+ }
95
+
96
+ assert_response(:success)
97
+ assert_template("new")
98
+ assert_flash_error
99
+
100
+ assert_equal(nil, assigns(:edit_form).password)
101
+ assert_equal(nil, assigns(:edit_form).password_confirmation)
102
+ end
103
+
104
+ test "GET create, abnormal, method not allowed" do
105
+ get :create
106
+
107
+ assert_response(405)
108
+ assert_template(nil)
109
+ end
110
+
111
+ test "POST create, abnormal, no login" do
112
+ session_logout
113
+
114
+ post :create
115
+
116
+ assert_response(:redirect)
117
+ assert_redirected_to(root_path)
118
+ assert_flash_error
119
+ end
120
+
121
+ test "GET created" do
122
+ get :created, :email_credential_id => @yuya_gmail.id
123
+
124
+ assert_response(:success)
125
+ assert_template("created")
126
+ assert_flash_empty
127
+ assert_logged_in(@yuya)
128
+
129
+ assert_equal(@yuya_gmail, assigns(:email_credential))
130
+ end
131
+
132
+ test "GET created, abnormal, no login" do
133
+ session_logout
134
+
135
+ get :created, :email_credential_id => @yuya_gmail.id
136
+
137
+ assert_response(:redirect)
138
+ assert_redirected_to(root_path)
139
+ assert_flash_error
140
+ end
141
+
142
+ test "GET created, abnormal, invalid email credential id" do
143
+ get :created, :email_credential_id => "0"
144
+
145
+ assert_response(:redirect)
146
+ assert_redirected_to(root_path)
147
+ assert_flash_error
148
+ end
149
+
150
+ test "GET created, abnormal, other's email credential" do
151
+ get :created, :email_credential_id => @risa_example.id
152
+
153
+ assert_response(:redirect)
154
+ assert_redirected_to(root_path)
155
+ assert_flash_error
156
+ end
157
+
158
+ test "GET edit_password" do
159
+ get :edit_password, :email_credential_id => @yuya_gmail.id
160
+
161
+ assert_response(:success)
162
+ assert_template("edit_password")
163
+ assert_flash_empty
164
+ assert_logged_in(@yuya)
165
+
166
+ assert_equal(@yuya_gmail, assigns(:email_credential))
167
+
168
+ assert_equal(
169
+ EmailPasswordEditForm.new.attributes,
170
+ assigns(:edit_form).attributes)
171
+ end
172
+
173
+ test "GET edit_password, abnormal, no login" do
174
+ session_logout
175
+
176
+ get :edit_password, :email_credential_id => @yuya_gmail.id
177
+
178
+ assert_response(:redirect)
179
+ assert_redirected_to(root_path)
180
+ assert_flash_error
181
+ end
182
+
183
+ test "GET edit_password, abnormal, invalid email credential id" do
184
+ get :edit_password, :email_credential_id => "0"
185
+
186
+ assert_response(:redirect)
187
+ assert_redirected_to(root_path)
188
+ assert_flash_error
189
+ end
190
+
191
+ test "GET edit_password, abnormal, other's email credential" do
192
+ get :edit_password, :email_credential_id => @risa_example.id
193
+
194
+ assert_response(:redirect)
195
+ assert_redirected_to(root_path)
196
+ assert_flash_error
197
+ end
198
+
199
+ test "POST update_password" do
200
+ assert_equal(true, @password_edit_form.valid?)
201
+
202
+ post :update_password, :email_credential_id => @yuya_gmail.id, :edit_form => @password_edit_form.attributes
203
+
204
+ assert_response(:redirect)
205
+ assert_redirected_to(:controller => "/credentials", :action => "index")
206
+ assert_flash_notice
207
+ assert_logged_in(@yuya)
208
+
209
+ assert_equal(@yuya_gmail, assigns(:email_credential))
210
+
211
+ assert_equal(
212
+ @password_edit_form.attributes,
213
+ assigns(:edit_form).attributes)
214
+
215
+ assigns(:email_credential).reload
216
+ assert_equal(
217
+ true,
218
+ EmailCredential.compare_hashed_password(@password_edit_form.password, assigns(:email_credential).hashed_password))
219
+ end
220
+
221
+ test "POST update_password, invalid form" do
222
+ @password_edit_form.password = "x"
223
+ assert_equal(false, @password_edit_form.valid?)
224
+
225
+ post :update_password, :email_credential_id => @yuya_gmail.id, :edit_form => @password_edit_form.attributes
226
+
227
+ assert_response(:success)
228
+ assert_template("edit_password")
229
+ assert_flash_error
230
+
231
+ assert_equal(nil, assigns(:edit_form).password)
232
+ assert_equal(nil, assigns(:edit_form).password_confirmation)
233
+ end
234
+
235
+ test "GET update_password, abnormal, method not allowed" do
236
+ get :update_password, :email_credential_id => @yuya_gmail.id
237
+
238
+ assert_response(405)
239
+ assert_template(nil)
240
+ end
241
+
242
+ test "POST update_password, abnormal, no login" do
243
+ session_logout
244
+
245
+ post :update_password, :email_credential_id => @yuya_gmail.id
246
+
247
+ assert_response(:redirect)
248
+ assert_redirected_to(root_path)
249
+ assert_flash_error
250
+ end
251
+
252
+ test "POST update_password, abnormal, invalid email credential id" do
253
+ post :update_password, :email_credential_id => "0"
254
+
255
+ assert_response(:redirect)
256
+ assert_redirected_to(root_path)
257
+ assert_flash_error
258
+ end
259
+
260
+ test "POST update_password, abnormal, other's email credential" do
261
+ post :update_password, :email_credential_id => @risa_example.id
262
+
263
+ assert_response(:redirect)
264
+ assert_redirected_to(root_path)
265
+ assert_flash_error
266
+ end
267
+
268
+ test "GET delete" do
269
+ get :delete, :email_credential_id => @yuya_gmail.id
270
+
271
+ assert_response(:success)
272
+ assert_template("delete")
273
+ assert_flash_empty
274
+ assert_logged_in(@yuya)
275
+
276
+ assert_equal(@yuya_gmail, assigns(:email_credential))
277
+ end
278
+
279
+ test "GET delete, abnormal, no login" do
280
+ session_logout
281
+
282
+ get :delete, :email_credential_id => @yuya_gmail.id
283
+
284
+ assert_response(:redirect)
285
+ assert_redirected_to(root_path)
286
+ assert_flash_error
287
+ end
288
+
289
+ test "GET delete, abnormal, invalid email credential id" do
290
+ get :delete, :email_credential_id => "0"
291
+
292
+ assert_response(:redirect)
293
+ assert_redirected_to(root_path)
294
+ assert_flash_error
295
+ end
296
+
297
+ test "GET delete, abnormal, other's email credential" do
298
+ get :delete, :email_credential_id => @risa_example.id
299
+
300
+ assert_response(:redirect)
301
+ assert_redirected_to(root_path)
302
+ assert_flash_error
303
+ end
304
+
305
+ test "POST destroy" do
306
+ assert_difference("EmailCredential.count", -1) {
307
+ post :destroy, :email_credential_id => @yuya_gmail.id
308
+ }
309
+
310
+ assert_response(:redirect)
311
+ assert_redirected_to(:controller => "/credentials", :action => "index")
312
+ assert_flash_notice
313
+ assert_logged_in(@yuya)
314
+
315
+ assert_equal(@yuya_gmail, assigns(:email_credential))
316
+
317
+ assert_equal(nil, EmailCredential.find_by_id(@yuya_gmail.id))
318
+ end
319
+
320
+ test "GET destroy, abnormal, method not allowed" do
321
+ get :destroy, :email_credential_id => @yuya_gmail.id
322
+
323
+ assert_response(405)
324
+ assert_template(nil)
325
+ end
326
+
327
+ test "POST destroy, abnormal, no login" do
328
+ session_logout
329
+
330
+ post :destroy, :email_credential_id => @yuya_gmail.id
331
+
332
+ assert_response(:redirect)
333
+ assert_redirected_to(root_path)
334
+ assert_flash_error
335
+ end
336
+
337
+ test "POST destroy, abnormal, invalid email credential id" do
338
+ post :destroy, :email_credential_id => "0"
339
+
340
+ assert_response(:redirect)
341
+ assert_redirected_to(root_path)
342
+ assert_flash_error
343
+ end
344
+
345
+ test "POST destroy, abnormal, other's email credential" do
346
+ post :destroy, :email_credential_id => @risa_example.id
347
+
348
+ assert_response(:redirect)
349
+ assert_redirected_to(root_path)
350
+ assert_flash_error
351
+ end
352
+
353
+ test "GET activation" do
354
+ assert_equal(false, @yuya_nayutaya.activated?)
355
+
356
+ get :activation, :activation_token => @yuya_nayutaya.activation_token
357
+
358
+ assert_response(:success)
359
+ assert_template("activation")
360
+ assert_flash_empty
361
+ assert_logged_in(@yuya)
362
+
363
+ assert_equal(@yuya_nayutaya, assigns(:email_credential))
364
+ end
365
+
366
+ test "GET activation, no login" do
367
+ session_logout
368
+ assert_equal(false, @yuya_nayutaya.activated?)
369
+
370
+ get :activation, :activation_token => @yuya_nayutaya.activation_token
371
+
372
+ assert_response(:success)
373
+ assert_template("activation")
374
+ assert_flash_empty
375
+ assert_not_logged_in
376
+
377
+ assert_equal(@yuya_nayutaya, assigns(:email_credential))
378
+ end
379
+
380
+ test "GET activation, abnormal, invalid activation token" do
381
+ get :activation, :activation_token => "0"
382
+
383
+ assert_response(:redirect)
384
+ assert_redirected_to(root_path)
385
+ assert_flash_error
386
+ end
387
+
388
+ test "GET activation, abnormal, already activated" do
389
+ assert_equal(true, @yuya_gmail.activated?)
390
+
391
+ get :activation, :activation_token => @yuya_gmail.activation_token
392
+
393
+ assert_response(:redirect)
394
+ assert_redirected_to(root_path)
395
+ assert_flash_error
396
+ end
397
+
398
+ test "POST activate" do
399
+ time = Time.local(2009, 1, 1)
400
+ assert_equal(false, @yuya_nayutaya.activated?)
401
+
402
+ Kagemusha::DateTime.at(time) {
403
+ post :activate, :activation_token => @yuya_nayutaya.activation_token
404
+ }
405
+
406
+ assert_response(:redirect)
407
+ assert_redirected_to(:controller => "credentials/email", :action => "activated")
408
+ assert_flash_empty
409
+ assert_logged_in(@yuya)
410
+
411
+ assert_equal(@yuya_nayutaya, assigns(:email_credential))
412
+
413
+ assigns(:email_credential).reload
414
+ assert_equal(true, assigns(:email_credential).activated?)
415
+ assert_equal(time, assigns(:email_credential).activated_at)
416
+ end
417
+
418
+ test "POST activate, no login" do
419
+ session_logout
420
+ assert_equal(false, @yuya_nayutaya.activated?)
421
+
422
+ post :activate, :activation_token => @yuya_nayutaya.activation_token
423
+
424
+ assert_response(:redirect)
425
+ assert_redirected_to(:controller => "credentials/email", :action => "activated")
426
+ assert_flash_empty
427
+ assert_not_logged_in
428
+
429
+ assert_equal(@yuya_nayutaya, assigns(:email_credential))
430
+ end
431
+
432
+ test "GET activate, abnormal, method not allowed" do
433
+ get :activate, :activation_token => @yuya_nayutaya.activation_token
434
+
435
+ assert_response(405)
436
+ assert_template(nil)
437
+ end
438
+
439
+ test "POST activate, abnormal, invalid activation token" do
440
+ post :activate, :activation_token => "0"
441
+
442
+ assert_response(:redirect)
443
+ assert_redirected_to(root_path)
444
+ assert_flash_error
445
+ end
446
+
447
+ test "POST activate, abnormal, already activated" do
448
+ assert_equal(true, @yuya_gmail.activated?)
449
+
450
+ post :activate, :activation_token => @yuya_gmail.activation_token
451
+
452
+ assert_response(:redirect)
453
+ assert_redirected_to(root_path)
454
+ assert_flash_error
455
+ end
456
+
457
+ test "GET activated" do
458
+ get :activated, :activation_token => @yuya_nayutaya.activation_token
459
+
460
+ assert_response(:success)
461
+ assert_template("activated")
462
+ assert_flash_empty
463
+ assert_logged_in(@yuya)
464
+
465
+ assert_equal(@yuya_nayutaya, assigns(:email_credential))
466
+ end
467
+
468
+ test "GET activated, no login" do
469
+ session_logout
470
+
471
+ get :activated, :activation_token => @yuya_nayutaya.activation_token
472
+
473
+ assert_response(:success)
474
+ assert_template("activated")
475
+ assert_flash_empty
476
+ assert_not_logged_in
477
+
478
+ assert_equal(@yuya_nayutaya, assigns(:email_credential))
479
+ end
480
+
481
+ test "GET activated, abnormal, invalid activation token" do
482
+ get :activated, :activation_token => "0"
483
+
484
+ assert_response(:redirect)
485
+ assert_redirected_to(root_path)
486
+ assert_flash_error
487
+ end
488
+ end