multi_auth 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README +36 -0
- data/app/controllers/application_controller.rb +11 -0
- data/app/controllers/auth/email_controller.rb +34 -0
- data/app/controllers/auth/open_id_controller.rb +43 -0
- data/app/controllers/auth_controller.rb +24 -0
- data/app/controllers/credentials/email_controller.rb +156 -0
- data/app/controllers/credentials/open_id_controller.rb +85 -0
- data/app/controllers/credentials_controller.rb +14 -0
- data/app/controllers/signup/email_controller.rb +132 -0
- data/app/controllers/signup/open_id_controller.rb +62 -0
- data/app/controllers/signup_controller.rb +8 -0
- data/app/helpers/application_helper.rb +5 -0
- data/app/models/activation_mailer.rb +114 -0
- data/app/models/email_credential.rb +89 -0
- data/app/models/email_credential_edit_form.rb +52 -0
- data/app/models/email_login_form.rb +24 -0
- data/app/models/email_password_edit_form.rb +36 -0
- data/app/models/open_id_credential.rb +33 -0
- data/app/models/open_id_login_form.rb +17 -0
- data/app/models/session.rb +19 -0
- data/app/models/user.rb +37 -0
- data/app/views/activation_mailer/complete_for_credential.erb +4 -0
- data/app/views/activation_mailer/complete_for_notice.erb +4 -0
- data/app/views/activation_mailer/complete_for_signup.erb +4 -0
- data/app/views/activation_mailer/request_for_credential.erb +11 -0
- data/app/views/activation_mailer/request_for_notice.erb +11 -0
- data/app/views/activation_mailer/request_for_signup.erb +11 -0
- data/app/views/auth/email/index.html.erb +90 -0
- data/app/views/auth/logged_in.html.erb +21 -0
- data/app/views/auth/logged_out.html.erb +21 -0
- data/app/views/auth/open_id/index.html.erb +16 -0
- data/app/views/credentials/email/activated.html.erb +4 -0
- data/app/views/credentials/email/activation.html.erb +15 -0
- data/app/views/credentials/email/created.html.erb +15 -0
- data/app/views/credentials/email/delete.html.erb +20 -0
- data/app/views/credentials/email/edit_password.html.erb +31 -0
- data/app/views/credentials/email/new.html.erb +36 -0
- data/app/views/credentials/index.html.erb +88 -0
- data/app/views/credentials/open_id/delete.html.erb +20 -0
- data/app/views/credentials/open_id/new.html.erb +26 -0
- data/app/views/signup/email/_progress.html.erb +14 -0
- data/app/views/signup/email/activated.html.erb +9 -0
- data/app/views/signup/email/activation.html.erb +27 -0
- data/app/views/signup/email/created.html.erb +14 -0
- data/app/views/signup/email/index.html.erb +34 -0
- data/app/views/signup/email/validated.html.erb +21 -0
- data/app/views/signup/index.html.erb +51 -0
- data/app/views/signup/open_id/authenticated.html.erb +15 -0
- data/app/views/signup/open_id/created.html.erb +6 -0
- data/app/views/signup/open_id/index.html.erb +16 -0
- data/config/boot.rb +110 -0
- data/config/database.yml +22 -0
- data/config/database.yml.sqlite3 +22 -0
- data/config/environment.rb +62 -0
- data/config/routes.rb +51 -0
- data/config/smtp.yml.example +8 -0
- data/db/development.sqlite3 +0 -0
- data/db/schema.rb +88 -0
- data/db/test.sqlite3 +0 -0
- data/lib/action_mailer_util.rb +15 -0
- data/lib/multi_auth.rb +64 -0
- data/lib/multi_auth_helper.rb +98 -0
- data/lib/notice_formatter.rb +106 -0
- data/lib/open_id_authentication/result.rb +12 -0
- data/lib/token_util.rb +18 -0
- data/public/404.html +92 -0
- data/public/422.html +91 -0
- data/public/500.html +92 -0
- data/public/503.html +92 -0
- data/public/favicon.ico +0 -0
- data/public/images/battery/cell.png +0 -0
- data/public/images/battery/level-green.png +0 -0
- data/public/images/battery/level-orange.png +0 -0
- data/public/images/battery/level-red.png +0 -0
- data/public/images/battery/level-yellow.png +0 -0
- data/public/images/battery/style.html +82 -0
- data/public/images/favicons/livedoor.png +0 -0
- data/public/images/favicons/mixi.png +0 -0
- data/public/images/favicons/yahoo.png +0 -0
- data/public/images/h1-back.png +0 -0
- data/public/images/icons/fam/add.png +0 -0
- data/public/images/icons/fam/bin.png +0 -0
- data/public/images/icons/fam/bomb.png +0 -0
- data/public/images/icons/fam/cog.png +0 -0
- data/public/images/icons/fam/delete.png +0 -0
- data/public/images/icons/fam/email-with-desc.png +0 -0
- data/public/images/icons/fam/email.png +0 -0
- data/public/images/icons/fam/feed.png +0 -0
- data/public/images/icons/fam/help.png +0 -0
- data/public/images/icons/fam/key-with-desc.png +0 -0
- data/public/images/icons/fam/key.png +0 -0
- data/public/images/icons/fam/lightning.png +0 -0
- data/public/images/icons/fam/plugin.png +0 -0
- data/public/images/icons/fam/stop.png +0 -0
- data/public/images/icons/fam/table_save.png +0 -0
- data/public/images/icons/fam/tick.png +0 -0
- data/public/images/icons/fam/user.png +0 -0
- data/public/images/icons/fam/vcard.png +0 -0
- data/public/images/icons/openid-with-desc.png +0 -0
- data/public/images/icons/openid.png +0 -0
- data/public/images/logo-back.png +0 -0
- data/public/images/logo.png +0 -0
- data/public/images/side-column-back.png +0 -0
- data/public/javascripts/application.js +2 -0
- data/public/javascripts/controls.js +963 -0
- data/public/javascripts/dragdrop.js +973 -0
- data/public/javascripts/effects.js +1128 -0
- data/public/javascripts/prototype.js +4320 -0
- data/public/robots.txt +5 -0
- data/public/stylesheets/application.css +365 -0
- data/public/stylesheets/auth.css +22 -0
- data/public/stylesheets/home.css +114 -0
- data/rails/init.rb +24 -0
- data/test/functional/auth/email_controller_test.rb +102 -0
- data/test/functional/auth/open_id_controller_test.rb +76 -0
- data/test/functional/auth_controller_test.rb +74 -0
- data/test/functional/credentials/email_controller_test.rb +488 -0
- data/test/functional/credentials/open_id_controller_test.rb +308 -0
- data/test/functional/credentials_controller_test.rb +49 -0
- data/test/functional/signup/email_controller_test.rb +369 -0
- data/test/functional/signup/open_id_controller_test.rb +44 -0
- data/test/functional/signup_controller_test.rb +17 -0
- data/test/performance/browsing_test.rb +9 -0
- data/test/test_helper.rb +82 -0
- data/test/unit/action_mailer_util_test.rb +63 -0
- data/test/unit/activation_mailer_test.rb +181 -0
- data/test/unit/email_credential_edit_form_test.rb +173 -0
- data/test/unit/email_credential_test.rb +324 -0
- data/test/unit/email_login_form_test.rb +76 -0
- data/test/unit/email_password_edit_form_test.rb +117 -0
- data/test/unit/helpers/auth_helper_test.rb +4 -0
- data/test/unit/helpers/credentials/email_helper_test.rb +4 -0
- data/test/unit/helpers/credentials/open_id_helper_test.rb +4 -0
- data/test/unit/helpers/credentials_helper_test.rb +4 -0
- data/test/unit/helpers/email_auth_helper_test.rb +4 -0
- data/test/unit/helpers/email_signup_helper_test.rb +4 -0
- data/test/unit/helpers/open_id_auth_helper_test.rb +4 -0
- data/test/unit/helpers/open_id_signup_helper_test.rb +4 -0
- data/test/unit/helpers/password_auth_helper_test.rb +4 -0
- data/test/unit/helpers/password_signup_helper_test.rb +4 -0
- data/test/unit/helpers/signup_helper_test.rb +4 -0
- data/test/unit/notice_formatter_test.rb +153 -0
- data/test/unit/open_id_credential_test.rb +108 -0
- data/test/unit/open_id_login_form_test.rb +57 -0
- data/test/unit/session_test.rb +53 -0
- data/test/unit/token_util_test.rb +51 -0
- data/test/unit/user_test.rb +177 -0
- metadata +220 -0
@@ -0,0 +1,369 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
require 'test_helper'
|
4
|
+
|
5
|
+
class Signup::EmailControllerTest < ActionController::TestCase
|
6
|
+
def setup
|
7
|
+
@yuya_gmail = email_credentials(:yuya_gmail)
|
8
|
+
@yuya_nayutaya = email_credentials(:yuya_nayutaya)
|
9
|
+
|
10
|
+
@signup_form = EmailCredentialEditForm.new(
|
11
|
+
:email => "foo@example.com",
|
12
|
+
:password => "password",
|
13
|
+
:password_confirmation => "password")
|
14
|
+
|
15
|
+
ActionMailer::Base.deliveries = []
|
16
|
+
end
|
17
|
+
|
18
|
+
test "routes" do
|
19
|
+
base = {:controller => "signup/email"}
|
20
|
+
|
21
|
+
assert_routing("/signup/email", base.merge(:action => "index"))
|
22
|
+
assert_routing("/signup/email/validate", base.merge(:action => "validate"))
|
23
|
+
assert_routing("/signup/email/validated", base.merge(:action => "validated"))
|
24
|
+
assert_routing("/signup/email/create", base.merge(:action => "create"))
|
25
|
+
assert_routing("/signup/email/created", base.merge(:action => "created"))
|
26
|
+
assert_routing("/signup/email/activation/0123456789abcdef", base.merge(:action => "activation", :activation_token => "0123456789abcdef"))
|
27
|
+
assert_routing("/signup/email/activate", base.merge(:action => "activate"))
|
28
|
+
assert_routing("/signup/email/activated", base.merge(:action => "activated"))
|
29
|
+
end
|
30
|
+
|
31
|
+
test "GET index" do
|
32
|
+
get :index
|
33
|
+
|
34
|
+
assert_response(:success)
|
35
|
+
assert_template("index")
|
36
|
+
assert_flash_empty
|
37
|
+
|
38
|
+
assert_equal(
|
39
|
+
EmailCredentialEditForm.new.attributes,
|
40
|
+
assigns(:signup_form).attributes)
|
41
|
+
end
|
42
|
+
|
43
|
+
test "GET index, clean session" do
|
44
|
+
@request.session[:user_id] = :dummy
|
45
|
+
@request.session[:signup_form] = :dummy
|
46
|
+
|
47
|
+
get :index
|
48
|
+
|
49
|
+
assert_response(:success)
|
50
|
+
assert_template("index")
|
51
|
+
|
52
|
+
assert_equal(nil, @request.session[:user_id])
|
53
|
+
assert_equal(nil, @request.session[:signup_form])
|
54
|
+
end
|
55
|
+
|
56
|
+
test "POST validate" do
|
57
|
+
assert_equal(true, @signup_form.valid?)
|
58
|
+
|
59
|
+
post :validate, :signup_form => @signup_form.attributes
|
60
|
+
|
61
|
+
assert_response(:redirect)
|
62
|
+
assert_redirected_to(:controller => "email", :action => "validated")
|
63
|
+
assert_flash_empty
|
64
|
+
|
65
|
+
assert_equal(
|
66
|
+
@signup_form.attributes,
|
67
|
+
assigns(:signup_form).attributes)
|
68
|
+
|
69
|
+
assert_equal(
|
70
|
+
@signup_form.attributes,
|
71
|
+
@request.session[:signup_form])
|
72
|
+
end
|
73
|
+
|
74
|
+
test "POST validate, invalid form" do
|
75
|
+
@request.session[:signup_form] = :dummy
|
76
|
+
|
77
|
+
@signup_form.email = nil
|
78
|
+
assert_equal(false, @signup_form.valid?)
|
79
|
+
|
80
|
+
post :validate, :signup_form => @signup_form.attributes
|
81
|
+
|
82
|
+
assert_response(:success)
|
83
|
+
assert_template("index")
|
84
|
+
assert_flash_error
|
85
|
+
|
86
|
+
assert_equal(nil, @request.session[:signup_form])
|
87
|
+
|
88
|
+
assert_equal(nil, assigns(:signup_form).password)
|
89
|
+
assert_equal(nil, assigns(:signup_form).password_confirmation)
|
90
|
+
end
|
91
|
+
|
92
|
+
test "POST validate, clean session" do
|
93
|
+
@request.session[:user_id] = :dummy
|
94
|
+
@request.session[:signup_form] = :dummy
|
95
|
+
|
96
|
+
post :validate, :signup_form => @signup_form.attributes
|
97
|
+
|
98
|
+
assert_response(:redirect)
|
99
|
+
assert_redirected_to(:controller => "email", :action => "validated")
|
100
|
+
|
101
|
+
assert_equal(nil, @request.session[:user_id])
|
102
|
+
end
|
103
|
+
|
104
|
+
test "GET validate, abnormal, method not allowed" do
|
105
|
+
get :validate
|
106
|
+
|
107
|
+
assert_response(405)
|
108
|
+
assert_template(nil)
|
109
|
+
end
|
110
|
+
|
111
|
+
test "GET validated" do
|
112
|
+
assert_equal(true, @signup_form.valid?)
|
113
|
+
|
114
|
+
@request.session[:signup_form] = @signup_form.attributes
|
115
|
+
|
116
|
+
get :validated
|
117
|
+
|
118
|
+
assert_response(:success)
|
119
|
+
assert_template("validated")
|
120
|
+
assert_flash_empty
|
121
|
+
|
122
|
+
assert_equal(
|
123
|
+
@signup_form.attributes,
|
124
|
+
assigns(:signup_form).attributes)
|
125
|
+
end
|
126
|
+
|
127
|
+
test "GET validated, invalid form" do
|
128
|
+
@signup_form.email = nil
|
129
|
+
assert_equal(false, @signup_form.valid?)
|
130
|
+
|
131
|
+
get :validated
|
132
|
+
|
133
|
+
assert_response(:success)
|
134
|
+
assert_template("index")
|
135
|
+
assert_flash_error
|
136
|
+
end
|
137
|
+
|
138
|
+
test "GET validated, clean session" do
|
139
|
+
@request.session[:user_id] = :dummy
|
140
|
+
@request.session[:signup_form] = @signup_form.attributes
|
141
|
+
|
142
|
+
get :validated
|
143
|
+
|
144
|
+
assert_response(:success)
|
145
|
+
assert_template("validated")
|
146
|
+
|
147
|
+
assert_equal(nil, @request.session[:user_id])
|
148
|
+
end
|
149
|
+
|
150
|
+
test "POST create" do
|
151
|
+
assert_equal(true, @signup_form.valid?)
|
152
|
+
|
153
|
+
@request.session[:signup_form] = @signup_form.attributes
|
154
|
+
|
155
|
+
assert_difference("EmailCredential.count", +1) {
|
156
|
+
assert_difference("User.count", +1) {
|
157
|
+
post :create
|
158
|
+
}
|
159
|
+
}
|
160
|
+
|
161
|
+
assert_response(:redirect)
|
162
|
+
assert_redirected_to(:controller => "email", :action => "created")
|
163
|
+
assert_flash_empty
|
164
|
+
|
165
|
+
assert_equal(
|
166
|
+
@signup_form.attributes,
|
167
|
+
assigns(:signup_form).attributes)
|
168
|
+
|
169
|
+
assert_equal(nil, assigns(:user).nickname)
|
170
|
+
|
171
|
+
assert_equal(
|
172
|
+
assigns(:user).id,
|
173
|
+
assigns(:credential).user_id)
|
174
|
+
assert_equal(
|
175
|
+
@signup_form.email,
|
176
|
+
assigns(:credential).email)
|
177
|
+
assert_equal(
|
178
|
+
true,
|
179
|
+
EmailCredential.compare_hashed_password(@signup_form.password, assigns(:credential).hashed_password))
|
180
|
+
|
181
|
+
# MEMO: ここではurl_forが使えない
|
182
|
+
assert_equal(
|
183
|
+
root_path(:only_path => false) + "signup/email/activation/" + assigns(:credential).activation_token,
|
184
|
+
assigns(:activation_url))
|
185
|
+
|
186
|
+
assert_equal(1, ActionMailer::Base.deliveries.size)
|
187
|
+
end
|
188
|
+
|
189
|
+
test "POST create, invalid form" do
|
190
|
+
@signup_form.email = nil
|
191
|
+
assert_equal(false, @signup_form.valid?)
|
192
|
+
|
193
|
+
@request.session[:signup_form] = @signup_form.attributes
|
194
|
+
|
195
|
+
post :create
|
196
|
+
|
197
|
+
assert_response(:success)
|
198
|
+
assert_template("index")
|
199
|
+
assert_flash_error
|
200
|
+
end
|
201
|
+
|
202
|
+
test "POST create, clean session" do
|
203
|
+
@request.session[:user_id] = :dummy
|
204
|
+
@request.session[:signup_form] = @signup_form.attributes
|
205
|
+
|
206
|
+
post :create
|
207
|
+
|
208
|
+
assert_response(:redirect)
|
209
|
+
assert_redirected_to(:controller => "email", :action => "created")
|
210
|
+
|
211
|
+
assert_equal(nil, @request.session[:user_id])
|
212
|
+
end
|
213
|
+
|
214
|
+
test "GET create, abnormal, method not allowed" do
|
215
|
+
get :create
|
216
|
+
|
217
|
+
assert_response(405)
|
218
|
+
assert_template(nil)
|
219
|
+
end
|
220
|
+
|
221
|
+
test "GET created" do
|
222
|
+
@signup_form.email = @yuya_nayutaya.email
|
223
|
+
@request.session[:signup_form] = @signup_form.attributes
|
224
|
+
|
225
|
+
get :created
|
226
|
+
|
227
|
+
assert_response(:success)
|
228
|
+
assert_template("created")
|
229
|
+
assert_flash_empty
|
230
|
+
|
231
|
+
assert_equal(
|
232
|
+
@signup_form.attributes,
|
233
|
+
assigns(:signup_form).attributes)
|
234
|
+
assert_equal(
|
235
|
+
@signup_form.email,
|
236
|
+
assigns(:credential).email)
|
237
|
+
end
|
238
|
+
|
239
|
+
test "GET created, clean session" do
|
240
|
+
@request.session[:user_id] = :dummy
|
241
|
+
@request.session[:signup_form] = {:email => @yuya_nayutaya.email}
|
242
|
+
|
243
|
+
get :created
|
244
|
+
|
245
|
+
assert_response(:success)
|
246
|
+
assert_template("created")
|
247
|
+
|
248
|
+
assert_equal(nil, @request.session[:user_id])
|
249
|
+
end
|
250
|
+
|
251
|
+
test "GET activation" do
|
252
|
+
get :activation, :activation_token => @yuya_nayutaya.activation_token
|
253
|
+
|
254
|
+
assert_response(:success)
|
255
|
+
assert_template("activation")
|
256
|
+
assert_flash_empty
|
257
|
+
|
258
|
+
assert_equal(@yuya_nayutaya, assigns(:credential))
|
259
|
+
assert_equal(false, assigns(:activated))
|
260
|
+
end
|
261
|
+
|
262
|
+
test "GET activation, already activated" do
|
263
|
+
get :activation, :activation_token => @yuya_gmail.activation_token
|
264
|
+
|
265
|
+
assert_response(:success)
|
266
|
+
assert_template("activation")
|
267
|
+
assert_flash_empty
|
268
|
+
|
269
|
+
assert_equal(@yuya_gmail, assigns(:credential))
|
270
|
+
assert_equal(true, assigns(:activated))
|
271
|
+
end
|
272
|
+
|
273
|
+
test "GET activation, clean session" do
|
274
|
+
@request.session[:user_id] = :dummy
|
275
|
+
@request.session[:signup_form] = :dummy
|
276
|
+
|
277
|
+
get :activation, :activation_token => @yuya_nayutaya.activation_token
|
278
|
+
|
279
|
+
assert_response(:success)
|
280
|
+
assert_template("activation")
|
281
|
+
|
282
|
+
assert_equal(nil, @request.session[:user_id])
|
283
|
+
assert_equal(nil, @request.session[:signup_form])
|
284
|
+
end
|
285
|
+
|
286
|
+
test "GET activation, abnormal, invalid activation token" do
|
287
|
+
get :activation, :activation_token => "0"
|
288
|
+
|
289
|
+
assert_response(:success)
|
290
|
+
assert_template("activation")
|
291
|
+
assert_flash_empty
|
292
|
+
|
293
|
+
assert_equal(nil, assigns(:credential))
|
294
|
+
assert_equal(nil, assigns(:activated))
|
295
|
+
end
|
296
|
+
|
297
|
+
test "POST activate" do
|
298
|
+
time = Time.local(2010, 1, 1)
|
299
|
+
|
300
|
+
Kagemusha::DateTime.at(time) {
|
301
|
+
post :activate, :activation_token => @yuya_nayutaya.activation_token
|
302
|
+
}
|
303
|
+
|
304
|
+
assert_response(:redirect)
|
305
|
+
assert_redirected_to(:controller => "email", :action => "activated")
|
306
|
+
assert_flash_empty
|
307
|
+
|
308
|
+
assigns(:credential).reload
|
309
|
+
assert_equal(@yuya_nayutaya.email, assigns(:credential).email)
|
310
|
+
assert_equal(time, assigns(:credential).activated_at)
|
311
|
+
end
|
312
|
+
|
313
|
+
test "POST activate, already activated" do
|
314
|
+
post :activate, :activation_token => @yuya_gmail.activation_token
|
315
|
+
|
316
|
+
assert_response(:redirect)
|
317
|
+
assert_redirected_to(root_path)
|
318
|
+
assert_flash_error
|
319
|
+
end
|
320
|
+
|
321
|
+
test "POST activate, clean session" do
|
322
|
+
@request.session[:user_id] = :dummy
|
323
|
+
@request.session[:signup_form] = :dummy
|
324
|
+
|
325
|
+
post :activate, :activation_token => @yuya_nayutaya.activation_token
|
326
|
+
|
327
|
+
assert_response(:redirect)
|
328
|
+
assert_redirected_to(:controller => "email", :action => "activated")
|
329
|
+
|
330
|
+
assert_equal(nil, @request.session[:user_id])
|
331
|
+
assert_equal(nil, @request.session[:signup_form])
|
332
|
+
end
|
333
|
+
|
334
|
+
test "POST activated, abnormal, no activation token" do
|
335
|
+
post :activate, :activation_token => nil
|
336
|
+
|
337
|
+
assert_response(:redirect)
|
338
|
+
assert_redirected_to(root_path)
|
339
|
+
assert_flash_error
|
340
|
+
end
|
341
|
+
|
342
|
+
test "GET activate, abnormal, method not allowed" do
|
343
|
+
get :activate
|
344
|
+
|
345
|
+
assert_response(405)
|
346
|
+
assert_template(nil)
|
347
|
+
end
|
348
|
+
|
349
|
+
test "GET activated" do
|
350
|
+
get :activated
|
351
|
+
|
352
|
+
assert_response(:success)
|
353
|
+
assert_template("activated")
|
354
|
+
assert_flash_empty
|
355
|
+
end
|
356
|
+
|
357
|
+
test "GET activated, clean session" do
|
358
|
+
@request.session[:user_id] = :dummy
|
359
|
+
@request.session[:signup_form] = :dummy
|
360
|
+
|
361
|
+
get :activated
|
362
|
+
|
363
|
+
assert_response(:success)
|
364
|
+
assert_template("activated")
|
365
|
+
|
366
|
+
assert_equal(nil, @request.session[:user_id])
|
367
|
+
assert_equal(nil, @request.session[:signup_form])
|
368
|
+
end
|
369
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
require 'test_helper'
|
4
|
+
|
5
|
+
class Signup::OpenIdControllerTest < ActionController::TestCase
|
6
|
+
test "routes" do
|
7
|
+
base = {:controller => "signup/open_id"}
|
8
|
+
|
9
|
+
assert_routing("signup/open_id", base.merge(:action => "index"))
|
10
|
+
assert_routing("signup/open_id/authenticate", base.merge(:action => "authenticate"))
|
11
|
+
assert_routing("signup/open_id/authenticated", base.merge(:action => "authenticated"))
|
12
|
+
assert_routing("signup/open_id/create", base.merge(:action => "create"))
|
13
|
+
assert_routing("signup/open_id/created", base.merge(:action => "created"))
|
14
|
+
end
|
15
|
+
|
16
|
+
test "GET index" do
|
17
|
+
get :index
|
18
|
+
|
19
|
+
assert_response(:success)
|
20
|
+
assert_template("index")
|
21
|
+
end
|
22
|
+
|
23
|
+
test "POST authenticate, first step" do
|
24
|
+
post :authenticate, :openid_url => "livedoor.com"
|
25
|
+
|
26
|
+
assert_response(:redirect)
|
27
|
+
# FXIME 検証を追加する?
|
28
|
+
# FIXME 毎回リクエストが外に飛んでいるのをなんとかする
|
29
|
+
end
|
30
|
+
|
31
|
+
test "GET authenticate, second step" do
|
32
|
+
get :authenticate, :openid_url => nil
|
33
|
+
# TODO: 必要があれば検証を追加する
|
34
|
+
end
|
35
|
+
|
36
|
+
test "POST create" do
|
37
|
+
@request.session[:identity_url] = "http://example.com/"
|
38
|
+
|
39
|
+
post :create
|
40
|
+
|
41
|
+
assert_response(:redirect)
|
42
|
+
assert_redirected_to(:action => "created")
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
|
2
|
+
require 'test_helper'
|
3
|
+
|
4
|
+
class SignupControllerTest < ActionController::TestCase
|
5
|
+
test "routes" do
|
6
|
+
base = {:controller => "signup"}
|
7
|
+
|
8
|
+
assert_routing("/signup", base.merge(:action => "index"))
|
9
|
+
end
|
10
|
+
|
11
|
+
test "GET index" do
|
12
|
+
get :index
|
13
|
+
|
14
|
+
assert_response(:success)
|
15
|
+
assert_template("index")
|
16
|
+
end
|
17
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,82 @@
|
|
1
|
+
|
2
|
+
ENV["RAILS_ENV"] = "test"
|
3
|
+
require File.expand_path(File.dirname(__FILE__) + "/../config/environment")
|
4
|
+
require 'test_help'
|
5
|
+
|
6
|
+
require "kagemusha/datetime"
|
7
|
+
|
8
|
+
begin
|
9
|
+
require 'redgreen'
|
10
|
+
rescue LoadError
|
11
|
+
# do nothing
|
12
|
+
end
|
13
|
+
|
14
|
+
class ActiveSupport::TestCase
|
15
|
+
# Transactional fixtures accelerate your tests by wrapping each test method
|
16
|
+
# in a transaction that's rolled back on completion. This ensures that the
|
17
|
+
# test database remains unchanged so your fixtures don't have to be reloaded
|
18
|
+
# between every test method. Fewer database queries means faster tests.
|
19
|
+
#
|
20
|
+
# Read Mike Clark's excellent walkthrough at
|
21
|
+
# http://clarkware.com/cgi/blosxom/2005/10/24#Rails10FastTesting
|
22
|
+
#
|
23
|
+
# Every Active Record database supports transactions except MyISAM tables
|
24
|
+
# in MySQL. Turn off transactional fixtures in this case; however, if you
|
25
|
+
# don't care one way or the other, switching from MyISAM to InnoDB tables
|
26
|
+
# is recommended.
|
27
|
+
#
|
28
|
+
# The only drawback to using transactional fixtures is when you actually
|
29
|
+
# need to test transactions. Since your test is bracketed by a transaction,
|
30
|
+
# any transactions started in your code will be automatically rolled back.
|
31
|
+
self.use_transactional_fixtures = true
|
32
|
+
|
33
|
+
# Instantiated fixtures are slow, but give you @david where otherwise you
|
34
|
+
# would need people(:david). If you don't want to migrate your existing
|
35
|
+
# test cases which use the @david style and don't mind the speed hit (each
|
36
|
+
# instantiated fixtures translates to a database query per test method),
|
37
|
+
# then set this back to true.
|
38
|
+
self.use_instantiated_fixtures = false
|
39
|
+
|
40
|
+
# Setup all fixtures in test/fixtures/*.(yml|csv) for all tests in alphabetical order.
|
41
|
+
#
|
42
|
+
# Note: You'll currently still have to declare fixtures explicitly in integration tests
|
43
|
+
# -- they do not yet inherit this setting
|
44
|
+
fixtures :all
|
45
|
+
|
46
|
+
# Add more helper methods to be used by all tests here...
|
47
|
+
|
48
|
+
private
|
49
|
+
|
50
|
+
def assert_logged_in(user)
|
51
|
+
assert_equal(user.id, @request.session[:user_id])
|
52
|
+
assert_equal(user, assigns(:login_user))
|
53
|
+
end
|
54
|
+
|
55
|
+
def assert_not_logged_in
|
56
|
+
assert_equal(nil, @request.session[:user_id])
|
57
|
+
assert_equal(nil, assigns(:login_user))
|
58
|
+
end
|
59
|
+
|
60
|
+
def session_login(user)
|
61
|
+
@request.session[:user_id] = user.id
|
62
|
+
end
|
63
|
+
|
64
|
+
def session_logout
|
65
|
+
@request.session[:user_id] = nil
|
66
|
+
end
|
67
|
+
|
68
|
+
def assert_flash_empty
|
69
|
+
assert_nil(assigns(:flash_notice))
|
70
|
+
assert_nil(assigns(:flash_error))
|
71
|
+
end
|
72
|
+
|
73
|
+
def assert_flash_notice
|
74
|
+
assert_not_nil(assigns(:flash_notice))
|
75
|
+
assert_nil(assigns(:flash_error))
|
76
|
+
end
|
77
|
+
|
78
|
+
def assert_flash_error
|
79
|
+
assert_nil(assigns(:flash_notice))
|
80
|
+
assert_not_nil(assigns(:flash_error))
|
81
|
+
end
|
82
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
|
2
|
+
require 'test_helper'
|
3
|
+
|
4
|
+
class ActionMailerUtilTest < ActiveSupport::TestCase
|
5
|
+
def setup
|
6
|
+
@module = ActionMailerUtil
|
7
|
+
@instance = Class.new.module_eval { include(ActionMailerUtil); self }.new
|
8
|
+
@musha = Kagemusha.new(@instance.class)
|
9
|
+
end
|
10
|
+
|
11
|
+
test "build_message" do
|
12
|
+
time = Time.local(2010, 1, 1)
|
13
|
+
options = {
|
14
|
+
:subject => "SUBJECT",
|
15
|
+
:from => "FROM",
|
16
|
+
:recipients => "RECIPIENTS",
|
17
|
+
:body => {:KEY => :VALUE},
|
18
|
+
}
|
19
|
+
|
20
|
+
called = []
|
21
|
+
@musha.def(:sent_on) { |value| called << [:sent_on, value] }
|
22
|
+
@musha.def(:subject) { |value| called << [:subject, value] }
|
23
|
+
@musha.def(:from) { |value| called << [:from, value] }
|
24
|
+
@musha.def(:recipients) { |value| called << [:recipients, value] }
|
25
|
+
@musha.def(:body) { |value| called << [:body, value] }
|
26
|
+
@musha.swap {
|
27
|
+
Kagemusha::DateTime.at(time) {
|
28
|
+
assert_equal(nil, @instance.__send__(:build_message, options))
|
29
|
+
}
|
30
|
+
}
|
31
|
+
|
32
|
+
expected = [
|
33
|
+
[:sent_on, time],
|
34
|
+
[:subject, "SUBJECT"],
|
35
|
+
[:from, "FROM"],
|
36
|
+
[:recipients, "RECIPIENTS"],
|
37
|
+
[:body, {:KEY => :VALUE}],
|
38
|
+
]
|
39
|
+
assert_equal(expected, called)
|
40
|
+
end
|
41
|
+
|
42
|
+
test "build_message, deficient parameter" do
|
43
|
+
options = {
|
44
|
+
:subject => "SUBJECT",
|
45
|
+
:from => "FROM",
|
46
|
+
:recipients => "RECIPIENTS",
|
47
|
+
:body => {:KEY => :VALUE},
|
48
|
+
}
|
49
|
+
|
50
|
+
@musha.def(:sent_on) { }
|
51
|
+
@musha.def(:subject) { }
|
52
|
+
@musha.def(:from) { }
|
53
|
+
@musha.def(:recipients) { }
|
54
|
+
@musha.def(:body) { }
|
55
|
+
@musha.swap {
|
56
|
+
assert_nothing_raised { @instance.__send__(:build_message, options) }
|
57
|
+
assert_raise(ArgumentError) { @instance.__send__(:build_message, options.merge(:subject => nil)) }
|
58
|
+
assert_raise(ArgumentError) { @instance.__send__(:build_message, options.merge(:from => nil)) }
|
59
|
+
assert_raise(ArgumentError) { @instance.__send__(:build_message, options.merge(:recipients => nil)) }
|
60
|
+
assert_raise(ArgumentError) { @instance.__send__(:build_message, options.merge(:body => nil)) }
|
61
|
+
}
|
62
|
+
end
|
63
|
+
end
|