sugoi-mail 0.1.0 → 0.1.5

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 (156) hide show
  1. data/INSTALL +94 -0
  2. data/app/apis/mailservice_api.rb +32 -22
  3. data/app/controllers/account_controller.rb +38 -22
  4. data/app/controllers/address_controller.rb +2 -0
  5. data/app/controllers/application.rb +12 -1
  6. data/app/controllers/base_user_controller.rb +29 -0
  7. data/app/controllers/domain_controller.rb +7 -8
  8. data/app/controllers/mail_admin_controller.rb +275 -0
  9. data/app/controllers/mailinglist_controller.rb +68 -14
  10. data/app/controllers/mailservice_controller.rb +116 -94
  11. data/app/controllers/navigation_controller.rb +3 -0
  12. data/app/controllers/root_admin_controller.rb +346 -0
  13. data/app/controllers/sugoi_admin_controller.rb +16 -13
  14. data/app/helpers/base_user_helper.rb +2 -0
  15. data/app/helpers/mail_admin_helper.rb +7 -0
  16. data/app/helpers/navigation_helper.rb +2 -0
  17. data/app/helpers/root_admin_helper.rb +2 -0
  18. data/app/models/address.rb +3 -4
  19. data/app/models/domain.rb +1 -1
  20. data/app/models/mail_admin.rb +2 -0
  21. data/app/models/mailinglist.rb +41 -19
  22. data/app/models/mailinglist_class.rb +1 -0
  23. data/app/models/message.rb +18 -36
  24. data/app/models/proxy_link.rb +14 -6
  25. data/app/views/account/login.rhtml +14 -12
  26. data/app/views/account/logout.rhtml +4 -8
  27. data/app/views/account/welcome.rhtml +3 -13
  28. data/app/views/base_user/add_address.rhtml +3 -0
  29. data/app/views/base_user/edit_address.rhtml +3 -0
  30. data/app/views/base_user/edit_user_list.rhtml +21 -0
  31. data/app/views/base_user/list_mailinglists.rhtml +3 -0
  32. data/app/views/base_user/remove_address.rhtml +3 -0
  33. data/app/views/base_user/unsubscribe_self.rhtml +3 -0
  34. data/app/views/layouts/application.rhtml +47 -0
  35. data/app/views/layouts/login.rhtml +34 -0
  36. data/app/views/layouts/sugoi_admin.rhtml +1 -0
  37. data/app/views/mail_admin/_form.rhtml +11 -0
  38. data/app/views/mail_admin/edit_admin_message.rhtml +12 -0
  39. data/app/views/mail_admin/list_admin_messages.rhtml +20 -0
  40. data/app/views/mail_admin/new_admin_message.rhtml +0 -0
  41. data/app/views/mailinglist/_address_form.rhtml +23 -0
  42. data/app/views/mailinglist/_form.rhtml +10 -14
  43. data/app/views/mailinglist/_new_class_form.rhtml +16 -0
  44. data/app/views/mailinglist/_new_form.rhtml +30 -0
  45. data/app/views/mailinglist/edit.rhtml +11 -5
  46. data/app/views/mailinglist/list.rhtml +15 -15
  47. data/app/views/mailinglist/list_mailinglist_classes.rhtml +18 -0
  48. data/app/views/mailinglist/new.rhtml +5 -5
  49. data/app/views/mailinglist/new_address.rhtml +10 -0
  50. data/app/views/mailinglist/new_mailinglist_class.rhtml +8 -0
  51. data/app/views/mailinglist/show.rhtml +15 -13
  52. data/app/views/navigation/_base_add_address_module.rhtml +2 -0
  53. data/app/views/navigation/_base_edit_address_module.rhtml +2 -0
  54. data/app/views/navigation/_base_edit_user_list_module.rhtml +5 -0
  55. data/app/views/navigation/_base_index_module.rhtml +2 -0
  56. data/app/views/navigation/_base_list_mailinglists_module.rhtml +3 -0
  57. data/app/views/navigation/_base_remove_address_module.rhtml +2 -0
  58. data/app/views/navigation/_base_unsubscribe_self_module.rhtml +2 -0
  59. data/app/views/navigation/_base_welcome_module.rhtml +3 -0
  60. data/app/views/navigation/_nav_module.rhtml +77 -0
  61. data/app/views/navigation/_root_add_address_module.rhtml +3 -0
  62. data/app/views/navigation/_root_add_mailinglist_module.rhtml +3 -0
  63. data/app/views/navigation/_root_add_user_module.rhtml +3 -0
  64. data/app/views/navigation/_root_change_user_password_module.rhtml +3 -0
  65. data/app/views/navigation/_root_edit_address_module.rhtml +13 -0
  66. data/app/views/navigation/_root_edit_mailinglist_module.rhtml +12 -0
  67. data/app/views/navigation/_root_edit_user_list_module.rhtml +3 -0
  68. data/app/views/navigation/_root_edit_user_module.rhtml +10 -0
  69. data/app/views/navigation/_root_index_module.rhtml +4 -0
  70. data/app/views/navigation/_root_list_addresses_module.rhtml +11 -0
  71. data/app/views/navigation/_root_list_mailinglists_module.rhtml +11 -0
  72. data/app/views/navigation/_root_list_users_module.rhtml +12 -0
  73. data/app/views/navigation/_root_remove_address_module.rhtml +12 -0
  74. data/app/views/navigation/_root_remove_mailinglist_module.rhtml +12 -0
  75. data/app/views/navigation/_root_remove_user_module.rhtml +12 -0
  76. data/app/views/navigation/_root_show_user_module.rhtml +10 -0
  77. data/app/views/navigation/_root_welcome_module.rhtml +3 -0
  78. data/app/views/navigation/chooseNav.rhtml +0 -0
  79. data/app/views/navigation/logout.rhtml +8 -0
  80. data/app/views/root_admin/_form.rhtml +21 -0
  81. data/app/views/root_admin/add_address.rhtml +3 -0
  82. data/app/views/root_admin/add_mailinglist.rhtml +3 -0
  83. data/app/views/root_admin/admin_user_list.rhtml +29 -0
  84. data/app/views/root_admin/admin_user_new.rhtml +8 -0
  85. data/app/views/root_admin/change_user_password.rhtml +3 -0
  86. data/app/views/root_admin/edit_address.rhtml +3 -0
  87. data/app/views/root_admin/edit_mailinglist.rhtml +3 -0
  88. data/app/views/root_admin/edit_user_list.rhtml +3 -0
  89. data/app/views/root_admin/list_addresses.rhtml +3 -0
  90. data/app/views/root_admin/list_mailinglists.rhtml +3 -0
  91. data/app/views/root_admin/list_users.rhtml +32 -0
  92. data/app/views/root_admin/remove_address.rhtml +3 -0
  93. data/app/views/root_admin/remove_mailinglist.rhtml +3 -0
  94. data/app/views/root_admin/remove_user.rhtml +3 -0
  95. data/app/views/root_admin/show_user.rhtml +3 -0
  96. data/app/views/sugoi_admin/_command_description.rhtml +1 -1
  97. data/app/views/sugoi_admin/_command_list.rhtml +1 -1
  98. data/app/views/sugoi_admin/create_domain.rhtml +1 -1
  99. data/app/views/sugoi_admin/create_list.rhtml +1 -1
  100. data/app/views/sugoi_admin/create_user.rhtml +1 -1
  101. data/app/views/sugoi_admin/help.rhtml +1 -1
  102. data/app/views/sugoi_admin/init.rhtml +1 -1
  103. data/app/views/sugoi_admin/list_addresses.rhtml +1 -1
  104. data/app/views/sugoi_admin/list_domains.rhtml +1 -1
  105. data/app/views/sugoi_admin/list_mailinglist_classes.rhtml +1 -1
  106. data/app/views/sugoi_admin/list_mailinglists.rhtml +1 -1
  107. data/app/views/sugoi_admin/list_users.rhtml +1 -1
  108. data/app/views/sugoi_admin/set_config.rhtml +4 -1
  109. data/app/views/sugoi_admin/show_config.rhtml +1 -1
  110. data/app/views/sugoi_admin/subscribe.rhtml +1 -1
  111. data/app/views/sugoi_admin/unsubscribe.rhtml +1 -1
  112. data/bin/maild +1 -1
  113. data/bin/sugoi-mail +1 -1
  114. data/config/environment.rb +2 -2
  115. data/config/routes.rb +4 -2
  116. data/db/migrate/028_add_sessions.rb +15 -0
  117. data/db/schema.rb +56 -48
  118. data/lib/login_system.rb +6 -6
  119. data/lib/tasks/release.rake +2 -2
  120. data/public/404.html +27 -5
  121. data/public/500.html +27 -5
  122. data/public/images/celltop1.jpg +0 -0
  123. data/public/images/title11.jpg +0 -0
  124. data/public/{index.html → index_default.html} +0 -0
  125. data/public/javascripts/dragdrop.js +1 -1
  126. data/public/javascripts/effects.js +1 -1
  127. data/public/javascripts/prototype.js +1 -1
  128. data/public/stylesheets/global.css +201 -0
  129. data/public/stylesheets/scaffold.css +176 -11
  130. data/public/stylesheets/trestle.css +176 -11
  131. data/script/cover +6 -0
  132. data/script/process/inspector +3 -0
  133. data/test/all.rb +2 -0
  134. data/test/fixtures/helps.yml +1 -1
  135. data/test/fixtures/mailinglist_classes.yml +4 -4
  136. data/test/fixtures/messages.yml +22 -2
  137. data/test/functional/base_user_controller_test.rb +18 -0
  138. data/test/functional/mail_admin_controller_test.rb +18 -0
  139. data/test/functional/mailservice_controller_test.rb +164 -19
  140. data/test/functional/navigation_controller_test.rb +18 -0
  141. data/test/functional/root_admin_controller_test.rb +18 -0
  142. data/test/functional/sugoi_admin_controller_test.rb +68 -10
  143. data/test/functionals.rb +2 -1
  144. data/test/integration/test_soap.rb +3 -1
  145. data/test/unit/address_test.rb +16 -1
  146. data/test/unit/domain_test.rb +5 -12
  147. data/test/unit/mailinglist_class_test.rb +2 -2
  148. data/test/unit/mailinglist_test.rb +138 -3
  149. data/test/unit/message_test.rb +256 -1
  150. data/test/unit/proxy_link_test.rb +37 -0
  151. data/test/unit/sys_config_test.rb +6 -0
  152. data/test/unit/user_test.rb +20 -0
  153. data/test/units.rb +2 -1
  154. metadata +94 -8
  155. data/app/views/layouts/address.rhtml +0 -13
  156. 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
