sugoi-mail 0.0.0

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 (182) hide show
  1. data/README +35 -0
  2. data/Rakefile +10 -0
  3. data/app/apis/mailservice_api.rb +178 -0
  4. data/app/controllers/.sugoi_admin_controller.rb.swp +0 -0
  5. data/app/controllers/account_controller.rb +39 -0
  6. data/app/controllers/address_controller.rb +49 -0
  7. data/app/controllers/application.rb +4 -0
  8. data/app/controllers/commandline_controller.rb +15 -0
  9. data/app/controllers/domain_controller.rb +37 -0
  10. data/app/controllers/mailinglist_controller.rb +51 -0
  11. data/app/controllers/mailservice_controller.rb +497 -0
  12. data/app/controllers/sugoi_admin_controller.rb +93 -0
  13. data/app/helpers/account_helper.rb +2 -0
  14. data/app/helpers/address_helper.rb +2 -0
  15. data/app/helpers/application_helper.rb +3 -0
  16. data/app/helpers/domain_helper.rb +2 -0
  17. data/app/helpers/mailservice_helper.rb +2 -0
  18. data/app/helpers/sugoi_admin_helper.rb +2 -0
  19. data/app/models/address.rb +110 -0
  20. data/app/models/admin_message.rb +45 -0
  21. data/app/models/confirmationcode.rb +59 -0
  22. data/app/models/domain.rb +76 -0
  23. data/app/models/mailinglist.rb +336 -0
  24. data/app/models/mailinglist_class.rb +39 -0
  25. data/app/models/message.rb +293 -0
  26. data/app/models/proxy_link.rb +25 -0
  27. data/app/models/user.rb +150 -0
  28. data/app/views/account/login.rhtml +22 -0
  29. data/app/views/account/logout.rhtml +10 -0
  30. data/app/views/account/signup.rhtml +17 -0
  31. data/app/views/account/welcome.rhtml +13 -0
  32. data/app/views/address/_form.rhtml +7 -0
  33. data/app/views/address/edit.rhtml +10 -0
  34. data/app/views/address/list.rhtml +27 -0
  35. data/app/views/address/new.rhtml +8 -0
  36. data/app/views/address/show.rhtml +8 -0
  37. data/app/views/domain/login.rhtml +22 -0
  38. data/app/views/domain/logout.rhtml +10 -0
  39. data/app/views/domain/signup.rhtml +17 -0
  40. data/app/views/domain/welcome.rhtml +13 -0
  41. data/app/views/layouts/address.rhtml +13 -0
  42. data/app/views/layouts/scaffold.rhtml +13 -0
  43. data/app/views/mailinglist/_form.rhtml +28 -0
  44. data/app/views/mailinglist/edit.rhtml +10 -0
  45. data/app/views/mailinglist/list.rhtml +27 -0
  46. data/app/views/mailinglist/new.rhtml +8 -0
  47. data/app/views/mailinglist/show.rhtml +16 -0
  48. data/app/views/sugoi_admin/create_domain.rhtml +1 -0
  49. data/app/views/sugoi_admin/list_addresses.rhtml +1 -0
  50. data/app/views/sugoi_admin/list_domains.rhtml +2 -0
  51. data/app/views/sugoi_admin/list_mailinglists.rhtml +1 -0
  52. data/bin/mailc +32 -0
  53. data/bin/maild +133 -0
  54. data/bin/sugoi-admin +21 -0
  55. data/bin/sugoi-mail +20 -0
  56. data/config/boot.rb +44 -0
  57. data/config/environment.rb +54 -0
  58. data/config/environments/bench.rb +21 -0
  59. data/config/environments/coverage.rb +21 -0
  60. data/config/environments/development.rb +21 -0
  61. data/config/environments/production.rb +18 -0
  62. data/config/environments/test.rb +19 -0
  63. data/config/lighttpd.conf +46 -0
  64. data/config/routes.rb +29 -0
  65. data/db/migrate/001_mailproxy.rb +7 -0
  66. data/db/migrate/002_create_users.rb +13 -0
  67. data/db/migrate/003_create_mailinglists.rb +13 -0
  68. data/db/migrate/004_create_addresses.rb +12 -0
  69. data/db/migrate/005_create_addresses_mailinglists.rb +13 -0
  70. data/db/migrate/006_alter_mailinglists.rb +9 -0
  71. data/db/migrate/007_create_messages.rb +25 -0
  72. data/db/migrate/008_add_mailinglistid_to_users.rb +14 -0
  73. data/db/migrate/009_add_domainadmin_to_users.rb +9 -0
  74. data/db/migrate/010_add_domain_to_users.rb +16 -0
  75. data/db/migrate/011_add_active_to_addresses.rb +14 -0
  76. data/db/migrate/012_create_confirmationcodes.rb +14 -0
  77. data/db/migrate/013_add_description_to_mailinglists.rb +9 -0
  78. data/db/migrate/014_create_admin_messages.rb +69 -0
  79. data/db/migrate/015_add_messages_to_mailinglists.rb +26 -0
  80. data/db/migrate/016_add_mailinglist_admin_to_users.rb +9 -0
  81. data/db/migrate/017_add_mailinglist_types.rb +94 -0
  82. data/db/migrate/018_add_bounciness_to_addresses.rb +20 -0
  83. data/db/migrate/019_add_archived_to_mailinglist_classes.rb +25 -0
  84. data/db/migrate/020_add_envelope_data_to_messages.rb +11 -0
  85. data/db/migrate/021_add_addresses_users.rb +14 -0
  86. data/db/migrate/022_add_virtual_to_users.rb +14 -0
  87. data/db/migrate/023_drop_openposting_from_mailinglists.rb +9 -0
  88. data/db/migrate/024_add_proxy_links.rb +21 -0
  89. data/db/migrate/025_add_proxify_to_mailinglist_classes.rb +25 -0
  90. data/db/schema.mysql.sql +104 -0
  91. data/db/schema.postgresql.sql +104 -0
  92. data/db/schema.rb +85 -0
  93. data/db/schema.sqlite.sql +104 -0
  94. data/db/schema.sqlserver.sql +113 -0
  95. data/db/schema_version +1 -0
  96. data/doc/README_FOR_APP +179 -0
  97. data/doc/mailinglist_classes description.txt +28 -0
  98. data/installer/rails_installer_defaults.yml +5 -0
  99. data/lib/daemonize.rb +56 -0
  100. data/lib/domain_system.rb +87 -0
  101. data/lib/gurgitate-rules.rb +69 -0
  102. data/lib/limitedfork.rb +66 -0
  103. data/lib/login_system.rb +87 -0
  104. data/public/.htaccess +40 -0
  105. data/public/404.html +8 -0
  106. data/public/500.html +8 -0
  107. data/public/dispatch.cgi +10 -0
  108. data/public/dispatch.fcgi +24 -0
  109. data/public/dispatch.rb +10 -0
  110. data/public/favicon.ico +0 -0
  111. data/public/images/rails.png +0 -0
  112. data/public/javascripts/application.js +2 -0
  113. data/public/javascripts/controls.js +815 -0
  114. data/public/javascripts/dragdrop.js +913 -0
  115. data/public/javascripts/effects.js +958 -0
  116. data/public/javascripts/prototype.js +2006 -0
  117. data/public/robots.txt +1 -0
  118. data/public/stylesheets/scaffold.css +74 -0
  119. data/public/stylesheets/trestle.css +74 -0
  120. data/script/about +3 -0
  121. data/script/breakpointer +3 -0
  122. data/script/console +3 -0
  123. data/script/destroy +3 -0
  124. data/script/fakedeliver +19 -0
  125. data/script/generate +3 -0
  126. data/script/performance/benchmarker +3 -0
  127. data/script/performance/profiler +3 -0
  128. data/script/plugin +3 -0
  129. data/script/process/reaper +3 -0
  130. data/script/process/spawner +3 -0
  131. data/script/runner +3 -0
  132. data/script/server +3 -0
  133. data/sugoi-mail.gemspec +36 -0
  134. data/test/fixtures/addresses.yml +70 -0
  135. data/test/fixtures/addresses_mailinglists.yml +20 -0
  136. data/test/fixtures/admin_messages.yml +65 -0
  137. data/test/fixtures/confirmationcodes.yml +13 -0
  138. data/test/fixtures/domains.yml +9 -0
  139. data/test/fixtures/mailinglist_classes.yml +45 -0
  140. data/test/fixtures/mailinglists.yml +80 -0
  141. data/test/fixtures/messages.yml +154 -0
  142. data/test/fixtures/proxy_links.yml +5 -0
  143. data/test/fixtures/users.yml +50 -0
  144. data/test/functional/domain_controller_test.rb +74 -0
  145. data/test/functional/mailservice_controller_test.rb +546 -0
  146. data/test/integration/test_soap.rb +413 -0
  147. data/test/integration/test_xmlrpc.rb +198 -0
  148. data/test/mocks/test/net-smtp-stub.rb +24 -0
  149. data/test/test_helper.rb +28 -0
  150. data/test/unit/address_test.rb +44 -0
  151. data/test/unit/admin_message_test.rb +41 -0
  152. data/test/unit/confirmationcode_test.rb +64 -0
  153. data/test/unit/domain_test.rb +128 -0
  154. data/test/unit/mailinglist_class_test.rb +82 -0
  155. data/test/unit/mailinglist_test.rb +145 -0
  156. data/test/unit/message_test.rb +151 -0
  157. data/test/unit/user_test.rb +126 -0
  158. data/test/units.rb +4 -0
  159. data/vendor/plugins/active_command/init.rb +1 -0
  160. data/vendor/plugins/active_command/lib/active_command/request.rb +137 -0
  161. data/vendor/plugins/active_command/lib/active_command/response.rb +132 -0
  162. data/vendor/plugins/active_command/lib/active_command.rb +2 -0
  163. data/vendor/plugins/ar_fixtures/CHANGELOG +10 -0
  164. data/vendor/plugins/ar_fixtures/MIT-LICENSE +20 -0
  165. data/vendor/plugins/ar_fixtures/README +19 -0
  166. data/vendor/plugins/ar_fixtures/Rakefile +54 -0
  167. data/vendor/plugins/ar_fixtures/about.yml +7 -0
  168. data/vendor/plugins/ar_fixtures/init.rb +1 -0
  169. data/vendor/plugins/ar_fixtures/lib/ar_fixtures.rb +102 -0
  170. data/vendor/plugins/ar_fixtures/tasks/ar_fixtures.rake +39 -0
  171. data/vendor/plugins/ar_fixtures/test/ar_fixtures_test.rb +53 -0
  172. data/vendor/plugins/ar_fixtures/test/database.yml +18 -0
  173. data/vendor/plugins/ar_fixtures/test/fixtures/beer.rb +5 -0
  174. data/vendor/plugins/ar_fixtures/test/fixtures/beers.yml +9 -0
  175. data/vendor/plugins/ar_fixtures/test/fixtures/beers_drunkards.yml +8 -0
  176. data/vendor/plugins/ar_fixtures/test/fixtures/drunkard.rb +6 -0
  177. data/vendor/plugins/ar_fixtures/test/fixtures/drunkards.yml +8 -0
  178. data/vendor/plugins/ar_fixtures/test/fixtures/glass.rb +2 -0
  179. data/vendor/plugins/ar_fixtures/test/fixtures/glasses.yml +9 -0
  180. data/vendor/plugins/ar_fixtures/test/schema.rb +21 -0
  181. data/vendor/plugins/ar_fixtures/test/test_helper.rb +37 -0
  182. metadata +320 -0
