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.
- data/README +35 -0
- data/Rakefile +10 -0
- data/app/apis/mailservice_api.rb +178 -0
- data/app/controllers/.sugoi_admin_controller.rb.swp +0 -0
- data/app/controllers/account_controller.rb +39 -0
- data/app/controllers/address_controller.rb +49 -0
- data/app/controllers/application.rb +4 -0
- data/app/controllers/commandline_controller.rb +15 -0
- data/app/controllers/domain_controller.rb +37 -0
- data/app/controllers/mailinglist_controller.rb +51 -0
- data/app/controllers/mailservice_controller.rb +497 -0
- data/app/controllers/sugoi_admin_controller.rb +93 -0
- data/app/helpers/account_helper.rb +2 -0
- data/app/helpers/address_helper.rb +2 -0
- data/app/helpers/application_helper.rb +3 -0
- data/app/helpers/domain_helper.rb +2 -0
- data/app/helpers/mailservice_helper.rb +2 -0
- data/app/helpers/sugoi_admin_helper.rb +2 -0
- data/app/models/address.rb +110 -0
- data/app/models/admin_message.rb +45 -0
- data/app/models/confirmationcode.rb +59 -0
- data/app/models/domain.rb +76 -0
- data/app/models/mailinglist.rb +336 -0
- data/app/models/mailinglist_class.rb +39 -0
- data/app/models/message.rb +293 -0
- data/app/models/proxy_link.rb +25 -0
- data/app/models/user.rb +150 -0
- data/app/views/account/login.rhtml +22 -0
- data/app/views/account/logout.rhtml +10 -0
- data/app/views/account/signup.rhtml +17 -0
- data/app/views/account/welcome.rhtml +13 -0
- data/app/views/address/_form.rhtml +7 -0
- data/app/views/address/edit.rhtml +10 -0
- data/app/views/address/list.rhtml +27 -0
- data/app/views/address/new.rhtml +8 -0
- data/app/views/address/show.rhtml +8 -0
- data/app/views/domain/login.rhtml +22 -0
- data/app/views/domain/logout.rhtml +10 -0
- data/app/views/domain/signup.rhtml +17 -0
- data/app/views/domain/welcome.rhtml +13 -0
- data/app/views/layouts/address.rhtml +13 -0
- data/app/views/layouts/scaffold.rhtml +13 -0
- data/app/views/mailinglist/_form.rhtml +28 -0
- data/app/views/mailinglist/edit.rhtml +10 -0
- data/app/views/mailinglist/list.rhtml +27 -0
- data/app/views/mailinglist/new.rhtml +8 -0
- data/app/views/mailinglist/show.rhtml +16 -0
- data/app/views/sugoi_admin/create_domain.rhtml +1 -0
- data/app/views/sugoi_admin/list_addresses.rhtml +1 -0
- data/app/views/sugoi_admin/list_domains.rhtml +2 -0
- data/app/views/sugoi_admin/list_mailinglists.rhtml +1 -0
- data/bin/mailc +32 -0
- data/bin/maild +133 -0
- data/bin/sugoi-admin +21 -0
- data/bin/sugoi-mail +20 -0
- data/config/boot.rb +44 -0
- data/config/environment.rb +54 -0
- data/config/environments/bench.rb +21 -0
- data/config/environments/coverage.rb +21 -0
- data/config/environments/development.rb +21 -0
- data/config/environments/production.rb +18 -0
- data/config/environments/test.rb +19 -0
- data/config/lighttpd.conf +46 -0
- data/config/routes.rb +29 -0
- data/db/migrate/001_mailproxy.rb +7 -0
- data/db/migrate/002_create_users.rb +13 -0
- data/db/migrate/003_create_mailinglists.rb +13 -0
- data/db/migrate/004_create_addresses.rb +12 -0
- data/db/migrate/005_create_addresses_mailinglists.rb +13 -0
- data/db/migrate/006_alter_mailinglists.rb +9 -0
- data/db/migrate/007_create_messages.rb +25 -0
- data/db/migrate/008_add_mailinglistid_to_users.rb +14 -0
- data/db/migrate/009_add_domainadmin_to_users.rb +9 -0
- data/db/migrate/010_add_domain_to_users.rb +16 -0
- data/db/migrate/011_add_active_to_addresses.rb +14 -0
- data/db/migrate/012_create_confirmationcodes.rb +14 -0
- data/db/migrate/013_add_description_to_mailinglists.rb +9 -0
- data/db/migrate/014_create_admin_messages.rb +69 -0
- data/db/migrate/015_add_messages_to_mailinglists.rb +26 -0
- data/db/migrate/016_add_mailinglist_admin_to_users.rb +9 -0
- data/db/migrate/017_add_mailinglist_types.rb +94 -0
- data/db/migrate/018_add_bounciness_to_addresses.rb +20 -0
- data/db/migrate/019_add_archived_to_mailinglist_classes.rb +25 -0
- data/db/migrate/020_add_envelope_data_to_messages.rb +11 -0
- data/db/migrate/021_add_addresses_users.rb +14 -0
- data/db/migrate/022_add_virtual_to_users.rb +14 -0
- data/db/migrate/023_drop_openposting_from_mailinglists.rb +9 -0
- data/db/migrate/024_add_proxy_links.rb +21 -0
- data/db/migrate/025_add_proxify_to_mailinglist_classes.rb +25 -0
- data/db/schema.mysql.sql +104 -0
- data/db/schema.postgresql.sql +104 -0
- data/db/schema.rb +85 -0
- data/db/schema.sqlite.sql +104 -0
- data/db/schema.sqlserver.sql +113 -0
- data/db/schema_version +1 -0
- data/doc/README_FOR_APP +179 -0
- data/doc/mailinglist_classes description.txt +28 -0
- data/installer/rails_installer_defaults.yml +5 -0
- data/lib/daemonize.rb +56 -0
- data/lib/domain_system.rb +87 -0
- data/lib/gurgitate-rules.rb +69 -0
- data/lib/limitedfork.rb +66 -0
- data/lib/login_system.rb +87 -0
- data/public/.htaccess +40 -0
- data/public/404.html +8 -0
- data/public/500.html +8 -0
- data/public/dispatch.cgi +10 -0
- data/public/dispatch.fcgi +24 -0
- data/public/dispatch.rb +10 -0
- data/public/favicon.ico +0 -0
- data/public/images/rails.png +0 -0
- data/public/javascripts/application.js +2 -0
- data/public/javascripts/controls.js +815 -0
- data/public/javascripts/dragdrop.js +913 -0
- data/public/javascripts/effects.js +958 -0
- data/public/javascripts/prototype.js +2006 -0
- data/public/robots.txt +1 -0
- data/public/stylesheets/scaffold.css +74 -0
- data/public/stylesheets/trestle.css +74 -0
- data/script/about +3 -0
- data/script/breakpointer +3 -0
- data/script/console +3 -0
- data/script/destroy +3 -0
- data/script/fakedeliver +19 -0
- data/script/generate +3 -0
- data/script/performance/benchmarker +3 -0
- data/script/performance/profiler +3 -0
- data/script/plugin +3 -0
- data/script/process/reaper +3 -0
- data/script/process/spawner +3 -0
- data/script/runner +3 -0
- data/script/server +3 -0
- data/sugoi-mail.gemspec +36 -0
- data/test/fixtures/addresses.yml +70 -0
- data/test/fixtures/addresses_mailinglists.yml +20 -0
- data/test/fixtures/admin_messages.yml +65 -0
- data/test/fixtures/confirmationcodes.yml +13 -0
- data/test/fixtures/domains.yml +9 -0
- data/test/fixtures/mailinglist_classes.yml +45 -0
- data/test/fixtures/mailinglists.yml +80 -0
- data/test/fixtures/messages.yml +154 -0
- data/test/fixtures/proxy_links.yml +5 -0
- data/test/fixtures/users.yml +50 -0
- data/test/functional/domain_controller_test.rb +74 -0
- data/test/functional/mailservice_controller_test.rb +546 -0
- data/test/integration/test_soap.rb +413 -0
- data/test/integration/test_xmlrpc.rb +198 -0
- data/test/mocks/test/net-smtp-stub.rb +24 -0
- data/test/test_helper.rb +28 -0
- data/test/unit/address_test.rb +44 -0
- data/test/unit/admin_message_test.rb +41 -0
- data/test/unit/confirmationcode_test.rb +64 -0
- data/test/unit/domain_test.rb +128 -0
- data/test/unit/mailinglist_class_test.rb +82 -0
- data/test/unit/mailinglist_test.rb +145 -0
- data/test/unit/message_test.rb +151 -0
- data/test/unit/user_test.rb +126 -0
- data/test/units.rb +4 -0
- data/vendor/plugins/active_command/init.rb +1 -0
- data/vendor/plugins/active_command/lib/active_command/request.rb +137 -0
- data/vendor/plugins/active_command/lib/active_command/response.rb +132 -0
- data/vendor/plugins/active_command/lib/active_command.rb +2 -0
- data/vendor/plugins/ar_fixtures/CHANGELOG +10 -0
- data/vendor/plugins/ar_fixtures/MIT-LICENSE +20 -0
- data/vendor/plugins/ar_fixtures/README +19 -0
- data/vendor/plugins/ar_fixtures/Rakefile +54 -0
- data/vendor/plugins/ar_fixtures/about.yml +7 -0
- data/vendor/plugins/ar_fixtures/init.rb +1 -0
- data/vendor/plugins/ar_fixtures/lib/ar_fixtures.rb +102 -0
- data/vendor/plugins/ar_fixtures/tasks/ar_fixtures.rake +39 -0
- data/vendor/plugins/ar_fixtures/test/ar_fixtures_test.rb +53 -0
- data/vendor/plugins/ar_fixtures/test/database.yml +18 -0
- data/vendor/plugins/ar_fixtures/test/fixtures/beer.rb +5 -0
- data/vendor/plugins/ar_fixtures/test/fixtures/beers.yml +9 -0
- data/vendor/plugins/ar_fixtures/test/fixtures/beers_drunkards.yml +8 -0
- data/vendor/plugins/ar_fixtures/test/fixtures/drunkard.rb +6 -0
- data/vendor/plugins/ar_fixtures/test/fixtures/drunkards.yml +8 -0
- data/vendor/plugins/ar_fixtures/test/fixtures/glass.rb +2 -0
- data/vendor/plugins/ar_fixtures/test/fixtures/glasses.yml +9 -0
- data/vendor/plugins/ar_fixtures/test/schema.rb +21 -0
- data/vendor/plugins/ar_fixtures/test/test_helper.rb +37 -0
- 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
|
+
|
data/test/test_helper.rb
ADDED
@@ -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
|