- assert invoke(:admin_user_signup,"newuser", "password", "password")
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
- assert invoke(:admin_user_delete,"newuser", "newuser")
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
- assert_equal false, invoke(:user_login,"newuser", "password")
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
- assert invoke(:user_login,@admin_name, "foobar")
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
- assert_equal false, invoke(:admin_user_delete,"newuser", "newuser")
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
- assert_equal @new_name, invoke(:user_change_real_name,
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
- assert_equal [ "address2@foo.test", "brandnewuser@foo.test" ],
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 LTMA' ],
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 "testmailinglist@test.domain",
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 test_unsubscribe_address_from_mailinglist_its_not_a_member_of
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.find_all.length
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.find_all.length
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.find_all.length
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.find_all.length
409
+ MailinglistClass.find(:all).length
352
410
  assert_equal @loaded_fixtures["sys_configs"].length,
353
- SysConfig.find_all.length
411
+ SysConfig.find(:all).length
354
412
  assert_equal @loaded_fixtures["admin_messages"].length,
355
- AdminMessage.find_all.length
413
+ AdminMessage.find(:all).length
356
414
  assert_equal @loaded_fixtures["helps"].length,
357
- Help.find_all.length
415
+ Help.find(:all).length
358
416
  end
359
417
 
360
418
  def test_init_no_clobber_values
data/test/functionals.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require File.dirname(__FILE__) + '/test_helper'
2
- Dir["functional/*.rb"].each do |file|
2
+
3
+ Dir[File.join(File.dirname(__FILE__),"functional","*.rb")].each do |file|
3
4
  require file.sub(/.rb$/,'')
4
5
  end
@@ -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
@@ -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
@@ -113,16 +113,9 @@ class DomainTest < Test::Unit::TestCase
113
113
  assert_equal '826005bc4b82d02a3e6097556a45083375fe556c', u.password
114
114
  end
115
115
 
116
- # def test_change_nothing
117
- # d = Domain.find_by_name "test.domain"
118
- # assert_equal 'e7ce1e2e20ec9f11ce8e86c9c47ab9911c1d221e', d.password
119
- # d.password = d.password_confirmation = nil
120
- # result = d.save
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 "LTMA",@ltma_class.name
25
- assert_equal "Lifetime Mail Address", @ltma_class.description
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