@@ -0,0 +1,413 @@
1
+ ENV["RAILS_ENV"] = "test"
2
+ require File.expand_path(File.dirname(__FILE__) + "/../../config/environment")
3
+ require 'test_help'
4
+
5
+
6
+ #------------------------------------------------------------------------
7
+ # Test SOAP client
8
+ #------------------------------------------------------------------------
9
+
10
+ require "rubygems"
11
+ File.unlink *%w{Mailservice.rb
12
+ MailserviceServiceClient.rb
13
+ MailserviceDriver.rb} rescue nil
14
+ system "wsdl2ruby --wsdl http://localhost:3001/wsdl --type client"
15
+ system "rake db:fixtures:load"
16
+ require "MailserviceDriver"
17
+ require "test/unit"
18
+ require "soap/soap"
19
+ require "soap/mapping"
20
+ require "soap/wsdlDriver"
21
+ require "pp"
22
+
23
+ class SOAPConnection < Test::Unit::TestCase
24
+ def setup
25
+ @server = MailserviceMailservicePort.new
26
+ end
27
+
28
+ def test_0_nil # Everyone gets to run the nil test!
29
+ assert true, "Test to see if the class sets up properly"
30
+ end
31
+
32
+ def test_1_connection # Make sure the connection is still there
33
+ assert_equal true, @server.ping, "Test to see if SOAP pings"
34
+ end
35
+ end
36
+
37
+ =begin
38
+
39
+ def getConfirmationCode(mailinglist_name, address)
40
+ server = MailserviceMailservicePort.new
41
+ server.domainLogin "test.domain", "foobar"
42
+ server.userLogin "root", "foobar"
43
+ code = server.getConfirmationCode(mailinglist_name, address)
44
+ server.userLogout
45
+ server.domainLogout
46
+ return code
47
+ end
48
+
49
+ =end
50
+
51
+
52
+ class SOAPDomainLogin < SOAPConnection
53
+ def setup
54
+ super
55
+ @server.domainLogin "test.domain", "foobar"
56
+ end
57
+
58
+ def teardown
59
+ @server.domainLogout
60
+ end
61
+
62
+ def test_0_domain_logged_in
63
+ assert_equal true, @server.domainLoggedIn, "Domain still logged in"
64
+ assert_equal "test.domain", @server.domainName, "Still the right domain"
65
+ end
66
+ end
67
+
68
+
69
+ class SOAPUserLogin < SOAPDomainLogin
70
+ def setup
71
+ super
72
+ @server.userLogin "testuser", "foobar"
73
+ end
74
+
75
+ def teardown
76
+ @server.userLogout
77
+ super
78
+ end
79
+
80
+ def test_0_user_logged_in
81
+ assert_equal true, @server.userLoggedIn, "User still logged in"
82
+ assert_equal "testuser", @server.userName, "Still the right user"
83
+ end
84
+ end
85
+
86
+ class SOAPDomainAdmin < SOAPDomainLogin
87
+ def setup
88
+ super
89
+ @server.userLogin "root", "foobar"
90
+ end
91
+
92
+ def teardown
93
+ @server.userLogout
94
+ super
95
+ end
96
+
97
+ def test_0_user_still_admin
98
+ assert_equal true, @server.userLoggedIn, "User still loggedin"
99
+ assert_equal "root", @server.userName, "User is still root"
100
+ assert_equal true, @server.isAdmin, "User is still administrator"
101
+ end
102
+ end
103
+
104
+ class TC_SOAPClient_DomainLogin < SOAPConnection
105
+ def test_baddomain
106
+ # bad username, bad password
107
+ assert_equal(false, @server.domainLogin("junkdomain", "blort"))
108
+
109
+ # good username, bad password
110
+ assert_equal(false, @server.domainLogin("test.domain", "blort"))
111
+ end
112
+
113
+ def test_loggedout
114
+ # now once again
115
+ assert_equal(false, @server.domainLogout);
116
+ end
117
+
118
+ def test_good_domain
119
+ # good username, good password
120
+ assert_equal(true, @server.domainLogin("test.domain", "foobar"))
121
+
122
+ # now log out
123
+ assert_equal(true, @server.domainLogout);
124
+ end
125
+
126
+ def test_permissions
127
+ assert_raises RuntimeError do
128
+ @server.userLogin "testuser", "foobar"
129
+ end
130
+
131
+ end
132
+ end
133
+
134
+ class TC_SOAPClient_UserLogin < SOAPDomainLogin
135
+ def test_baduser
136
+ assert_equal false, @server.userLogin("huaglhuagl", "blort")
137
+ assert_equal false, @server.userLogin("testuser", "blort")
138
+ end
139
+
140
+ def test_gooduser
141
+ assert_equal true, @server.userLogin("testuser", "foobar")
142
+ assert_equal false, @server.isAdmin
143
+ end
144
+ end
145
+
146
+ class TC_SOAPClient_TroublesomeAdminTask < SOAPDomainAdmin
147
+ def teardown
148
+ @server.userDelete("newuser", "newuser")
149
+ super
150
+ end
151
+
152
+ def test_userlogin
153
+ assert_nothing_raised do
154
+ assert_equal true, @server.isAdmin
155
+ end
156
+ assert_nothing_raised do
157
+ assert @server.userSignup("newuser", "password", "password")
158
+ end
159
+
160
+ # user exists, login succeeds
161
+ assert @server.userLogin("newuser", "password")
162
+ assert_equal false, @server.isAdmin
163
+
164
+ # let's get our session back
165
+ assert @server.userLogin("root", "foobar")
166
+ assert_equal true, @server.isAdmin
167
+ assert_equal true, @server.userDelete("newuser", "newuser")
168
+ end
169
+ end
170
+
171
+ class TC_SOAPClient_AdminTasks < SOAPDomainAdmin
172
+ def teardown
173
+ @server.userDelete("newuser", "newuser")
174
+ super
175
+ end
176
+
177
+ def test_passwordmismatch
178
+ assert_equal true, @server.isAdmin
179
+ # password doesn't match
180
+ assert_raises RuntimeError do
181
+ @server.userSignup("flibbleuser", "password", "drowssap")
182
+ end
183
+ end
184
+
185
+ def test_usercreate
186
+ # user doesn't exist; gets created
187
+ assert_equal true, @server.isAdmin
188
+ assert @server.userSignup("newuser", "password", "password")
189
+ assert_equal true, @server.userDelete("newuser", "newuser")
190
+ end
191
+
192
+ def test_usercollision
193
+ assert_nothing_raised do
194
+ assert_equal true, @server.isAdmin
195
+ end
196
+ assert @server.userSignup("newuser", "password", "password")
197
+ # user already exists; creation fails
198
+ assert_raises RuntimeError do
199
+ @server.userSignup("newuser", "password", "password")
200
+ end
201
+ assert_equal true, @server.userDelete("newuser", "newuser")
202
+ end
203
+
204
+ def test_usernolongerexists
205
+ assert_nothing_raised do
206
+ assert @server.isAdmin
207
+ end
208
+
209
+ # create the user
210
+ assert_nothing_raised do
211
+ assert @server.userSignup("newuser", "password", "password")
212
+ end
213
+
214
+ # user exists; deletion succeeds
215
+ assert_nothing_raised do
216
+ assert @server.userDelete("newuser", "newuser")
217
+ end
218
+
219
+ # user doesn't exist; login fails
220
+ assert_nothing_raised do
221
+ assert_equal false, @server.userLogin("newuser", "password")
222
+ end
223
+
224
+ # okay, our session's just been trashed again. Get it back.
225
+ assert_nothing_raised do
226
+ assert @server.userLogin("root", "foobar")
227
+ end
228
+
229
+ # user doesn't exist; deletion fails
230
+ assert_nothing_raised do
231
+ assert_equal false, @server.userDelete("testuser", "testuser")
232
+ end
233
+ end
234
+
235
+ def test_aaa_userlist # force it to go first, see what happens
236
+ assert_equal true, @server.isAdmin
237
+ list=nil
238
+ assert_nothing_raised do
239
+ list=@server.userList
240
+ end
241
+ assert list
242
+ assert_equal [ [ "root", "Admin" ],
243
+ [ "testuser", "Test User" ] ], list.sort
244
+
245
+ end
246
+ end
247
+
248
+ =begin
249
+
250
+ class TC_SOAPClient_EmailAddresses < SOAPUserLogin
251
+ def test_emailaddress
252
+ assert_equal "dagbrown@test.domain", @server.userEmailAddress
253
+ end
254
+
255
+ def test_emailaddresses
256
+ assert_equal [ "dagbrown@lart.ca",
257
+ "dagbrown@rwp.jp",
258
+ "hide@rwp.jp",
259
+ "kaboom@lart.ca",
260
+ "ookblat@foo.test" ],
261
+ @server.userEmailAddresses.sort
262
+ assert_equal [ "dagbrown@rwp.jp", "hide@rwp.jp", "kaboom@lart.ca" ],
263
+ @server.userEmailAddressesConfirmed.sort
264
+ end
265
+
266
+ def test_addremove
267
+ assert_nothing_raised do
268
+ assert @server.userEmailAddressesAdd("dagbrown@lart.ca")
269
+ end
270
+
271
+ assert_nothing_raised do
272
+ assert_equal [ "dagbrown@lart.ca",
273
+ "dagbrown@rwp.jp",
274
+ "hide@rwp.jp",
275
+ "kaboom@lart.ca",
276
+ "ookblat@foo.test" ],
277
+ @server.userEmailAddresses.sort
278
+ end
279
+ assert_nothing_raised do
280
+ assert_equal [ "dagbrown@rwp.jp",
281
+ "hide@rwp.jp",
282
+ "kaboom@lart.ca" ],
283
+ @server.userEmailAddressesConfirmed.sort
284
+ end
285
+ assert_nothing_raised do
286
+ assert_equal [ "dagbrown@lart.ca", "ookblat@foo.test" ],
287
+ @server.UserEmailAddressesUnconfirmed.sort
288
+ end
289
+ confirmation_code=nil
290
+ assert_nothing_raised do
291
+ confirmation_code=getConfirmationCode("dagbrown",
292
+ "dagbrown@lart.ca")
293
+ end
294
+
295
+ assert_nothing_raised do
296
+ assert_equal true, @server.userEmailAddressConfirm("dagbrown@lart.ca",
297
+ confirmation_code)
298
+ end
299
+
300
+ assert_nothing_raised do
301
+ assert_equal [ "ookblat@foo.test" ],
302
+ @server.UserEmailAddressesUnconfirmed.sort
303
+ end
304
+
305
+ assert_nothing_raised do
306
+ assert_equal [ "dagbrown@lart.ca" ],
307
+ @server.userEmailAddressesRemove("dagbrown@lart.ca").sort
308
+ end
309
+ assert_nothing_raised do
310
+ assert_equal [ nil ],
311
+ @server.userEmailAddressesRemove("dagbrown@lart.ca").sort
312
+ end
313
+
314
+ assert_nothing_raised do
315
+ assert_equal [ "dagbrown@rwp.jp",
316
+ "hide@rwp.jp",
317
+ "kaboom@lart.ca" ],
318
+ @server.userEmailAddresses.sort
319
+ end
320
+ end
321
+ end
322
+
323
+ class TC_SOAPClient_UserMailingLists < SOAPUserLogin
324
+ def test_mailinglists
325
+ assert_equal [ 2 ],
326
+ @server.userMailinglists
327
+ assert_equal "snorglebloot", @server.mailinglistName(2)
328
+ end
329
+ end
330
+
331
+ class TC_SOAPClient_CreateMailinglist < SOAPUserLogin
332
+ def test_create_mailinglist
333
+ assert_equal "testmailinglist@test.domain",
334
+ @server.mailinglistCreate("testmailinglist",true)
335
+ assert id = @server.mailinglistFindByName("testmailinglist")
336
+ assert @server.mailinglistDelete(id)
337
+ end
338
+ end
339
+
340
+ class SOAPUserMailinglist < SOAPUserLogin
341
+ def setup
342
+ super
343
+ @server.mailinglistCreate("testmailinglist", true)
344
+ @id = @server.mailinglistFindByName("testmailinglist")
345
+ end
346
+
347
+ def teardown
348
+ @server.mailinglistDelete(@id)
349
+ super
350
+ end
351
+ end
352
+
353
+
354
+ class TC_SOAPClient_MailingListSubscribe < SOAPUserMailinglist
355
+ def test_mailinglist_subscribe
356
+ assert @id
357
+
358
+ assert_nothing_raised do
359
+ assert_equal [ ],
360
+ @server.mailinglistSubscribers(@id).sort
361
+ end
362
+
363
+ assert_nothing_raised do
364
+ assert @server.mailinglistSubscribe(@id,"test@foo.test")
365
+ end
366
+
367
+ assert_nothing_raised do
368
+ assert_equal [ ],
369
+ @server.mailinglistSubscribers(@id).sort
370
+ end
371
+
372
+ assert_nothing_raised do
373
+ assert_equal [ "test@foo.test" ],
374
+ @server.mailinglistPending(@id)
375
+ end
376
+
377
+ assert_nothing_raised do
378
+ confirmation=getConfirmationCode("testmailinglist","test@foo.test")
379
+ end
380
+
381
+ assert_nothing_raised do
382
+ assert_equal false, @server.mailinglistConfirm("testmailinglist",
383
+ "test@foo.test",
384
+ "@@@@@@@@@@@@@@@@")
385
+ end
386
+
387
+ assert_nothing_raised do
388
+ assert_equal true, @server.mailinglistConfirm("testmailinglist",
389
+ "test@foo.test",
390
+ confirmation)
391
+ end
392
+
393
+ assert_nothing_raised do
394
+ assert_equal [ "test@foo.test" ],
395
+ @server.mailinglistSubscribers(@id).sort
396
+ end
397
+
398
+ assert_nothing_raised do
399
+ assert @server.mailinglistUnsubscribe(@id,"test@foo.test")
400
+ end
401
+
402
+ assert_nothing_raised do
403
+ assert_equal [ ],
404
+ @server.mailinglistSubscribers(@id).sort
405
+ end
406
+ end
407
+
408
+ def test_mailinglist_message
409
+ @server.mailinglistMessages(@id)
410
+ end
411
+ end
412
+
413
+ =end
@@ -0,0 +1,198 @@
1
+ ENV["RAILS_ENV"] = "test"
2
+ require File.expand_path(File.dirname(__FILE__) + "/../../config/environment")
3
+ require 'test_help'
4
+
5
+ #------------------------------------------------------------------------
6
+ # Test XMLRPC client
7
+ #------------------------------------------------------------------------
8
+
9
+ require "test/unit"
10
+ require "xmlrpc/client"
11
+ require "pp"
12
+
13
+ =begin
14
+
15
+ class TC_XMLRPCClient < Test::Unit::TestCase
16
+ def setup
17
+ @server = XMLRPC::Client.new( "localhost", "/mailservice/api", 3001)
18
+ end
19
+
20
+ def teardown
21
+ end
22
+
23
+ def test_1_user
24
+ assert_equal(@server.call("UserLogin", "dagbrown", "blort"), false)
25
+ assert_raises XMLRPC::FaultException do
26
+ @server.call("UserLogin", "dagbrown", "foobar")
27
+ end
28
+ end
29
+
30
+ def test_2_mailinglist
31
+ assert_raises XMLRPC::FaultException do
32
+ @server.call("MailinglistFindByName", "dagbrown")
33
+ end
34
+
35
+ assert_equal(@server.call("UserLogin", "dagbrown", "foobar"), true)
36
+ assert_equal(@server.call("MailinglistFindByName", "dagbrown"), 1)
37
+ end
38
+ end
39
+
40
+ =end
41
+
42
+ class TC_XMLRPCClient_DomainLogin < Test::Unit::TestCase
43
+ def setup
44
+ @server = XMLRPC::Client.new( "localhost", "/mailservice/api", 3001)
45
+ end
46
+
47
+ def teardown
48
+ end
49
+
50
+ def test_baddomain
51
+ # bad username, bad password
52
+ assert_equal(false, @server.call("DomainLogin", "junkdomain", "blort"))
53
+
54
+ # good username, bad password
55
+ assert_equal(false, @server.call("DomainLogin", "bar.blut", "blort"))
56
+ end
57
+
58
+ def test_loggedout
59
+ # now once again
60
+ assert_equal(false, @server.call("DomainLogout"));
61
+ end
62
+
63
+ def test_good_domain
64
+ # good username, good password
65
+ assert_equal(true, @server.call("DomainLogin", "bar.blut", "foobar"))
66
+
67
+ # now log out
68
+ assert_equal(true, @server.call("DomainLogout"));
69
+ end
70
+
71
+ def test_permissions
72
+ assert_raises XMLRPC::FaultException do
73
+ @server.call("UserLogin", "dagbrown", "foobar")
74
+ end
75
+
76
+ assert_raises XMLRPC::FaultException do
77
+ @server.call("FindMailinglistByName", 1)
78
+ end
79
+ end
80
+ end
81
+
82
+ class TC_XMLRPCClient_UserLogin < Test::Unit::TestCase
83
+ def setup
84
+ @server = XMLRPC::Client.new( "localhost", "/mailservice/api", 3001)
85
+ @server.call "DomainLogin", "bar.blut", "foobar"
86
+ end
87
+
88
+ def teardown
89
+ @server.call "DomainLogout"
90
+ end
91
+
92
+ def test_baduser
93
+ assert_equal false, @server.call("UserLogin", "huaglhuagl", "blort")
94
+ assert_equal false, @server.call("UserLogin", "dagbrown", "blort")
95
+ end
96
+
97
+ def test_gooduser
98
+ assert_equal true, @server.call("UserLogin", "dagbrown", "foobar")
99
+ end
100
+ end
101
+
102
+ class TC_XMLRPCClient_AdminTasks < Test::Unit::TestCase
103
+ def setup
104
+ @server = XMLRPC::Client.new "localhost", "/mailservice/api", 3001
105
+ @server.call "DomainLogin", "bar.blut", "foobar"
106
+ @server.call "UserLogin", "root", "foobar"
107
+ end
108
+
109
+ def teardown
110
+ @server.call "UserLogout"
111
+ @server.call "DomainLogout"
112
+ end
113
+
114
+ def test_passwordmismatch
115
+ # password doesn't match
116
+ assert_raises XMLRPC::FaultException do
117
+ @server.call("UserSignup", "flibbleuser", "password", "drowssap")
118
+ end
119
+ end
120
+
121
+ def test_usercreate
122
+ # user doesn't exist; gets created
123
+ assert true, @server.call("UserSignup", "testuser",
124
+ "password",
125
+ "password")
126
+ assert_equal true, @server.call("UserDelete","testuser","testuser")
127
+ end
128
+
129
+ def test_usercollection
130
+ @server.call("UserDelete","testuser","testuser")
131
+ assert @server.call("UserSignup","testuser","password","password")
132
+
133
+ # user already exists; creation fails
134
+ assert_raises XMLRPC::FaultException do
135
+ @server.call("UserSignup", "testuser", "password", "password")
136
+ end
137
+
138
+ # user exists; deletion succeeds
139
+ assert_equal true, @server.call("UserDelete", "testuser", "testuser")
140
+ end
141
+
142
+
143
+ def test_userlogin
144
+ assert @server.call("UserSignup","testuser","password","password")
145
+
146
+ # user exists, login succeeds
147
+ assert @server.call("UserLogin","testuser","password")
148
+
149
+ # let's get our session back
150
+ assert @server.call("UserLogin","root","foobar")
151
+ assert_equal true, @server.call("UserDelete","testuser","testuser")
152
+
153
+ end
154
+
155
+ def test_usernolongexists
156
+ assert @server.call("UserSignup","testuser","password","password")
157
+
158
+ # user exists; deletion succeeds
159
+ assert_equal true, @server.call("UserDelete","testuser","testuser")
160
+ # user doesn't exist; login fails
161
+ assert_equal false, @server.call("UserLogin","testuser","password")
162
+
163
+ # okay, our session's just been trashed again. Get it back.
164
+ assert_equal true, @server.call("UserLogin","root","foobar")
165
+
166
+ # user doesn't exist; deletion fails
167
+ assert_equal false, @server.call("UserDelete","testuser","testuser")
168
+ end
169
+
170
+ # user doesn't exist; deletion fails
171
+ #assert_equal true, @server.call("UserDelete", "testuser", "testuser")
172
+
173
+ # user doesn't exist; login fails
174
+ #assert_raises XMLRPC::FaultException do
175
+ # @server.call("UserLogin", "flibbleuser", "password")
176
+ #end
177
+ #end
178
+ end
179
+
180
+ # class TC_XMLRPCClient_MailingLists < Test::Unit::TestCase
181
+ # end
182
+
183
+ # # Make an object to represent the XML-RPC server.
184
+ # server = XMLRPC::Client.new( "localhost", "/mailservice/api", 3001)
185
+ #
186
+ #
187
+ #
188
+ # # Call the remote server and get our result
189
+ # mailinglist1 = server.call("FindMailinglistByName","dagbrown") rescue nil
190
+ # session_id = server.call("UserLogin", "dagbrown", "foobar")
191
+ # mailinglist2 = server.call("FindMailinglistByName","dagbrown")
192
+ # verify_session_id = server.call("SessionId")
193
+ # server.call("UserLogout")
194
+ #
195
+ # puts mailinglist1.inspect
196
+ # puts mailinglist2.inspect
197
+ # puts session_id
198
+ # puts verify_session_id
@@ -0,0 +1,24 @@
1
+ Net::SMTP=Class.new
2
+
3
+ class Net::SMTP # don't *really* send messages--this is just a stub
4
+ def initialize(hostname, port)
5
+ @@hostname=hostname
6
+ @@port=port
7
+ end
8
+
9
+ def self.start(hostname, port, localhostname="localhost")
10
+ @started=true
11
+ yield(self.new(hostname,port)) if block_given?
12
+ end
13
+
14
+ def send_message(message, from, to)
15
+ @@from=from
16
+ @@to=to
17
+ @@message=message
18
+ end
19
+
20
+ %w{from to message hostname port}.each do |attrib|
21
+ instance_eval "def #{attrib}; @@#{attrib} end"
22
+ end
23
+ end
24
+
@@ -0,0 +1,28 @@
1
+ ENV["RAILS_ENV"] = "test"
2
+ require File.expand_path(File.dirname(__FILE__) + "/../config/environment")
3
+ require 'test_help'
4
+
5
+ class Test::Unit::TestCase
6
+ # Transactional fixtures accelerate your tests by wrapping each test method
7
+ # in a transaction that's rolled back on completion. This ensures that the
8
+ # test database remains unchanged so your fixtures don't have to be reloaded
9
+ # between every test method. Fewer database queries means faster tests.
10
+ #
11
+ # Read Mike Clark's excellent walkthrough at
12
+ # http://clarkware.com/cgi/blosxom/2005/10/24#Rails10FastTesting
13
+ #
14
+ # Every Active Record database supports transactions except MyISAM tables
15
+ # in MySQL. Turn off transactional fixtures in this case; however, if you
16
+ # don't care one way or the other, switching from MyISAM to InnoDB tables
17
+ # is recommended.
18
+ self.use_transactional_fixtures = true
19
+
20
+ # Instantiated fixtures are slow, but give you @david where otherwise you
21
+ # would need people(:david). If you don't want to migrate your existing
22
+ # test cases which use the @david style and don't mind the speed hit (each
23
+ # instantiated fixtures translates to a database query per test method),
24
+ # then set this back to true.
25
+ self.use_instantiated_fixtures = false
26
+
27
+ # Add more helper methods to be used by all tests here...
28
+ end
@@ -0,0 +1,44 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class AddressTest < Test::Unit::TestCase
4
+ fixtures :mailinglists, :users, :addresses_mailinglists, :addresses,
5
+ :domains
6
+
7
+ def test_parse_1
8
+ assert_equal [ 'address1@foo.test', 'Address One'],
9
+ Address.parse('address1@foo.test (Address One)')
10
+ assert_equal [ 'address1@foo.test', 'Address One'],
11
+ Address.parse('Address One <address1@foo.test>')
12
+ assert_equal [ 'address1@foo.test', '"Address 1. One"'],
13
+ Address.parse('"Address 1. One" <address1@foo.test>')
14
+ assert_equal [ 'address1@foo.test', nil],
15
+ Address.parse('address1@foo.test')
16
+ assert_equal [ 'address1', nil ],
17
+ Address.parse('address1')
18
+ end
19
+
20
+ def test_proxyaddress_find_internal
21
+ assert a=Address.find(1)
22
+ assert_equal 'testuser@test.domain', a.proxyaddress
23
+ assert a=Address.find(3)
24
+ assert_equal nil, a.proxyaddress
25
+ end
26
+
27
+ def test_proxyaddress_find_external
28
+ assert_equal 'testuser@test.domain',
29
+ Address.proxyaddress('address1@foo.test'),
30
+ 'an address with a proxy address'
31
+ assert_equal nil,
32
+ Address.proxyaddress('addressnonactive@foo.test'),
33
+ 'an address it knows about without a proxy address'
34
+ assert_equal nil,
35
+ Address.proxyaddress('addressnonexistent@foo.test'),
36
+ 'an address it doesn\'t know about without a proxy address'
37
+ end
38
+
39
+ def test_string_conversion
40
+ assert_equal 'address1@foo.test', Address.find(1).to_s
41
+ assert_equal 'address2@foo.test', Address.find(2).to_s
42
+ assert_equal 'addressnonactive@foo.test', Address.find(3).to_s
43
+ end
44
+ end