sugoi-mail 0.1.0 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- data/INSTALL +94 -0
- data/app/apis/mailservice_api.rb +32 -22
- data/app/controllers/account_controller.rb +38 -22
- data/app/controllers/address_controller.rb +2 -0
- data/app/controllers/application.rb +12 -1
- data/app/controllers/base_user_controller.rb +29 -0
- data/app/controllers/domain_controller.rb +7 -8
- data/app/controllers/mail_admin_controller.rb +275 -0
- data/app/controllers/mailinglist_controller.rb +68 -14
- data/app/controllers/mailservice_controller.rb +116 -94
- data/app/controllers/navigation_controller.rb +3 -0
- data/app/controllers/root_admin_controller.rb +346 -0
- data/app/controllers/sugoi_admin_controller.rb +16 -13
- data/app/helpers/base_user_helper.rb +2 -0
- data/app/helpers/mail_admin_helper.rb +7 -0
- data/app/helpers/navigation_helper.rb +2 -0
- data/app/helpers/root_admin_helper.rb +2 -0
- data/app/models/address.rb +3 -4
- data/app/models/domain.rb +1 -1
- data/app/models/mail_admin.rb +2 -0
- data/app/models/mailinglist.rb +41 -19
- data/app/models/mailinglist_class.rb +1 -0
- data/app/models/message.rb +18 -36
- data/app/models/proxy_link.rb +14 -6
- data/app/views/account/login.rhtml +14 -12
- data/app/views/account/logout.rhtml +4 -8
- data/app/views/account/welcome.rhtml +3 -13
- data/app/views/base_user/add_address.rhtml +3 -0
- data/app/views/base_user/edit_address.rhtml +3 -0
- data/app/views/base_user/edit_user_list.rhtml +21 -0
- data/app/views/base_user/list_mailinglists.rhtml +3 -0
- data/app/views/base_user/remove_address.rhtml +3 -0
- data/app/views/base_user/unsubscribe_self.rhtml +3 -0
- data/app/views/layouts/application.rhtml +47 -0
- data/app/views/layouts/login.rhtml +34 -0
- data/app/views/layouts/sugoi_admin.rhtml +1 -0
- data/app/views/mail_admin/_form.rhtml +11 -0
- data/app/views/mail_admin/edit_admin_message.rhtml +12 -0
- data/app/views/mail_admin/list_admin_messages.rhtml +20 -0
- data/app/views/mail_admin/new_admin_message.rhtml +0 -0
- data/app/views/mailinglist/_address_form.rhtml +23 -0
- data/app/views/mailinglist/_form.rhtml +10 -14
- data/app/views/mailinglist/_new_class_form.rhtml +16 -0
- data/app/views/mailinglist/_new_form.rhtml +30 -0
- data/app/views/mailinglist/edit.rhtml +11 -5
- data/app/views/mailinglist/list.rhtml +15 -15
- data/app/views/mailinglist/list_mailinglist_classes.rhtml +18 -0
- data/app/views/mailinglist/new.rhtml +5 -5
- data/app/views/mailinglist/new_address.rhtml +10 -0
- data/app/views/mailinglist/new_mailinglist_class.rhtml +8 -0
- data/app/views/mailinglist/show.rhtml +15 -13
- data/app/views/navigation/_base_add_address_module.rhtml +2 -0
- data/app/views/navigation/_base_edit_address_module.rhtml +2 -0
- data/app/views/navigation/_base_edit_user_list_module.rhtml +5 -0
- data/app/views/navigation/_base_index_module.rhtml +2 -0
- data/app/views/navigation/_base_list_mailinglists_module.rhtml +3 -0
- data/app/views/navigation/_base_remove_address_module.rhtml +2 -0
- data/app/views/navigation/_base_unsubscribe_self_module.rhtml +2 -0
- data/app/views/navigation/_base_welcome_module.rhtml +3 -0
- data/app/views/navigation/_nav_module.rhtml +77 -0
- data/app/views/navigation/_root_add_address_module.rhtml +3 -0
- data/app/views/navigation/_root_add_mailinglist_module.rhtml +3 -0
- data/app/views/navigation/_root_add_user_module.rhtml +3 -0
- data/app/views/navigation/_root_change_user_password_module.rhtml +3 -0
- data/app/views/navigation/_root_edit_address_module.rhtml +13 -0
- data/app/views/navigation/_root_edit_mailinglist_module.rhtml +12 -0
- data/app/views/navigation/_root_edit_user_list_module.rhtml +3 -0
- data/app/views/navigation/_root_edit_user_module.rhtml +10 -0
- data/app/views/navigation/_root_index_module.rhtml +4 -0
- data/app/views/navigation/_root_list_addresses_module.rhtml +11 -0
- data/app/views/navigation/_root_list_mailinglists_module.rhtml +11 -0
- data/app/views/navigation/_root_list_users_module.rhtml +12 -0
- data/app/views/navigation/_root_remove_address_module.rhtml +12 -0
- data/app/views/navigation/_root_remove_mailinglist_module.rhtml +12 -0
- data/app/views/navigation/_root_remove_user_module.rhtml +12 -0
- data/app/views/navigation/_root_show_user_module.rhtml +10 -0
- data/app/views/navigation/_root_welcome_module.rhtml +3 -0
- data/app/views/navigation/chooseNav.rhtml +0 -0
- data/app/views/navigation/logout.rhtml +8 -0
- data/app/views/root_admin/_form.rhtml +21 -0
- data/app/views/root_admin/add_address.rhtml +3 -0
- data/app/views/root_admin/add_mailinglist.rhtml +3 -0
- data/app/views/root_admin/admin_user_list.rhtml +29 -0
- data/app/views/root_admin/admin_user_new.rhtml +8 -0
- data/app/views/root_admin/change_user_password.rhtml +3 -0
- data/app/views/root_admin/edit_address.rhtml +3 -0
- data/app/views/root_admin/edit_mailinglist.rhtml +3 -0
- data/app/views/root_admin/edit_user_list.rhtml +3 -0
- data/app/views/root_admin/list_addresses.rhtml +3 -0
- data/app/views/root_admin/list_mailinglists.rhtml +3 -0
- data/app/views/root_admin/list_users.rhtml +32 -0
- data/app/views/root_admin/remove_address.rhtml +3 -0
- data/app/views/root_admin/remove_mailinglist.rhtml +3 -0
- data/app/views/root_admin/remove_user.rhtml +3 -0
- data/app/views/root_admin/show_user.rhtml +3 -0
- data/app/views/sugoi_admin/_command_description.rhtml +1 -1
- data/app/views/sugoi_admin/_command_list.rhtml +1 -1
- data/app/views/sugoi_admin/create_domain.rhtml +1 -1
- data/app/views/sugoi_admin/create_list.rhtml +1 -1
- data/app/views/sugoi_admin/create_user.rhtml +1 -1
- data/app/views/sugoi_admin/help.rhtml +1 -1
- data/app/views/sugoi_admin/init.rhtml +1 -1
- data/app/views/sugoi_admin/list_addresses.rhtml +1 -1
- data/app/views/sugoi_admin/list_domains.rhtml +1 -1
- data/app/views/sugoi_admin/list_mailinglist_classes.rhtml +1 -1
- data/app/views/sugoi_admin/list_mailinglists.rhtml +1 -1
- data/app/views/sugoi_admin/list_users.rhtml +1 -1
- data/app/views/sugoi_admin/set_config.rhtml +4 -1
- data/app/views/sugoi_admin/show_config.rhtml +1 -1
- data/app/views/sugoi_admin/subscribe.rhtml +1 -1
- data/app/views/sugoi_admin/unsubscribe.rhtml +1 -1
- data/bin/maild +1 -1
- data/bin/sugoi-mail +1 -1
- data/config/environment.rb +2 -2
- data/config/routes.rb +4 -2
- data/db/migrate/028_add_sessions.rb +15 -0
- data/db/schema.rb +56 -48
- data/lib/login_system.rb +6 -6
- data/lib/tasks/release.rake +2 -2
- data/public/404.html +27 -5
- data/public/500.html +27 -5
- data/public/images/celltop1.jpg +0 -0
- data/public/images/title11.jpg +0 -0
- data/public/{index.html → index_default.html} +0 -0
- data/public/javascripts/dragdrop.js +1 -1
- data/public/javascripts/effects.js +1 -1
- data/public/javascripts/prototype.js +1 -1
- data/public/stylesheets/global.css +201 -0
- data/public/stylesheets/scaffold.css +176 -11
- data/public/stylesheets/trestle.css +176 -11
- data/script/cover +6 -0
- data/script/process/inspector +3 -0
- data/test/all.rb +2 -0
- data/test/fixtures/helps.yml +1 -1
- data/test/fixtures/mailinglist_classes.yml +4 -4
- data/test/fixtures/messages.yml +22 -2
- data/test/functional/base_user_controller_test.rb +18 -0
- data/test/functional/mail_admin_controller_test.rb +18 -0
- data/test/functional/mailservice_controller_test.rb +164 -19
- data/test/functional/navigation_controller_test.rb +18 -0
- data/test/functional/root_admin_controller_test.rb +18 -0
- data/test/functional/sugoi_admin_controller_test.rb +68 -10
- data/test/functionals.rb +2 -1
- data/test/integration/test_soap.rb +3 -1
- data/test/unit/address_test.rb +16 -1
- data/test/unit/domain_test.rb +5 -12
- data/test/unit/mailinglist_class_test.rb +2 -2
- data/test/unit/mailinglist_test.rb +138 -3
- data/test/unit/message_test.rb +256 -1
- data/test/unit/proxy_link_test.rb +37 -0
- data/test/unit/sys_config_test.rb +6 -0
- data/test/unit/user_test.rb +20 -0
- data/test/units.rb +2 -1
- metadata +94 -8
- data/app/views/layouts/address.rhtml +0 -13
- data/app/views/layouts/scaffold.rhtml +0 -13
@@ -1,6 +1,7 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/../test_helper'
|
2
2
|
require 'mailservice_controller'
|
3
3
|
require 'net-smtp-stub'
|
4
|
+
require 'pp'
|
4
5
|
|
5
6
|
# Re-raise errors caught by the controller.
|
6
7
|
class MailserviceController; def rescue_action(e) raise e end; end
|
@@ -95,7 +96,8 @@ class TC_Mailservice_DomainLogin < MailserviceControllerTest
|
|
95
96
|
|
96
97
|
def test_baddomain
|
97
98
|
# bad username, bad password
|
98
|
-
assert_equal(false, invoke(:domain_login,"junkdomain", "blort")
|
99
|
+
assert_equal(false, invoke(:domain_login,"junkdomain", "blort"),
|
100
|
+
"logging in shouldn't have worked here")
|
99
101
|
|
100
102
|
# good username, bad password
|
101
103
|
assert_equal(false, invoke(:domain_login,@domain_name, "blort"))
|
@@ -140,7 +142,7 @@ class TC_Mailservice_TroublesomeAdminTask < MailserviceDomainAdmin
|
|
140
142
|
assert invoke(:is_admin)
|
141
143
|
end
|
142
144
|
assert_nothing_raised do
|
143
|
-
assert invoke(:admin_user_signup,"newuser", "password", "password")
|
145
|
+
assert invoke(:admin_user_signup,"newuser", "New User", "password", "password", false, false)
|
144
146
|
end
|
145
147
|
|
146
148
|
# user exists, login succeeds
|
@@ -156,19 +158,27 @@ class TC_Mailservice_TroublesomeAdminTask < MailserviceDomainAdmin
|
|
156
158
|
end
|
157
159
|
end
|
158
160
|
|
161
|
+
class TC_Mailservice_DeleteSelf < MailserviceDomainAdmin
|
162
|
+
def test_deleteself
|
163
|
+
assert_raises RuntimeError do
|
164
|
+
invoke(:admin_user_delete, "root", "root")
|
165
|
+
end
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
159
169
|
class TC_Mailservice_AdminTasks_UserCreation < MailserviceDomainAdmin
|
160
170
|
def test_passwordmismatch
|
161
171
|
assert invoke(:is_admin)
|
162
172
|
# password doesn't match
|
163
173
|
assert_raises RuntimeError do
|
164
|
-
invoke(:admin_user_signup,"newuser", "password", "drowssap")
|
174
|
+
invoke(:admin_user_signup,"newuser", "New User", "password", "drowssap", false, false)
|
165
175
|
end
|
166
176
|
end
|
167
177
|
|
168
178
|
def test_usercreate
|
169
179
|
# user doesn't exist; gets created
|
170
180
|
assert invoke(:is_admin)
|
171
|
-
assert invoke(:admin_user_signup,"newuser", "password", "password")
|
181
|
+
assert invoke(:admin_user_signup,"newuser", "New User", "password", "password", false, false)
|
172
182
|
assert_raises RuntimeError do
|
173
183
|
assert invoke(:admin_user_delete,"newuser", "resuwen"),
|
174
184
|
"login and confirmation don't match on delete"
|
@@ -183,10 +193,10 @@ class TC_Mailservice_AdminTasks_UserCreation < MailserviceDomainAdmin
|
|
183
193
|
assert_nothing_raised do
|
184
194
|
assert invoke(:is_admin)
|
185
195
|
end
|
186
|
-
assert invoke(:admin_user_signup,"newuser", "password", "password")
|
196
|
+
assert invoke(:admin_user_signup,"newuser", "New User", "password", "password", false, false)
|
187
197
|
# user already exists; creation fails
|
188
198
|
assert_raises RuntimeError do
|
189
|
-
invoke(:admin_user_signup,"newuser", "password", "password")
|
199
|
+
invoke(:admin_user_signup,"newuser", "New User", "password", "password", false, false)
|
190
200
|
end
|
191
201
|
assert invoke(:admin_user_delete,"newuser", "newuser")
|
192
202
|
end
|
@@ -204,6 +214,14 @@ class TC_Mailservice_AdminTasks_UserCreation < MailserviceDomainAdmin
|
|
204
214
|
[ "nodesc", nil ],
|
205
215
|
[ "proxuser", "Proxy Mailing List" ]
|
206
216
|
].sort, list.sort
|
217
|
+
|
218
|
+
list = nil
|
219
|
+
assert_nothing_raised do
|
220
|
+
list = invoke :admin_user_collection
|
221
|
+
end
|
222
|
+
assert list
|
223
|
+
assert_equal [ @admin_name, "testuser", "virtuser", "nodesc",
|
224
|
+
"proxuser" ].sort, list.map { |u| u.login }.sort
|
207
225
|
end
|
208
226
|
|
209
227
|
end
|
@@ -214,30 +232,47 @@ class TC_Mailservice_AdminTasks_UserDeletion < MailserviceDomainAdmin
|
|
214
232
|
assert invoke(:is_admin)
|
215
233
|
end
|
216
234
|
|
235
|
+
# Check the user isn't there
|
236
|
+
assert_equal 0, User.find_all_by_login("newuser").length
|
237
|
+
|
217
238
|
# create the user
|
239
|
+
result = nil
|
218
240
|
assert_nothing_raised do
|
219
|
-
|
241
|
+
result = invoke(:admin_user_signup,"newuser", "New User", "password", "password", false, false)
|
220
242
|
end
|
243
|
+
assert_equal true, result, "user to be deleted successfully created"
|
244
|
+
|
245
|
+
assert_equal 1, User.find_all_by_login("newuser").length
|
221
246
|
|
222
247
|
# user exists; deletion succeeds
|
248
|
+
result = nil
|
223
249
|
assert_nothing_raised do
|
224
|
-
|
250
|
+
result=invoke(:admin_user_delete,"newuser", "newuser")
|
225
251
|
end
|
252
|
+
assert_equal true, result, "user delete should succeed"
|
253
|
+
|
254
|
+
assert_equal [], User.find_all_by_login("newuser")
|
226
255
|
|
227
256
|
# user doesn't exist; login fails
|
257
|
+
result=nil
|
228
258
|
assert_nothing_raised do
|
229
|
-
|
259
|
+
result=invoke(:user_login,"newuser", "password")
|
230
260
|
end
|
261
|
+
assert_equal false, result, "deleted user shouldn't be able to log in"
|
231
262
|
|
232
263
|
# okay, our session's just been trashed again. Get it back.
|
264
|
+
result=nil
|
233
265
|
assert_nothing_raised do
|
234
|
-
|
266
|
+
result=invoke(:user_login,@admin_name, "foobar")
|
235
267
|
end
|
268
|
+
assert_equal result, true
|
236
269
|
|
237
270
|
# user doesn't exist; deletion fails
|
271
|
+
result=nil
|
238
272
|
assert_nothing_raised do
|
239
|
-
|
273
|
+
result = invoke(:admin_user_delete,"newuser", "newuser")
|
240
274
|
end
|
275
|
+
assert_equal false, result
|
241
276
|
end
|
242
277
|
end
|
243
278
|
|
@@ -269,6 +304,38 @@ class TC_Mailservice_AdminTasks_UserPasswords < MailserviceDomainAdmin
|
|
269
304
|
end
|
270
305
|
end
|
271
306
|
|
307
|
+
class TC_Mailservice_AdminTasks_AllMailinglists < MailserviceDomainAdmin
|
308
|
+
def test_all_mailinglists
|
309
|
+
assert invoke(:is_admin)
|
310
|
+
|
311
|
+
result = nil
|
312
|
+
assert_nothing_raised do
|
313
|
+
result = invoke(:admin_mailinglists_all)
|
314
|
+
end
|
315
|
+
|
316
|
+
assert_equal ["nodesc", "nodescml", "proxuser", "root",
|
317
|
+
"testml", "testuser", "virtml", "virtuser"],
|
318
|
+
result.map { |ml| ml.name }.sort
|
319
|
+
end
|
320
|
+
end
|
321
|
+
|
322
|
+
# class TC_Mailservice_AdminTasks_Users < MailserviceDomainAdmin
|
323
|
+
# def test_user_collection
|
324
|
+
# assert invoke :is_admin
|
325
|
+
# collection = nil
|
326
|
+
# assert_nothing_raised do
|
327
|
+
# collection = invoke :admin_user_collection
|
328
|
+
# end
|
329
|
+
# assert_equal(@loaded_fixtures["users"].find_all do |user|
|
330
|
+
# pp user
|
331
|
+
# user["domain_id"] == "1"
|
332
|
+
# end.map do |user|
|
333
|
+
# user.id.to_i
|
334
|
+
# end.sort, collection.map { |u| u.id }.sort)
|
335
|
+
# end
|
336
|
+
# end
|
337
|
+
|
338
|
+
|
272
339
|
class TC_Mailservice_UserTasks_ChangePassword < MailserviceUserLogin
|
273
340
|
def test_normal
|
274
341
|
assert_nothing_raised do
|
@@ -309,13 +376,28 @@ class TC_Mailservice_UserTasks_RealName < MailserviceUserLogin
|
|
309
376
|
end
|
310
377
|
|
311
378
|
def test_change
|
379
|
+
oldpassword = User.find_by_login("testuser").password
|
380
|
+
|
381
|
+
old_pw = User.find(@loaded_fixtures["users"]["testuser"]["id"]).password
|
382
|
+
result = nil
|
312
383
|
assert_nothing_raised do
|
313
|
-
|
314
|
-
"foobar",
|
315
|
-
@new_name)
|
384
|
+
result = invoke(:user_change_real_name, "foobar", @new_name)
|
316
385
|
end
|
317
386
|
|
387
|
+
assert_equal @new_name, result
|
388
|
+
|
389
|
+
newpassword = User.find_by_login("testuser").password
|
390
|
+
|
391
|
+
|
392
|
+
new_pw = User.find(@loaded_fixtures["users"]["testuser"]["id"]).password
|
318
393
|
assert_equal @new_name, invoke(:user_real_name)
|
394
|
+
|
395
|
+
assert_equal old_pw, new_pw
|
396
|
+
end
|
397
|
+
|
398
|
+
def test_change_twice
|
399
|
+
test_change
|
400
|
+
test_change
|
319
401
|
end
|
320
402
|
|
321
403
|
def test_bad_password
|
@@ -323,6 +405,12 @@ class TC_Mailservice_UserTasks_RealName < MailserviceUserLogin
|
|
323
405
|
invoke(:user_change_real_name, "nofoobar", @new_name)
|
324
406
|
end
|
325
407
|
end
|
408
|
+
|
409
|
+
def test_excessively_long_new_name
|
410
|
+
assert_raises RuntimeError do
|
411
|
+
invoke(:user_change_real_name, "foobar", "x"*16384)
|
412
|
+
end
|
413
|
+
end
|
326
414
|
end
|
327
415
|
|
328
416
|
class TC_MailService_EmailAddresses < MailserviceUserLogin
|
@@ -354,11 +442,13 @@ class TC_MailService_EmailAddresses < MailserviceUserLogin
|
|
354
442
|
assert_equal [ "address1@foo.test" ],
|
355
443
|
invoke(:user_email_addresses_confirmed).sort
|
356
444
|
end
|
445
|
+
result = nil
|
357
446
|
assert_nothing_raised do
|
358
|
-
|
359
|
-
invoke(:user_email_addresses_unconfirmed).sort
|
447
|
+
result = invoke(:user_email_addresses_unconfirmed).sort
|
360
448
|
end
|
361
449
|
|
450
|
+
assert_equal [ "address2@foo.test", "brandnewuser@foo.test" ], result
|
451
|
+
|
362
452
|
confirmation_code=get_confirmation_code("testuser",
|
363
453
|
"brandnewuser@foo.test")
|
364
454
|
|
@@ -400,6 +490,28 @@ class TC_MailService_EmailAddresses < MailserviceUserLogin
|
|
400
490
|
end
|
401
491
|
end
|
402
492
|
|
493
|
+
class TC_AdminConfirmationCode < MailserviceDomainAdmin
|
494
|
+
def test_confirmation_code_confirmed
|
495
|
+
result = nil
|
496
|
+
assert_nothing_raised do
|
497
|
+
result = invoke(:admin_get_confirmation_code, "testuser",
|
498
|
+
"address1@foo.test")
|
499
|
+
end
|
500
|
+
assert_equal @loaded_fixtures["confirmationcodes"]\
|
501
|
+
["confirmationcode_testuser_address1"]["code"], result
|
502
|
+
end
|
503
|
+
|
504
|
+
def test_confirmation_code_not_confirmed
|
505
|
+
result = nil
|
506
|
+
assert_nothing_raised do
|
507
|
+
result = invoke(:admin_get_confirmation_code, "testuser",
|
508
|
+
"address2@foo.test")
|
509
|
+
end
|
510
|
+
assert_equal @loaded_fixtures["confirmationcodes"]\
|
511
|
+
["confirmationcode_testuser_address2"]["code"], result
|
512
|
+
end
|
513
|
+
end
|
514
|
+
|
403
515
|
class TC_Mailservice_MailinglistClasses < MailserviceUserLogin
|
404
516
|
|
405
517
|
def setup
|
@@ -412,7 +524,7 @@ class TC_Mailservice_MailinglistClasses < MailserviceUserLogin
|
|
412
524
|
|
413
525
|
def test_get_mailinglist_classes
|
414
526
|
assert_equal [ 'Distribution List', 'Mailing List',
|
415
|
-
'Proxifiable
|
527
|
+
'Proxifiable forwarding mailing list' ],
|
416
528
|
invoke(:mailinglist_classes).sort
|
417
529
|
end
|
418
530
|
|
@@ -442,7 +554,7 @@ end
|
|
442
554
|
class TC_Mailservice_UserMailingLists < MailserviceUserLogin
|
443
555
|
def test_mailinglists
|
444
556
|
user_mailinglists=invoke(:user_mailinglists)
|
445
|
-
assert_equal [ 3 ],
|
557
|
+
assert_equal [ Mailinglist.find(3) ],
|
446
558
|
invoke(:user_mailinglists)
|
447
559
|
assert_equal "testml", invoke(:mailinglist_name,3)
|
448
560
|
end
|
@@ -450,7 +562,39 @@ end
|
|
450
562
|
|
451
563
|
class TC_Mailservice_CreateMailinglist < MailserviceUserLogin
|
452
564
|
def test_create_mailinglist
|
453
|
-
assert_equal
|
565
|
+
assert_equal true,
|
566
|
+
invoke(:mailinglist_create, "testmailinglist", "Mailing List")
|
567
|
+
assert id = invoke(:mailinglist_find_by_name, "testmailinglist")
|
568
|
+
assert invoke(:mailinglist_delete, id)
|
569
|
+
assert_equal nil, invoke(:mailinglist_find_by_name, "testmailinglist")
|
570
|
+
end
|
571
|
+
|
572
|
+
def test_create_mailinglist_nonexistent_class
|
573
|
+
assert_raises RuntimeError,
|
574
|
+
"Class does not exist (check MailinglistClasses for list)" do
|
575
|
+
invoke(:mailinglist_create, "testmailinglist", "nonexistent")
|
576
|
+
end
|
577
|
+
end
|
578
|
+
end
|
579
|
+
|
580
|
+
class TC_Mailservice_GetMailinglistById < MailserviceUserLogin
|
581
|
+
def test_my_mailinglist
|
582
|
+
assert_equal "testml@test.domain", invoke(:mailinglist_address,3)
|
583
|
+
end
|
584
|
+
|
585
|
+
def test_not_my_mailinglist
|
586
|
+
assert_raises RuntimeError, "Permission denied" do
|
587
|
+
invoke(:mailinglist_address,4)
|
588
|
+
end
|
589
|
+
end
|
590
|
+
|
591
|
+
end
|
592
|
+
|
593
|
+
class TC_Mailservice_CreateMailinglist_after_changing_name < TC_Mailservice_UserTasks_RealName
|
594
|
+
def test_create_mailinglist
|
595
|
+
test_change
|
596
|
+
|
597
|
+
assert_equal true,
|
454
598
|
invoke(:mailinglist_create, "testmailinglist", "Mailing List")
|
455
599
|
assert id = invoke(:mailinglist_find_by_name, "testmailinglist")
|
456
600
|
assert invoke(:mailinglist_delete, id)
|
@@ -458,6 +602,7 @@ class TC_Mailservice_CreateMailinglist < MailserviceUserLogin
|
|
458
602
|
end
|
459
603
|
end
|
460
604
|
|
605
|
+
|
461
606
|
class MailserviceUserMailinglist < MailserviceUserLogin
|
462
607
|
def setup
|
463
608
|
super
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper'
|
2
|
+
require 'navigation_controller'
|
3
|
+
|
4
|
+
# Re-raise errors caught by the controller.
|
5
|
+
class NavigationController; def rescue_action(e) raise e end; end
|
6
|
+
|
7
|
+
class NavigationControllerTest < Test::Unit::TestCase
|
8
|
+
def setup
|
9
|
+
@controller = NavigationController.new
|
10
|
+
@request = ActionController::TestRequest.new
|
11
|
+
@response = ActionController::TestResponse.new
|
12
|
+
end
|
13
|
+
|
14
|
+
# Replace this with your real tests.
|
15
|
+
def test_truth
|
16
|
+
assert true
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper'
|
2
|
+
require 'root_admin_controller'
|
3
|
+
|
4
|
+
# Re-raise errors caught by the controller.
|
5
|
+
class RootAdminController; def rescue_action(e) raise e end; end
|
6
|
+
|
7
|
+
class RootAdminControllerTest < Test::Unit::TestCase
|
8
|
+
def setup
|
9
|
+
@controller = RootAdminController.new
|
10
|
+
@request = ActionController::TestRequest.new
|
11
|
+
@response = ActionController::TestResponse.new
|
12
|
+
end
|
13
|
+
|
14
|
+
# Replace this with your real tests.
|
15
|
+
def test_truth
|
16
|
+
assert true
|
17
|
+
end
|
18
|
+
end
|
@@ -1,9 +1,8 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/../test_helper'
|
2
2
|
require 'sugoi_admin_controller'
|
3
|
+
require 'pp'
|
3
4
|
|
4
5
|
class SugoiAdminController;
|
5
|
-
# Re-raise errors caught by the controller.
|
6
|
-
def rescue_action(e) raise e end
|
7
6
|
|
8
7
|
@@ask_responses = []
|
9
8
|
|
@@ -15,6 +14,10 @@ class SugoiAdminController;
|
|
15
14
|
# chuck away the prompt
|
16
15
|
return @@ask_responses.shift || "test_password"
|
17
16
|
end
|
17
|
+
|
18
|
+
private
|
19
|
+
# Re-raise errors caught by the controller.
|
20
|
+
def rescue_action(e) raise e end
|
18
21
|
end
|
19
22
|
|
20
23
|
def stuff_ask(*responses)
|
@@ -42,6 +45,42 @@ class SugoiAdminControllerTest < Test::Unit::TestCase
|
|
42
45
|
assert true
|
43
46
|
end
|
44
47
|
|
48
|
+
def test_show_config_all_vars
|
49
|
+
assert_nothing_raised do
|
50
|
+
invoke "show_config"
|
51
|
+
end
|
52
|
+
|
53
|
+
assert_equal @loaded_fixtures["sys_configs"].length,
|
54
|
+
assigns["config_vars"].length
|
55
|
+
end
|
56
|
+
|
57
|
+
|
58
|
+
def test_show_config_one_var
|
59
|
+
assert_nothing_raised do
|
60
|
+
invoke "show_config", "smtpserver"
|
61
|
+
end
|
62
|
+
|
63
|
+
assert_equal "localhost", assigns["config_vars"][0].value
|
64
|
+
end
|
65
|
+
|
66
|
+
def test_set_config_existent_value
|
67
|
+
assert_nothing_raised do
|
68
|
+
invoke "set_config", "smtpserver", "mail.google.com" # heh
|
69
|
+
end
|
70
|
+
|
71
|
+
assert_equal "mail.google.com", SysConfig.smtpserver
|
72
|
+
assert_equal assigns["config_var"].name, "smtpserver"
|
73
|
+
end
|
74
|
+
|
75
|
+
def test_set_config_nonexistent_value
|
76
|
+
assert_nothing_raised do
|
77
|
+
invoke "set_config", "scoobydoobyhoobiefloobiekerwhee", 42
|
78
|
+
end
|
79
|
+
|
80
|
+
assert_equal "scoobydoobyhoobiefloobiekerwhee",
|
81
|
+
assigns["missing_config_name"]
|
82
|
+
end
|
83
|
+
|
45
84
|
def test_list_domains
|
46
85
|
assert_nothing_raised do
|
47
86
|
invoke "list_domains"
|
@@ -272,7 +311,26 @@ class SugoiAdminControllerTest < Test::Unit::TestCase
|
|
272
311
|
assert_equal ["address2@foo.test"], ml.addresses.map { |a| a.address }
|
273
312
|
end
|
274
313
|
|
275
|
-
def
|
314
|
+
def test_unsubscribe_address_from_mailing_list_that_doesnt_exist
|
315
|
+
assert_nothing_raised do
|
316
|
+
invoke "unsubscribe", "nonexistent@test.domain", "address1@foo.test"
|
317
|
+
end
|
318
|
+
|
319
|
+
assert assigns["error"]
|
320
|
+
assert_equal "unsubscribe: Mailing list \"nonexistent@test.domain\" unknown.", assigns["error"]
|
321
|
+
end
|
322
|
+
|
323
|
+
def test_unsubscribe_address_not_actually_subscribed_to_a_mailing_list
|
324
|
+
assert_nothing_raised do
|
325
|
+
invoke "unsubscribe", "testuser@test.domain", "external@foo.test"
|
326
|
+
end
|
327
|
+
|
328
|
+
assert assigns["error"]
|
329
|
+
assert_equal "unsubscribe: Address \"external@foo.test\" not in mailing list \"testuser@test.domain\"", assigns["error"]
|
330
|
+
assert_nil assigns["removed_addresses"]
|
331
|
+
end
|
332
|
+
|
333
|
+
def test_unsubscribe_entirely_unknown_address_from_mailinglist
|
276
334
|
assert_nothing_raised do
|
277
335
|
invoke "unsubscribe", "testuser@test.domain", "nonexistent@foo.test"
|
278
336
|
end
|
@@ -302,7 +360,7 @@ class SugoiAdminControllerTest < Test::Unit::TestCase
|
|
302
360
|
assert assigns.grep(/MailinglistClass/).length == 0
|
303
361
|
|
304
362
|
assert_equal @loaded_fixtures["mailinglist_classes"].length,
|
305
|
-
MailinglistClass.
|
363
|
+
MailinglistClass.find(:all).length
|
306
364
|
end
|
307
365
|
|
308
366
|
def test_init_sysconfigs
|
@@ -317,7 +375,7 @@ class SugoiAdminControllerTest < Test::Unit::TestCase
|
|
317
375
|
assert assigns.grep(/SysConfig/).length == 0
|
318
376
|
|
319
377
|
assert_equal @loaded_fixtures["sys_configs"].length,
|
320
|
-
SysConfig.
|
378
|
+
SysConfig.find(:all).length
|
321
379
|
end
|
322
380
|
|
323
381
|
def test_init_adminmessages
|
@@ -332,7 +390,7 @@ class SugoiAdminControllerTest < Test::Unit::TestCase
|
|
332
390
|
assert assigns.grep(/AdminMessages/).length == 0
|
333
391
|
|
334
392
|
assert_equal @loaded_fixtures["admin_messages"].length,
|
335
|
-
AdminMessage.
|
393
|
+
AdminMessage.find(:all).length
|
336
394
|
end
|
337
395
|
|
338
396
|
def test_init_all
|
@@ -348,13 +406,13 @@ class SugoiAdminControllerTest < Test::Unit::TestCase
|
|
348
406
|
assert_equal 0, assigns["alreadythere"].length
|
349
407
|
|
350
408
|
assert_equal @loaded_fixtures["mailinglist_classes"].length,
|
351
|
-
MailinglistClass.
|
409
|
+
MailinglistClass.find(:all).length
|
352
410
|
assert_equal @loaded_fixtures["sys_configs"].length,
|
353
|
-
SysConfig.
|
411
|
+
SysConfig.find(:all).length
|
354
412
|
assert_equal @loaded_fixtures["admin_messages"].length,
|
355
|
-
AdminMessage.
|
413
|
+
AdminMessage.find(:all).length
|
356
414
|
assert_equal @loaded_fixtures["helps"].length,
|
357
|
-
Help.
|
415
|
+
Help.find(:all).length
|
358
416
|
end
|
359
417
|
|
360
418
|
def test_init_no_clobber_values
|
data/test/functionals.rb
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
require "rubygems"
|
2
|
+
gem "soap4r"
|
3
|
+
|
1
4
|
ENV["RAILS_ENV"] = "test"
|
2
5
|
require File.expand_path(File.dirname(__FILE__) + "/../../config/environment")
|
3
6
|
require 'test_help'
|
@@ -7,7 +10,6 @@ require 'test_help'
|
|
7
10
|
# Test SOAP client
|
8
11
|
#------------------------------------------------------------------------
|
9
12
|
|
10
|
-
require "rubygems"
|
11
13
|
File.unlink *%w{Mailservice.rb
|
12
14
|
MailserviceServiceClient.rb
|
13
15
|
MailserviceDriver.rb} rescue nil
|
data/test/unit/address_test.rb
CHANGED
@@ -2,7 +2,7 @@ require File.dirname(__FILE__) + '/../test_helper'
|
|
2
2
|
|
3
3
|
class AddressTest < Test::Unit::TestCase
|
4
4
|
fixtures :mailinglists, :users, :addresses_mailinglists, :addresses,
|
5
|
-
:domains, :sys_configs
|
5
|
+
:domains, :sys_configs, :proxy_links
|
6
6
|
|
7
7
|
def test_parse_1
|
8
8
|
assert_equal [ 'address1@foo.test', 'Address One'],
|
@@ -36,6 +36,21 @@ class AddressTest < Test::Unit::TestCase
|
|
36
36
|
'an address it doesn\'t know about without a proxy address'
|
37
37
|
end
|
38
38
|
|
39
|
+
def test_proxified_address
|
40
|
+
assert_equal "testuser-42@test.domain",
|
41
|
+
Address.find_by_address("addressmessage1@foo.test").
|
42
|
+
proxified(Mailinglist.find(1)), "proxy link already in fixture"
|
43
|
+
assert_equal "testuser-43@test.domain",
|
44
|
+
Address.find_or_create_by_address("testnonactive@foo.test").
|
45
|
+
proxified(Mailinglist.find(1)), "proxy link not in fixture"
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_outside_address
|
49
|
+
assert_equal false, Address.find(1).outside?
|
50
|
+
assert_equal true, Address.find(3).outside?
|
51
|
+
assert_equal true, Address.find_or_create_by_address("definitely-outside@foo.test").outside?
|
52
|
+
end
|
53
|
+
|
39
54
|
def test_string_conversion
|
40
55
|
assert_equal 'address1@foo.test', Address.find(1).to_s
|
41
56
|
assert_equal 'address2@foo.test', Address.find(2).to_s
|
data/test/unit/domain_test.rb
CHANGED
@@ -113,16 +113,9 @@ class DomainTest < Test::Unit::TestCase
|
|
113
113
|
assert_equal '826005bc4b82d02a3e6097556a45083375fe556c', u.password
|
114
114
|
end
|
115
115
|
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
# unless result == true
|
122
|
-
# d.errors.each do |thing, string|
|
123
|
-
# puts "#{thing}: #{string}"
|
124
|
-
# end
|
125
|
-
# end
|
126
|
-
# assert result
|
127
|
-
# end
|
116
|
+
def test_change_nothing
|
117
|
+
d = Domain.find_by_name "test.domain"
|
118
|
+
result = d.save
|
119
|
+
assert result
|
120
|
+
end
|
128
121
|
end
|
@@ -21,8 +21,8 @@ class MailinglistClassTest < Test::Unit::TestCase
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def test_ltma_parameters
|
24
|
-
assert_equal "
|
25
|
-
assert_equal "
|
24
|
+
assert_equal "Forwarding address",@ltma_class.name
|
25
|
+
assert_equal "Address for forwarding mail to", @ltma_class.description
|
26
26
|
assert_equal false, @ltma_class.moderated
|
27
27
|
assert_equal true, @ltma_class.public
|
28
28
|
assert_equal true, @ltma_class.confirmation
|