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,546 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper'
|
2
|
+
require 'mailservice_controller'
|
3
|
+
require 'net-smtp-stub'
|
4
|
+
|
5
|
+
# Re-raise errors caught by the controller.
|
6
|
+
class MailserviceController; def rescue_action(e) raise e end; end
|
7
|
+
|
8
|
+
class MailserviceControllerTest < Test::Unit::TestCase
|
9
|
+
fixtures :domains, :users, :mailinglists, :admin_messages,
|
10
|
+
:mailinglist_classes, :confirmationcodes, :addresses,
|
11
|
+
:addresses_mailinglists
|
12
|
+
|
13
|
+
def setup
|
14
|
+
@controller = MailserviceController.new
|
15
|
+
@request = ActionController::TestRequest.new
|
16
|
+
@response = ActionController::TestResponse.new
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_0_alive
|
20
|
+
assert invoke(:ping)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def get_confirmation_code(mailinglist, addr)
|
25
|
+
Confirmationcode.find(:first, :conditions =>
|
26
|
+
[ 'address_id = ? and mailinglist_id = ?',
|
27
|
+
Address.find_by_address(addr).id,
|
28
|
+
Mailinglist.find_by_name(mailinglist).id ]).code
|
29
|
+
end
|
30
|
+
|
31
|
+
class MailserviceDomainLogin < MailserviceControllerTest
|
32
|
+
def setup
|
33
|
+
super
|
34
|
+
@domain_name = @loaded_fixtures["domains"]["testdomain"]["name"]
|
35
|
+
@domain_password = "foobar"
|
36
|
+
invoke :domain_login, @domain_name, @domain_password
|
37
|
+
end
|
38
|
+
|
39
|
+
def teardown
|
40
|
+
invoke :domain_logout
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_0_domain_logged_in
|
44
|
+
assert invoke(:domain_logged_in), "Domain still logged in"
|
45
|
+
assert_equal @domain_name, invoke(:domain_name), "Still the right domain"
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
class MailserviceUserLogin < MailserviceDomainLogin
|
50
|
+
def setup
|
51
|
+
super
|
52
|
+
@user_password = "foobar"
|
53
|
+
@user_name = @loaded_fixtures["users"]["testuser"]["login"]
|
54
|
+
invoke :user_login, @user_name, @user_password
|
55
|
+
end
|
56
|
+
|
57
|
+
def teardown
|
58
|
+
invoke :user_logout
|
59
|
+
super
|
60
|
+
end
|
61
|
+
|
62
|
+
def test_0_user_logged_in
|
63
|
+
assert invoke(:user_logged_in), "User still logged in"
|
64
|
+
assert_equal "testuser", invoke(:user_name), "Still the right user"
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
class MailserviceDomainAdmin < MailserviceDomainLogin
|
69
|
+
def setup
|
70
|
+
super
|
71
|
+
@admin_password="foobar"
|
72
|
+
@admin_name=@loaded_fixtures["users"]["root"]["login"]
|
73
|
+
invoke :user_login, @admin_name, @admin_password
|
74
|
+
end
|
75
|
+
|
76
|
+
def teardown
|
77
|
+
invoke :user_logout
|
78
|
+
super
|
79
|
+
end
|
80
|
+
|
81
|
+
def test_0_user_still_admin
|
82
|
+
assert invoke(:user_logged_in), "User still logged in"
|
83
|
+
assert_equal @admin_name, invoke(:user_name), "User is still root"
|
84
|
+
assert invoke(:is_admin), "User is still administrator"
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
|
89
|
+
class TC_Mailservice_DomainLogin < MailserviceControllerTest
|
90
|
+
def setup
|
91
|
+
super
|
92
|
+
@domain_name = @loaded_fixtures["domains"]["testdomain"]["name"]
|
93
|
+
@domain_password = "foobar"
|
94
|
+
end
|
95
|
+
|
96
|
+
def test_baddomain
|
97
|
+
# bad username, bad password
|
98
|
+
assert_equal(false, invoke(:domain_login,"junkdomain", "blort"))
|
99
|
+
|
100
|
+
# good username, bad password
|
101
|
+
assert_equal(false, invoke(:domain_login,@domain_name, "blort"))
|
102
|
+
end
|
103
|
+
|
104
|
+
def test_loggedout
|
105
|
+
# now once again
|
106
|
+
assert_equal(false, invoke(:domain_logout))
|
107
|
+
end
|
108
|
+
|
109
|
+
def test_good_domain
|
110
|
+
# good username, good password
|
111
|
+
assert_equal(true, invoke(:domain_login,@domain_name, @domain_password))
|
112
|
+
|
113
|
+
# now log out
|
114
|
+
assert_equal(true, invoke(:domain_logout))
|
115
|
+
end
|
116
|
+
|
117
|
+
def test_permissions
|
118
|
+
assert_raises RuntimeError do
|
119
|
+
invoke :user_login, "testuser", "foobar"
|
120
|
+
end
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
class TC_Mailservice_UserLogin < MailserviceDomainLogin
|
125
|
+
def test_baduser
|
126
|
+
assert_equal false, invoke(:user_login,"huaglhuagl", "blort")
|
127
|
+
assert_equal false, invoke(:user_login,"testuser", "blort")
|
128
|
+
end
|
129
|
+
|
130
|
+
def test_gooduser
|
131
|
+
assert invoke(:user_login,"testuser", "foobar")
|
132
|
+
assert_equal false, invoke(:is_admin)
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
|
137
|
+
class TC_Mailservice_TroublesomeAdminTask < MailserviceDomainAdmin
|
138
|
+
def test_userlogin
|
139
|
+
assert_nothing_raised do
|
140
|
+
assert invoke(:is_admin)
|
141
|
+
end
|
142
|
+
assert_nothing_raised do
|
143
|
+
assert invoke(:admin_user_signup,"newuser", "password", "password")
|
144
|
+
end
|
145
|
+
|
146
|
+
# user exists, login succeeds
|
147
|
+
assert invoke(:user_login, "newuser", "password")
|
148
|
+
assert_equal false, invoke(:is_admin)
|
149
|
+
|
150
|
+
# let's get our session back
|
151
|
+
assert invoke(:user_login, @admin_name, "foobar")
|
152
|
+
assert invoke(:is_admin)
|
153
|
+
assert_nothing_raised do
|
154
|
+
assert invoke(:admin_user_delete, "newuser", "newuser")
|
155
|
+
end
|
156
|
+
end
|
157
|
+
end
|
158
|
+
|
159
|
+
class TC_Mailservice_AdminTasks_UserCreation < MailserviceDomainAdmin
|
160
|
+
def test_passwordmismatch
|
161
|
+
assert invoke(:is_admin)
|
162
|
+
# password doesn't match
|
163
|
+
assert_raises RuntimeError do
|
164
|
+
invoke(:admin_user_signup,"newuser", "password", "drowssap")
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
168
|
+
def test_usercreate
|
169
|
+
# user doesn't exist; gets created
|
170
|
+
assert invoke(:is_admin)
|
171
|
+
assert invoke(:admin_user_signup,"newuser", "password", "password")
|
172
|
+
assert_raises RuntimeError do
|
173
|
+
assert invoke(:admin_user_delete,"newuser", "resuwen"),
|
174
|
+
"login and confirmation don't match on delete"
|
175
|
+
end
|
176
|
+
assert_nothing_raised do
|
177
|
+
assert invoke(:admin_user_delete,"newuser", "newuser"),
|
178
|
+
"successful deletion"
|
179
|
+
end
|
180
|
+
end
|
181
|
+
|
182
|
+
def test_usercollision
|
183
|
+
assert_nothing_raised do
|
184
|
+
assert invoke(:is_admin)
|
185
|
+
end
|
186
|
+
assert invoke(:admin_user_signup,"newuser", "password", "password")
|
187
|
+
# user already exists; creation fails
|
188
|
+
assert_raises RuntimeError do
|
189
|
+
invoke(:admin_user_signup,"newuser", "password", "password")
|
190
|
+
end
|
191
|
+
assert invoke(:admin_user_delete,"newuser", "newuser")
|
192
|
+
end
|
193
|
+
|
194
|
+
def test_aaa_userlist # force it to go first, see what happens
|
195
|
+
assert invoke(:is_admin)
|
196
|
+
list=nil
|
197
|
+
assert_nothing_raised do
|
198
|
+
list=invoke :admin_user_list
|
199
|
+
end
|
200
|
+
assert list
|
201
|
+
assert_equal [ [ @admin_name, "Admin" ],
|
202
|
+
[ "testuser", "Test User" ],
|
203
|
+
[ "virtuser", "Virtual User" ] ], list.sort
|
204
|
+
end
|
205
|
+
|
206
|
+
end
|
207
|
+
|
208
|
+
class TC_Mailservice_AdminTasks_UserDeletion < MailserviceDomainAdmin
|
209
|
+
def test_usernolongerexists
|
210
|
+
assert_nothing_raised do
|
211
|
+
assert invoke(:is_admin)
|
212
|
+
end
|
213
|
+
|
214
|
+
# create the user
|
215
|
+
assert_nothing_raised do
|
216
|
+
assert invoke(:admin_user_signup,"newuser", "password", "password")
|
217
|
+
end
|
218
|
+
|
219
|
+
# user exists; deletion succeeds
|
220
|
+
assert_nothing_raised do
|
221
|
+
assert invoke(:admin_user_delete,"newuser", "newuser")
|
222
|
+
end
|
223
|
+
|
224
|
+
# user doesn't exist; login fails
|
225
|
+
assert_nothing_raised do
|
226
|
+
assert_equal false, invoke(:user_login,"newuser", "password")
|
227
|
+
end
|
228
|
+
|
229
|
+
# okay, our session's just been trashed again. Get it back.
|
230
|
+
assert_nothing_raised do
|
231
|
+
assert invoke(:user_login,@admin_name, "foobar")
|
232
|
+
end
|
233
|
+
|
234
|
+
# user doesn't exist; deletion fails
|
235
|
+
assert_nothing_raised do
|
236
|
+
assert_equal false, invoke(:admin_user_delete,"newuser", "newuser")
|
237
|
+
end
|
238
|
+
end
|
239
|
+
end
|
240
|
+
|
241
|
+
class TC_Mailservice_AdminTasks_UserPasswords < MailserviceDomainAdmin
|
242
|
+
def test_password_reset_normal
|
243
|
+
assert invoke(:is_admin)
|
244
|
+
|
245
|
+
assert_nothing_raised do
|
246
|
+
assert invoke(:admin_user_reset_password, "testuser",
|
247
|
+
"newpassword", "newpassword")
|
248
|
+
end
|
249
|
+
end
|
250
|
+
|
251
|
+
def test_password_reset_password_mismatch
|
252
|
+
assert invoke(:is_admin)
|
253
|
+
|
254
|
+
assert_raises RuntimeError do
|
255
|
+
invoke(:admin_user_reset_password, "testuser",
|
256
|
+
"newpassword", "differentnewpassword")
|
257
|
+
end
|
258
|
+
end
|
259
|
+
|
260
|
+
def test_password_reset_user_not_found
|
261
|
+
assert invoke(:is_admin)
|
262
|
+
|
263
|
+
assert_raises RuntimeError, "user: user not found" do
|
264
|
+
invoke(:admin_user_reset_password, "nonexistentuser", "foobar", "foobar")
|
265
|
+
end
|
266
|
+
end
|
267
|
+
end
|
268
|
+
|
269
|
+
class TC_Mailservice_UserTasks_ChangePassword < MailserviceUserLogin
|
270
|
+
def test_normal
|
271
|
+
assert_nothing_raised do
|
272
|
+
assert_equal true, invoke(:user_change_password, "foobar",
|
273
|
+
"foobarquux", "foobarquux")
|
274
|
+
end
|
275
|
+
|
276
|
+
invoke(:user_logout)
|
277
|
+
assert_equal false, invoke(:user_logged_in)
|
278
|
+
assert_equal false, invoke(:user_login, "testuser", "foobar")
|
279
|
+
assert_equal false, invoke(:user_logged_in)
|
280
|
+
assert_equal true, invoke(:user_login, "testuser", "foobarquux")
|
281
|
+
assert_equal true, invoke(:user_logged_in)
|
282
|
+
end
|
283
|
+
|
284
|
+
def test_illegal_password
|
285
|
+
assert_raises RuntimeError, "password: is too short (minimum is 5 characters)" do
|
286
|
+
invoke(:user_change_password, "foobar", "x", "x")
|
287
|
+
end
|
288
|
+
end
|
289
|
+
|
290
|
+
def test_original_password_wrong
|
291
|
+
assert_raises RuntimeError, "auth: original password incorrect" do
|
292
|
+
invoke(:user_change_password, "notfoobar",
|
293
|
+
"foobarquux", "foobarquux")
|
294
|
+
end
|
295
|
+
end
|
296
|
+
end
|
297
|
+
|
298
|
+
class TC_Mailservice_UserTasks_RealName < MailserviceUserLogin
|
299
|
+
def setup
|
300
|
+
super
|
301
|
+
@new_name = "Test User New"
|
302
|
+
end
|
303
|
+
|
304
|
+
def test_retrieve
|
305
|
+
assert_equal "Test User", invoke(:user_real_name)
|
306
|
+
end
|
307
|
+
|
308
|
+
def test_change
|
309
|
+
assert_nothing_raised do
|
310
|
+
assert_equal @new_name, invoke(:user_change_real_name,
|
311
|
+
"foobar",
|
312
|
+
@new_name)
|
313
|
+
end
|
314
|
+
|
315
|
+
assert_equal @new_name, invoke(:user_real_name)
|
316
|
+
end
|
317
|
+
|
318
|
+
def test_bad_password
|
319
|
+
assert_raises RuntimeError, "auth: password incorrect" do
|
320
|
+
invoke(:user_change_real_name, "nofoobar", @new_name)
|
321
|
+
end
|
322
|
+
end
|
323
|
+
end
|
324
|
+
|
325
|
+
class TC_MailService_EmailAddresses < MailserviceUserLogin
|
326
|
+
def test_emailaddress
|
327
|
+
assert_equal "testuser@#{@domain_name}", invoke(:user_email_address)
|
328
|
+
end
|
329
|
+
|
330
|
+
|
331
|
+
def test_emailaddresses
|
332
|
+
assert_equal [ "address1@foo.test",
|
333
|
+
"address2@foo.test" ],
|
334
|
+
invoke(:user_email_addresses).sort
|
335
|
+
assert_equal [ "address1@foo.test" ],
|
336
|
+
invoke(:user_email_addresses_confirmed).sort
|
337
|
+
end
|
338
|
+
|
339
|
+
def test_addremove
|
340
|
+
assert_nothing_raised do
|
341
|
+
assert invoke(:user_email_addresses_add,"brandnewuser@foo.test")
|
342
|
+
end
|
343
|
+
|
344
|
+
assert_nothing_raised do
|
345
|
+
assert_equal [ "address1@foo.test",
|
346
|
+
"address2@foo.test",
|
347
|
+
"brandnewuser@foo.test" ],
|
348
|
+
invoke(:user_email_addresses).sort
|
349
|
+
end
|
350
|
+
assert_nothing_raised do
|
351
|
+
assert_equal [ "address1@foo.test" ],
|
352
|
+
invoke(:user_email_addresses_confirmed).sort
|
353
|
+
end
|
354
|
+
assert_nothing_raised do
|
355
|
+
assert_equal [ "address2@foo.test", "brandnewuser@foo.test" ],
|
356
|
+
invoke(:user_email_addresses_unconfirmed).sort
|
357
|
+
end
|
358
|
+
|
359
|
+
confirmation_code=get_confirmation_code("testuser",
|
360
|
+
"brandnewuser@foo.test")
|
361
|
+
|
362
|
+
assert confirmation_code =~ /[0-9a-z]{16}/
|
363
|
+
|
364
|
+
assert_nothing_raised do
|
365
|
+
assert_equal false, invoke(:user_email_address_confirm,
|
366
|
+
"brandnewuser@foo.test",
|
367
|
+
confirmation_code+"foo")
|
368
|
+
end
|
369
|
+
|
370
|
+
assert_nothing_raised do
|
371
|
+
assert_equal true, invoke(:user_email_address_confirm,
|
372
|
+
"brandnewuser@foo.test",confirmation_code)
|
373
|
+
end
|
374
|
+
|
375
|
+
assert_nothing_raised do
|
376
|
+
assert_equal [ "address2@foo.test" ],
|
377
|
+
invoke(:user_email_addresses_unconfirmed).sort
|
378
|
+
end
|
379
|
+
|
380
|
+
assert_nothing_raised do
|
381
|
+
assert_equal [ "brandnewuser@foo.test" ],
|
382
|
+
invoke(:user_email_addresses_remove,
|
383
|
+
"brandnewuser@foo.test").sort
|
384
|
+
end
|
385
|
+
|
386
|
+
assert_nothing_raised do
|
387
|
+
assert_equal nil,
|
388
|
+
invoke(:user_email_addresses_remove,
|
389
|
+
"brandnewuser@foo.test")
|
390
|
+
end
|
391
|
+
|
392
|
+
assert_nothing_raised do
|
393
|
+
assert_equal [ "address1@foo.test",
|
394
|
+
"address2@foo.test" ],
|
395
|
+
invoke(:user_email_addresses).sort
|
396
|
+
end
|
397
|
+
end
|
398
|
+
end
|
399
|
+
|
400
|
+
class TC_Mailservice_MailinglistClasses < MailserviceUserLogin
|
401
|
+
|
402
|
+
def setup
|
403
|
+
super
|
404
|
+
@mailing_list = @loaded_fixtures["mailinglist_classes"] \
|
405
|
+
["mailinglist_class_mailing_list"]
|
406
|
+
@distribution_list = @loaded_fixtures["mailinglist_classes"] \
|
407
|
+
["mailinglist_class_distribution_list"]
|
408
|
+
end
|
409
|
+
|
410
|
+
def test_get_mailinglist_classes
|
411
|
+
assert_equal [ 'Distribution List', 'Mailing List' ],
|
412
|
+
invoke(:mailinglist_classes).sort
|
413
|
+
end
|
414
|
+
|
415
|
+
def test_get_mailinglist_class
|
416
|
+
assert mlclass = invoke(:mailinglist_class_get_attributes,
|
417
|
+
"Mailing List")
|
418
|
+
assert_equal @mailing_list["description"], mlclass.description
|
419
|
+
assert_equal @mailing_list["public"], mlclass.public
|
420
|
+
assert_equal @mailing_list["moderated"], mlclass.moderated
|
421
|
+
assert_equal @mailing_list["confirmation"], mlclass.confirmation
|
422
|
+
assert_equal @mailing_list["joinable"], mlclass.joinable
|
423
|
+
assert_equal @mailing_list["closed"], mlclass.closed
|
424
|
+
assert_equal @mailing_list["archived"], mlclass.archived
|
425
|
+
|
426
|
+
assert dlclass = invoke(:mailinglist_class_get_attributes,
|
427
|
+
"Distribution List")
|
428
|
+
assert_equal @distribution_list["description"], dlclass.description
|
429
|
+
assert_equal @distribution_list["public"], dlclass.public
|
430
|
+
assert_equal @distribution_list["moderated"], dlclass.moderated
|
431
|
+
assert_equal @distribution_list["confirmation"], dlclass.confirmation
|
432
|
+
assert_equal @distribution_list["joinable"], dlclass.joinable
|
433
|
+
assert_equal @distribution_list["closed"], dlclass.closed
|
434
|
+
assert_equal @distribution_list["archived"], dlclass.archived
|
435
|
+
end
|
436
|
+
end
|
437
|
+
|
438
|
+
class TC_Mailservice_UserMailingLists < MailserviceUserLogin
|
439
|
+
def test_mailinglists
|
440
|
+
user_mailinglists=invoke(:user_mailinglists)
|
441
|
+
assert_equal [ 3 ],
|
442
|
+
invoke(:user_mailinglists)
|
443
|
+
assert_equal "testml", invoke(:mailinglist_name,3)
|
444
|
+
end
|
445
|
+
end
|
446
|
+
|
447
|
+
class TC_Mailservice_CreateMailinglist < MailserviceUserLogin
|
448
|
+
def test_create_mailinglist
|
449
|
+
assert_equal "testmailinglist@test.domain",
|
450
|
+
invoke(:mailinglist_create, "testmailinglist", "Mailing List")
|
451
|
+
assert id = invoke(:mailinglist_find_by_name, "testmailinglist")
|
452
|
+
assert invoke(:mailinglist_delete, id)
|
453
|
+
assert_equal nil, invoke(:mailinglist_find_by_name, "testmailinglist")
|
454
|
+
end
|
455
|
+
end
|
456
|
+
|
457
|
+
class MailserviceUserMailinglist < MailserviceUserLogin
|
458
|
+
def setup
|
459
|
+
super
|
460
|
+
invoke(:mailinglist_create,"testmailinglist", "Mailing List")
|
461
|
+
@id = invoke(:mailinglist_find_by_name,"testmailinglist")
|
462
|
+
end
|
463
|
+
|
464
|
+
def teardown
|
465
|
+
invoke(:mailinglist_delete,@id)
|
466
|
+
super
|
467
|
+
end
|
468
|
+
|
469
|
+
def test_0_mailinglist_exists
|
470
|
+
assert id = invoke(:mailinglist_find_by_name, "testmailinglist")
|
471
|
+
assert_equal @id, id
|
472
|
+
|
473
|
+
assert_equal "testmailinglist", invoke(:mailinglist_name, id)
|
474
|
+
assert_raises RuntimeError, "Mailing list not found" do
|
475
|
+
invoke(:mailinglist_name, 999)
|
476
|
+
end
|
477
|
+
|
478
|
+
assert_raises RuntimeError, "Permission denied" do
|
479
|
+
invoke(:mailinglist_name, 2)
|
480
|
+
end
|
481
|
+
end
|
482
|
+
end
|
483
|
+
|
484
|
+
class TC_Mailservice_MailingListSubscribe < MailserviceUserMailinglist
|
485
|
+
def test_mailinglist_subscribe
|
486
|
+
assert @id
|
487
|
+
|
488
|
+
assert_nothing_raised do
|
489
|
+
assert_equal [ ],
|
490
|
+
invoke(:mailinglist_subscribers,@id).sort
|
491
|
+
end
|
492
|
+
|
493
|
+
assert_nothing_raised do
|
494
|
+
assert invoke(:mailinglist_subscribe,@id,"test@foo.test")
|
495
|
+
end
|
496
|
+
|
497
|
+
assert_nothing_raised do
|
498
|
+
assert_equal [ ],
|
499
|
+
invoke(:mailinglist_subscribers,@id).sort
|
500
|
+
end
|
501
|
+
|
502
|
+
assert_nothing_raised do
|
503
|
+
assert_equal [ "test@foo.test" ],
|
504
|
+
invoke(:mailinglist_pending,@id)
|
505
|
+
end
|
506
|
+
|
507
|
+
confirmation=nil
|
508
|
+
|
509
|
+
assert_nothing_raised do
|
510
|
+
confirmation=get_confirmation_code("testmailinglist",
|
511
|
+
"test@foo.test")
|
512
|
+
end
|
513
|
+
|
514
|
+
assert confirmation =~ /[0-9a-z]{16}/
|
515
|
+
|
516
|
+
assert_nothing_raised do
|
517
|
+
assert_equal false, invoke(:mailinglist_confirm,
|
518
|
+
"testmailinglist", "test@foo.test",
|
519
|
+
"@@@@@@@@@@@@@@@@")
|
520
|
+
end
|
521
|
+
|
522
|
+
assert_nothing_raised do
|
523
|
+
assert_equal true, invoke(:mailinglist_confirm,
|
524
|
+
"testmailinglist", "test@foo.test",
|
525
|
+
confirmation)
|
526
|
+
end
|
527
|
+
|
528
|
+
assert_nothing_raised do
|
529
|
+
assert_equal [ "test@foo.test" ],
|
530
|
+
invoke(:mailinglist_subscribers,@id).sort
|
531
|
+
end
|
532
|
+
|
533
|
+
assert_nothing_raised do
|
534
|
+
assert invoke(:mailinglist_unsubscribe,@id,"test@foo.test")
|
535
|
+
end
|
536
|
+
|
537
|
+
assert_nothing_raised do
|
538
|
+
assert_equal [ ],
|
539
|
+
invoke(:mailinglist_subscribers,@id).sort
|
540
|
+
end
|
541
|
+
end
|
542
|
+
|
543
|
+
def test_mailinglist_message
|
544
|
+
# @server.mailinglistMessages(@id)
|
545
|
+
end
|
546
|
+
end
|