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.
- data/INSTALL +94 -0
- data/app/apis/mailservice_api.rb +32 -22
- data/app/controllers/account_controller.rb +38 -22
- data/app/controllers/address_controller.rb +2 -0
- data/app/controllers/application.rb +12 -1
- data/app/controllers/base_user_controller.rb +29 -0
- data/app/controllers/domain_controller.rb +7 -8
- data/app/controllers/mail_admin_controller.rb +275 -0
- data/app/controllers/mailinglist_controller.rb +68 -14
- data/app/controllers/mailservice_controller.rb +116 -94
- data/app/controllers/navigation_controller.rb +3 -0
- data/app/controllers/root_admin_controller.rb +346 -0
- data/app/controllers/sugoi_admin_controller.rb +16 -13
- data/app/helpers/base_user_helper.rb +2 -0
- data/app/helpers/mail_admin_helper.rb +7 -0
- data/app/helpers/navigation_helper.rb +2 -0
- data/app/helpers/root_admin_helper.rb +2 -0
- data/app/models/address.rb +3 -4
- data/app/models/domain.rb +1 -1
- data/app/models/mail_admin.rb +2 -0
- data/app/models/mailinglist.rb +41 -19
- data/app/models/mailinglist_class.rb +1 -0
- data/app/models/message.rb +18 -36
- data/app/models/proxy_link.rb +14 -6
- data/app/views/account/login.rhtml +14 -12
- data/app/views/account/logout.rhtml +4 -8
- data/app/views/account/welcome.rhtml +3 -13
- data/app/views/base_user/add_address.rhtml +3 -0
- data/app/views/base_user/edit_address.rhtml +3 -0
- data/app/views/base_user/edit_user_list.rhtml +21 -0
- data/app/views/base_user/list_mailinglists.rhtml +3 -0
- data/app/views/base_user/remove_address.rhtml +3 -0
- data/app/views/base_user/unsubscribe_self.rhtml +3 -0
- data/app/views/layouts/application.rhtml +47 -0
- data/app/views/layouts/login.rhtml +34 -0
- data/app/views/layouts/sugoi_admin.rhtml +1 -0
- data/app/views/mail_admin/_form.rhtml +11 -0
- data/app/views/mail_admin/edit_admin_message.rhtml +12 -0
- data/app/views/mail_admin/list_admin_messages.rhtml +20 -0
- data/app/views/mail_admin/new_admin_message.rhtml +0 -0
- data/app/views/mailinglist/_address_form.rhtml +23 -0
- data/app/views/mailinglist/_form.rhtml +10 -14
- data/app/views/mailinglist/_new_class_form.rhtml +16 -0
- data/app/views/mailinglist/_new_form.rhtml +30 -0
- data/app/views/mailinglist/edit.rhtml +11 -5
- data/app/views/mailinglist/list.rhtml +15 -15
- data/app/views/mailinglist/list_mailinglist_classes.rhtml +18 -0
- data/app/views/mailinglist/new.rhtml +5 -5
- data/app/views/mailinglist/new_address.rhtml +10 -0
- data/app/views/mailinglist/new_mailinglist_class.rhtml +8 -0
- data/app/views/mailinglist/show.rhtml +15 -13
- data/app/views/navigation/_base_add_address_module.rhtml +2 -0
- data/app/views/navigation/_base_edit_address_module.rhtml +2 -0
- data/app/views/navigation/_base_edit_user_list_module.rhtml +5 -0
- data/app/views/navigation/_base_index_module.rhtml +2 -0
- data/app/views/navigation/_base_list_mailinglists_module.rhtml +3 -0
- data/app/views/navigation/_base_remove_address_module.rhtml +2 -0
- data/app/views/navigation/_base_unsubscribe_self_module.rhtml +2 -0
- data/app/views/navigation/_base_welcome_module.rhtml +3 -0
- data/app/views/navigation/_nav_module.rhtml +77 -0
- data/app/views/navigation/_root_add_address_module.rhtml +3 -0
- data/app/views/navigation/_root_add_mailinglist_module.rhtml +3 -0
- data/app/views/navigation/_root_add_user_module.rhtml +3 -0
- data/app/views/navigation/_root_change_user_password_module.rhtml +3 -0
- data/app/views/navigation/_root_edit_address_module.rhtml +13 -0
- data/app/views/navigation/_root_edit_mailinglist_module.rhtml +12 -0
- data/app/views/navigation/_root_edit_user_list_module.rhtml +3 -0
- data/app/views/navigation/_root_edit_user_module.rhtml +10 -0
- data/app/views/navigation/_root_index_module.rhtml +4 -0
- data/app/views/navigation/_root_list_addresses_module.rhtml +11 -0
- data/app/views/navigation/_root_list_mailinglists_module.rhtml +11 -0
- data/app/views/navigation/_root_list_users_module.rhtml +12 -0
- data/app/views/navigation/_root_remove_address_module.rhtml +12 -0
- data/app/views/navigation/_root_remove_mailinglist_module.rhtml +12 -0
- data/app/views/navigation/_root_remove_user_module.rhtml +12 -0
- data/app/views/navigation/_root_show_user_module.rhtml +10 -0
- data/app/views/navigation/_root_welcome_module.rhtml +3 -0
- data/app/views/navigation/chooseNav.rhtml +0 -0
- data/app/views/navigation/logout.rhtml +8 -0
- data/app/views/root_admin/_form.rhtml +21 -0
- data/app/views/root_admin/add_address.rhtml +3 -0
- data/app/views/root_admin/add_mailinglist.rhtml +3 -0
- data/app/views/root_admin/admin_user_list.rhtml +29 -0
- data/app/views/root_admin/admin_user_new.rhtml +8 -0
- data/app/views/root_admin/change_user_password.rhtml +3 -0
- data/app/views/root_admin/edit_address.rhtml +3 -0
- data/app/views/root_admin/edit_mailinglist.rhtml +3 -0
- data/app/views/root_admin/edit_user_list.rhtml +3 -0
- data/app/views/root_admin/list_addresses.rhtml +3 -0
- data/app/views/root_admin/list_mailinglists.rhtml +3 -0
- data/app/views/root_admin/list_users.rhtml +32 -0
- data/app/views/root_admin/remove_address.rhtml +3 -0
- data/app/views/root_admin/remove_mailinglist.rhtml +3 -0
- data/app/views/root_admin/remove_user.rhtml +3 -0
- data/app/views/root_admin/show_user.rhtml +3 -0
- data/app/views/sugoi_admin/_command_description.rhtml +1 -1
- data/app/views/sugoi_admin/_command_list.rhtml +1 -1
- data/app/views/sugoi_admin/create_domain.rhtml +1 -1
- data/app/views/sugoi_admin/create_list.rhtml +1 -1
- data/app/views/sugoi_admin/create_user.rhtml +1 -1
- data/app/views/sugoi_admin/help.rhtml +1 -1
- data/app/views/sugoi_admin/init.rhtml +1 -1
- data/app/views/sugoi_admin/list_addresses.rhtml +1 -1
- data/app/views/sugoi_admin/list_domains.rhtml +1 -1
- data/app/views/sugoi_admin/list_mailinglist_classes.rhtml +1 -1
- data/app/views/sugoi_admin/list_mailinglists.rhtml +1 -1
- data/app/views/sugoi_admin/list_users.rhtml +1 -1
- data/app/views/sugoi_admin/set_config.rhtml +4 -1
- data/app/views/sugoi_admin/show_config.rhtml +1 -1
- data/app/views/sugoi_admin/subscribe.rhtml +1 -1
- data/app/views/sugoi_admin/unsubscribe.rhtml +1 -1
- data/bin/maild +1 -1
- data/bin/sugoi-mail +1 -1
- data/config/environment.rb +2 -2
- data/config/routes.rb +4 -2
- data/db/migrate/028_add_sessions.rb +15 -0
- data/db/schema.rb +56 -48
- data/lib/login_system.rb +6 -6
- data/lib/tasks/release.rake +2 -2
- data/public/404.html +27 -5
- data/public/500.html +27 -5
- data/public/images/celltop1.jpg +0 -0
- data/public/images/title11.jpg +0 -0
- data/public/{index.html → index_default.html} +0 -0
- data/public/javascripts/dragdrop.js +1 -1
- data/public/javascripts/effects.js +1 -1
- data/public/javascripts/prototype.js +1 -1
- data/public/stylesheets/global.css +201 -0
- data/public/stylesheets/scaffold.css +176 -11
- data/public/stylesheets/trestle.css +176 -11
- data/script/cover +6 -0
- data/script/process/inspector +3 -0
- data/test/all.rb +2 -0
- data/test/fixtures/helps.yml +1 -1
- data/test/fixtures/mailinglist_classes.yml +4 -4
- data/test/fixtures/messages.yml +22 -2
- data/test/functional/base_user_controller_test.rb +18 -0
- data/test/functional/mail_admin_controller_test.rb +18 -0
- data/test/functional/mailservice_controller_test.rb +164 -19
- data/test/functional/navigation_controller_test.rb +18 -0
- data/test/functional/root_admin_controller_test.rb +18 -0
- data/test/functional/sugoi_admin_controller_test.rb +68 -10
- data/test/functionals.rb +2 -1
- data/test/integration/test_soap.rb +3 -1
- data/test/unit/address_test.rb +16 -1
- data/test/unit/domain_test.rb +5 -12
- data/test/unit/mailinglist_class_test.rb +2 -2
- data/test/unit/mailinglist_test.rb +138 -3
- data/test/unit/message_test.rb +256 -1
- data/test/unit/proxy_link_test.rb +37 -0
- data/test/unit/sys_config_test.rb +6 -0
- data/test/unit/user_test.rb +20 -0
- data/test/units.rb +2 -1
- metadata +94 -8
- data/app/views/layouts/address.rhtml +0 -13
- data/app/views/layouts/scaffold.rhtml +0 -13
@@ -9,6 +9,7 @@ class MailinglistTest < Test::Unit::TestCase
|
|
9
9
|
|
10
10
|
def setup
|
11
11
|
@ml=Mailinglist.find 1
|
12
|
+
@nonconfirm_ml = Mailinglist.find 5
|
12
13
|
@addr1=Address.find 1
|
13
14
|
@addr2=Address.find 2
|
14
15
|
end
|
@@ -21,12 +22,22 @@ class MailinglistTest < Test::Unit::TestCase
|
|
21
22
|
assert !@ml.confirmed_addresses.member?(addr)
|
22
23
|
end
|
23
24
|
|
25
|
+
def test_subscribing_already_subscribed
|
26
|
+
test_subscribing
|
27
|
+
assert @ml.subscribe("brandnewuser@foo.test")
|
28
|
+
assert addr=Address.find_by_address("brandnewuser@foo.test")
|
29
|
+
assert @ml.addresses.member?(addr)
|
30
|
+
assert @ml.pending_addresses.member?(addr)
|
31
|
+
assert !@ml.confirmed_addresses.member?(addr)
|
32
|
+
end
|
33
|
+
|
24
34
|
def test_confirming
|
25
35
|
assert_equal [@addr1],@ml.confirmed_addresses
|
26
36
|
assert_equal [@addr2],@ml.pending_addresses
|
27
37
|
confirmationcode=@loaded_fixtures["confirmationcodes"] \
|
28
38
|
["confirmationcode_testuser_address2"] \
|
29
39
|
["code"]
|
40
|
+
assert_equal false, @ml.confirm(@addr2, "hogehoge")
|
30
41
|
assert_nothing_raised do
|
31
42
|
@ml.confirm(@addr2,confirmationcode)
|
32
43
|
end
|
@@ -35,6 +46,80 @@ class MailinglistTest < Test::Unit::TestCase
|
|
35
46
|
assert_equal [], @ml.pending_addresses
|
36
47
|
end
|
37
48
|
|
49
|
+
def test_unsubscribing
|
50
|
+
test_confirming
|
51
|
+
assert_equal [@addr1, @addr2],
|
52
|
+
@ml.confirmed_addresses.sort_by { |a| a.id }
|
53
|
+
@ml.unsubscribe @addr2, false
|
54
|
+
assert_equal [@addr1],
|
55
|
+
@ml.confirmed_addresses
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_unsubscribing_by_text_why_did_i_do_that_anyway
|
59
|
+
test_confirming
|
60
|
+
assert_equal [@addr1, @addr2],
|
61
|
+
@ml.confirmed_addresses.sort_by { |a| a.id }
|
62
|
+
@ml.unsubscribe @addr2.address, false
|
63
|
+
assert_equal [@addr1],
|
64
|
+
@ml.confirmed_addresses
|
65
|
+
end
|
66
|
+
|
67
|
+
def test_unsubscribing_send_mail
|
68
|
+
test_confirming
|
69
|
+
assert_equal [@addr1, @addr2],
|
70
|
+
@ml.confirmed_addresses.sort_by { |a| a.id }
|
71
|
+
@ml.unsubscribe @addr2, true
|
72
|
+
assert_equal [@addr1],
|
73
|
+
@ml.confirmed_addresses
|
74
|
+
assert_equal @addr2.address, Net::SMTP.to
|
75
|
+
end
|
76
|
+
|
77
|
+
def test_subscribing_with_confirmation_code
|
78
|
+
assert_equal [@addr1],@ml.confirmed_addresses
|
79
|
+
assert_equal [@addr2],@ml.pending_addresses
|
80
|
+
assert_equal false, @ml.subscribe(@addr2.address, "hogehoge")
|
81
|
+
confirmationcode=@loaded_fixtures["confirmationcodes"] \
|
82
|
+
["confirmationcode_testuser_address2"] \
|
83
|
+
["code"]
|
84
|
+
assert_nothing_raised do
|
85
|
+
@ml.subscribe(@addr2.address,confirmationcode)
|
86
|
+
end
|
87
|
+
|
88
|
+
assert @ml.confirmed?(@addr2)
|
89
|
+
assert_equal [], @ml.pending_addresses
|
90
|
+
assert_equal [@addr1, @addr2],
|
91
|
+
@ml.confirmed_addresses.sort_by { |a| a.id }
|
92
|
+
end
|
93
|
+
|
94
|
+
def test_subscribing_with_confirmation_code_after_subscription_confirmed
|
95
|
+
test_subscribing_with_confirmation_code
|
96
|
+
assert_equal [@addr1, @addr2],@ml.confirmed_addresses.
|
97
|
+
sort_by { |a| a.id }
|
98
|
+
assert_equal [],@ml.pending_addresses
|
99
|
+
assert_equal true, @ml.subscribe(@addr2.address, "hogehoge"),
|
100
|
+
"if an address is already subscribed, further subscription " +
|
101
|
+
"attempts are cheerfully ignored"
|
102
|
+
confirmationcode=@loaded_fixtures["confirmationcodes"] \
|
103
|
+
["confirmationcode_testuser_address2"] \
|
104
|
+
["code"]
|
105
|
+
assert_nothing_raised do
|
106
|
+
@ml.subscribe(@addr2.address,confirmationcode)
|
107
|
+
end
|
108
|
+
|
109
|
+
assert @ml.confirmed?(@addr2)
|
110
|
+
assert_equal [], @ml.pending_addresses
|
111
|
+
assert_equal [@addr1, @addr2],
|
112
|
+
@ml.confirmed_addresses.sort_by { |a| a.id }
|
113
|
+
end
|
114
|
+
|
115
|
+
|
116
|
+
def test_subscribing_after_confirmation
|
117
|
+
test_confirming
|
118
|
+
assert @ml.subscribe(@addr1.address)
|
119
|
+
assert_equal [ @addr1, @addr2 ],
|
120
|
+
@ml.confirmed_addresses.sort_by { |a| a.id }
|
121
|
+
end
|
122
|
+
|
38
123
|
def test_confirming_by_addr_string
|
39
124
|
confirmationcode=@loaded_fixtures["confirmationcodes"] \
|
40
125
|
["confirmationcode_testuser_address2"] \
|
@@ -47,6 +132,21 @@ class MailinglistTest < Test::Unit::TestCase
|
|
47
132
|
assert_equal [], @ml.pending_addresses
|
48
133
|
end
|
49
134
|
|
135
|
+
def test_subscribing_non_confirmation
|
136
|
+
assert @nonconfirm_ml.subscribe("brandnewuser@foo.test")
|
137
|
+
assert addr=Address.find_by_address("brandnewuser@foo.test")
|
138
|
+
assert @nonconfirm_ml.addresses.member?(addr)
|
139
|
+
assert @nonconfirm_ml.confirmed_addresses.member?(addr)
|
140
|
+
end
|
141
|
+
|
142
|
+
def test_subscribing_non_confirmation_already_there
|
143
|
+
test_subscribing_non_confirmation
|
144
|
+
assert @nonconfirm_ml.subscribe("brandnewuser@foo.test")
|
145
|
+
assert addr=Address.find_by_address("brandnewuser@foo.test")
|
146
|
+
assert @nonconfirm_ml.addresses.member?(addr)
|
147
|
+
assert @nonconfirm_ml.confirmed_addresses.member?(addr)
|
148
|
+
end
|
149
|
+
|
50
150
|
def test_new_confirmation
|
51
151
|
@ml.subscribe 'brandnewuser@foo.test'
|
52
152
|
addr=Address.find_by_address("brandnewuser@foo.test")
|
@@ -69,6 +169,20 @@ class MailinglistTest < Test::Unit::TestCase
|
|
69
169
|
assert_equal 3, ml.sayonara_admin_message_id
|
70
170
|
end
|
71
171
|
|
172
|
+
def test_creating_description_too_long
|
173
|
+
ml=Mailinglist.new
|
174
|
+
ml.name='testing-new-mailing-list'
|
175
|
+
ml.user=User.find 1
|
176
|
+
ml.description="very long "*160
|
177
|
+
ml.mailinglist_class = MailinglistClass.find 2
|
178
|
+
assert_equal false, ml.save
|
179
|
+
assert_equal 1, ml.errors.length
|
180
|
+
ml.errors.each do |facil, text|
|
181
|
+
assert_equal "description", facil
|
182
|
+
assert_equal "Is too long (>160 chars)", text
|
183
|
+
end
|
184
|
+
end
|
185
|
+
|
72
186
|
def test_creating_nonexistent_user
|
73
187
|
ml=Mailinglist.new
|
74
188
|
ml.name="testing-new-mailing-list"
|
@@ -96,15 +210,24 @@ class MailinglistTest < Test::Unit::TestCase
|
|
96
210
|
assert_equal false, ml.canonical_address?
|
97
211
|
end
|
98
212
|
|
99
|
-
def
|
213
|
+
def test_has_address
|
100
214
|
ml=Mailinglist.find 1
|
101
215
|
assert ml.has_address?(@loaded_fixtures["addresses"]["address_1"]\
|
102
216
|
["address"])
|
103
217
|
end
|
104
218
|
|
105
|
-
def
|
219
|
+
def test_messages
|
220
|
+
ml=Mailinglist.find 1
|
221
|
+
assert_equal 5, ml.messages.count
|
222
|
+
end
|
223
|
+
|
224
|
+
def test_send_message
|
106
225
|
ml=Mailinglist.find 1
|
107
|
-
assert_equal
|
226
|
+
assert_equal 5, ml.messages.count
|
227
|
+
mess = ml.messages[0]
|
228
|
+
ml.send_message mess
|
229
|
+
assert_equal ml.name+"-bounces@"+ml.domain.name, Net::SMTP.from
|
230
|
+
# assert_equal ml.expand_addresses.map { |a| a.address }, Net::SMTP.to
|
108
231
|
end
|
109
232
|
|
110
233
|
def test_expanded_addresses
|
@@ -123,6 +246,13 @@ class MailinglistTest < Test::Unit::TestCase
|
|
123
246
|
assert_equal false, ml.has_address?("address3@foo.test")
|
124
247
|
end
|
125
248
|
|
249
|
+
def test_nonconfirmed_ml_always_confirmed_addrs
|
250
|
+
ml=Mailinglist.find 5
|
251
|
+
addr = Address.find_or_create_by_address("nonconfirmedaddress@foo.test")
|
252
|
+
ml.addresses << addr
|
253
|
+
assert_equal true, ml.confirmed?(addr)
|
254
|
+
end
|
255
|
+
|
126
256
|
def test_find_by_address
|
127
257
|
ml, cmd, realaddress = Mailinglist.find_by_address("testuser-42@test.domain")
|
128
258
|
assert_equal :proxy, cmd
|
@@ -143,4 +273,9 @@ class MailinglistTest < Test::Unit::TestCase
|
|
143
273
|
assert_equal :request, cmd
|
144
274
|
assert_equal 1, ml.id
|
145
275
|
end
|
276
|
+
|
277
|
+
def test_find_by_domain_id
|
278
|
+
assert_equal 8, Mailinglist.find_all_by_domain_id(1).length
|
279
|
+
assert_equal 0, Mailinglist.find_all_by_domain_id(2).length
|
280
|
+
end
|
146
281
|
end
|
data/test/unit/message_test.rb
CHANGED
@@ -43,12 +43,13 @@ class MessageTest < Test::Unit::TestCase
|
|
43
43
|
assert_equal 3, siblings[0].id
|
44
44
|
end
|
45
45
|
|
46
|
-
def
|
46
|
+
def test_new_message_with_date_header
|
47
47
|
new_message_headers = <<EOT
|
48
48
|
From: brandnewaddress@foo.test (Brand New Address)
|
49
49
|
Delivered-To: testuser@test.domain
|
50
50
|
Message-Id: <280826ee-bdad-4564-9dc4-5218b8143b54@localhost>
|
51
51
|
To: testuser@test.domain
|
52
|
+
Date: Sun, 4 Feb 2007 11:07:27 +0900 (JST)
|
52
53
|
Subject: Test message
|
53
54
|
EOT
|
54
55
|
|
@@ -61,10 +62,12 @@ EOT
|
|
61
62
|
"brandnewaddress@foo.test")
|
62
63
|
|
63
64
|
assert m
|
65
|
+
dt=DateTime.parse "Sun, 4 Feb 2007 11:07:27 +0900 (JST)"
|
64
66
|
assert_equal "brandnewaddress@foo.test", m.envelope_from
|
65
67
|
assert_equal ["testuser@test.domain"], m.envelope_to
|
66
68
|
assert m.messageid
|
67
69
|
assert m.timestamp
|
70
|
+
assert_equal dt, m.timestamp
|
68
71
|
assert m.headers
|
69
72
|
assert m.body
|
70
73
|
assert_equal nil, m.parent
|
@@ -133,6 +136,178 @@ EOT
|
|
133
136
|
assert_not_equal [], headers_sorted.grep(/^Reply-To:/)
|
134
137
|
end
|
135
138
|
|
139
|
+
def test_add_message_id
|
140
|
+
new_message_headers = <<EOT
|
141
|
+
From: brandnewaddress@foo.test (Brand New Address)
|
142
|
+
Delivered-To: testuser@test.domain
|
143
|
+
To: testuser@test.domain
|
144
|
+
Subject: Test message
|
145
|
+
EOT
|
146
|
+
|
147
|
+
new_message_body = <<EOT
|
148
|
+
This is a test message.
|
149
|
+
EOT
|
150
|
+
|
151
|
+
m=Message.parse(new_message_headers+"\n"+new_message_body,
|
152
|
+
"testuser@test.domain",
|
153
|
+
"brandnewaddress@foo.test")
|
154
|
+
|
155
|
+
assert m
|
156
|
+
assert_equal "brandnewaddress@foo.test", m.envelope_from
|
157
|
+
assert_equal ["testuser@test.domain"], m.envelope_to
|
158
|
+
assert m.messageid
|
159
|
+
assert_match(/\<[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}\@[a-z.0-9-]+\>$/, m.messageid)
|
160
|
+
assert m.timestamp
|
161
|
+
assert m.headers
|
162
|
+
assert m.body
|
163
|
+
assert_equal nil, m.parent
|
164
|
+
assert_equal new_message_headers.split("\n").sort, m.headers.split("\n").sort - m.headers.split("\n").grep(/^Message-Id/)
|
165
|
+
assert_equal "\n"+new_message_body, m.body
|
166
|
+
assert Address.find_by_address("brandnewaddress@foo.test")
|
167
|
+
assert m.deliver
|
168
|
+
assert_equal "testuser-bounces@test.domain",Net::SMTP.from
|
169
|
+
assert_equal ["address1@foo.test"], Net::SMTP.to
|
170
|
+
end
|
171
|
+
|
172
|
+
def test_new_message
|
173
|
+
new_message_headers = <<EOT
|
174
|
+
From: brandnewaddress@foo.test (Brand New Address)
|
175
|
+
Delivered-To: testuser@test.domain
|
176
|
+
Message-Id: <280826ee-bdad-4564-9dc4-5218b8143b54@localhost>
|
177
|
+
To: testuser@test.domain
|
178
|
+
Subject: Test message
|
179
|
+
EOT
|
180
|
+
|
181
|
+
new_message_body = <<EOT
|
182
|
+
This is a test message.
|
183
|
+
EOT
|
184
|
+
|
185
|
+
m=Message.parse(new_message_headers+"\n"+new_message_body,
|
186
|
+
"testuser@test.domain",
|
187
|
+
"brandnewaddress@foo.test")
|
188
|
+
|
189
|
+
assert m
|
190
|
+
assert_equal "brandnewaddress@foo.test", m.envelope_from
|
191
|
+
assert_equal ["testuser@test.domain"], m.envelope_to
|
192
|
+
assert m.messageid
|
193
|
+
assert m.timestamp
|
194
|
+
assert m.headers
|
195
|
+
assert m.body
|
196
|
+
assert_equal nil, m.parent
|
197
|
+
assert_equal new_message_headers.split("\n").sort, m.headers.split("\n").sort
|
198
|
+
assert_equal "\n"+new_message_body, m.body
|
199
|
+
assert Address.find_by_address("brandnewaddress@foo.test")
|
200
|
+
assert m.deliver
|
201
|
+
assert_equal "testuser-bounces@test.domain",Net::SMTP.from
|
202
|
+
assert_equal ["address1@foo.test"], Net::SMTP.to
|
203
|
+
end
|
204
|
+
|
205
|
+
|
206
|
+
def test_new_message_delivered_with_different_smtp_details
|
207
|
+
new_message_headers = <<EOT
|
208
|
+
From: brandnewaddress@foo.test (Brand New Address)
|
209
|
+
Delivered-To: testuser@test.domain
|
210
|
+
Message-Id: <280826ee-bdad-4564-9dc4-5218b8143b54@localhost>
|
211
|
+
To: testuser@test.domain
|
212
|
+
Subject: Test message
|
213
|
+
EOT
|
214
|
+
|
215
|
+
new_message_body = <<EOT
|
216
|
+
This is a test message.
|
217
|
+
EOT
|
218
|
+
|
219
|
+
m=Message.parse(new_message_headers+"\n"+new_message_body,
|
220
|
+
"testuser@test.domain",
|
221
|
+
"brandnewaddress@foo.test")
|
222
|
+
|
223
|
+
assert m
|
224
|
+
assert_equal "brandnewaddress@foo.test", m.envelope_from
|
225
|
+
assert_equal ["testuser@test.domain"], m.envelope_to
|
226
|
+
assert m.messageid
|
227
|
+
assert m.timestamp
|
228
|
+
assert m.headers
|
229
|
+
assert m.body
|
230
|
+
assert_equal nil, m.parent
|
231
|
+
assert_equal new_message_headers.split("\n").sort, m.headers.split("\n").sort
|
232
|
+
assert_equal "\n"+new_message_body, m.body
|
233
|
+
assert Address.find_by_address("brandnewaddress@foo.test")
|
234
|
+
assert m.deliver(:smtpserver => "fred",
|
235
|
+
:smtpport => 10048)
|
236
|
+
assert_equal "testuser-bounces@test.domain",Net::SMTP.from
|
237
|
+
assert_equal ["address1@foo.test"], Net::SMTP.to
|
238
|
+
end
|
239
|
+
|
240
|
+
|
241
|
+
def test_new_message_multiple_recipients
|
242
|
+
new_message_headers = <<EOT
|
243
|
+
From: brandnewaddress@foo.test (Brand New Address)
|
244
|
+
Delivered-To: testuser@test.domain
|
245
|
+
Message-Id: <280826ee-bdad-4564-9dc4-5218b8143b54@localhost>
|
246
|
+
To: testuser@test.domain
|
247
|
+
Subject: Test message
|
248
|
+
EOT
|
249
|
+
|
250
|
+
new_message_body = <<EOT
|
251
|
+
This is a test message.
|
252
|
+
EOT
|
253
|
+
|
254
|
+
m=Message.parse(new_message_headers+"\n"+new_message_body,
|
255
|
+
[ "testuser@test.domain", "testuser2@test.domain" ],
|
256
|
+
"brandnewaddress@foo.test")
|
257
|
+
|
258
|
+
assert m
|
259
|
+
assert_equal "brandnewaddress@foo.test", m.envelope_from
|
260
|
+
assert_equal ["testuser@test.domain", "testuser2@test.domain" ],
|
261
|
+
m.envelope_to
|
262
|
+
assert m.messageid
|
263
|
+
assert_equal "<280826ee-bdad-4564-9dc4-5218b8143b54@localhost>",
|
264
|
+
m.messageid
|
265
|
+
assert m.timestamp
|
266
|
+
assert m.headers
|
267
|
+
assert m.body
|
268
|
+
assert_equal nil, m.parent
|
269
|
+
assert_equal new_message_headers.split("\n").sort, m.headers.split("\n").sort
|
270
|
+
assert_equal "\n"+new_message_body, m.body
|
271
|
+
assert Address.find_by_address("brandnewaddress@foo.test")
|
272
|
+
assert m.deliver
|
273
|
+
assert_equal "testuser-bounces@test.domain",Net::SMTP.from
|
274
|
+
assert_equal ["address1@foo.test"], Net::SMTP.to
|
275
|
+
end
|
276
|
+
|
277
|
+
def test_new_message_guess_the_recipients
|
278
|
+
new_message_headers = <<EOT
|
279
|
+
From: brandnewaddress@foo.test (Brand New Address)
|
280
|
+
Delivered-To: testuser@test.domain
|
281
|
+
Message-Id: <280826ee-bdad-4564-9dc4-5218b8143b55@localhost>
|
282
|
+
To: testuser@test.domain
|
283
|
+
Subject: Test message
|
284
|
+
EOT
|
285
|
+
|
286
|
+
new_message_body = <<EOT
|
287
|
+
This is a test message.
|
288
|
+
EOT
|
289
|
+
|
290
|
+
m=Message.parse(new_message_headers+"\n"+new_message_body)
|
291
|
+
|
292
|
+
assert m
|
293
|
+
assert_equal "brandnewaddress@foo.test", m.envelope_from
|
294
|
+
assert_equal ["testuser@test.domain" ],
|
295
|
+
m.envelope_to
|
296
|
+
assert m.messageid
|
297
|
+
assert_equal "<280826ee-bdad-4564-9dc4-5218b8143b55@localhost>",
|
298
|
+
m.messageid
|
299
|
+
assert m.timestamp
|
300
|
+
assert m.headers
|
301
|
+
assert m.body
|
302
|
+
assert_equal nil, m.parent
|
303
|
+
assert_equal new_message_headers.split("\n").sort, m.headers.split("\n").sort
|
304
|
+
assert_equal "\n"+new_message_body, m.body
|
305
|
+
assert Address.find_by_address("brandnewaddress@foo.test")
|
306
|
+
assert m.deliver
|
307
|
+
assert_equal "testuser-bounces@test.domain",Net::SMTP.from
|
308
|
+
assert_equal ["address1@foo.test"], Net::SMTP.to
|
309
|
+
end
|
310
|
+
|
136
311
|
def test_plain_rewrite
|
137
312
|
m=Message.find 7
|
138
313
|
|
@@ -148,4 +323,84 @@ EOT
|
|
148
323
|
"Date: Thu, 11 Nov 2006 19:13:00 +0900 (JST)" ] .
|
149
324
|
sort . join("\n"), headers_sorted
|
150
325
|
end
|
326
|
+
|
327
|
+
def test_customtext
|
328
|
+
m=Message.find 8
|
329
|
+
|
330
|
+
assert_equal "testing", m.messagetext(:custom_message => "testing")
|
331
|
+
|
332
|
+
m=Message.find 7
|
333
|
+
|
334
|
+
assert_equal "testing", m.messagetext(:custom_message => "testing")
|
335
|
+
end
|
336
|
+
|
337
|
+
def test_new_message_with_in_reply_to
|
338
|
+
new_message_headers = <<EOT
|
339
|
+
From: brandnewaddress@foo.test (Brand New Address)
|
340
|
+
Delivered-To: testuser@test.domain
|
341
|
+
Message-Id: <280826ee-bdad-4564-9dc4-5218b8143b55@localhost>
|
342
|
+
To: testuser@test.domain
|
343
|
+
In-Reply-To: <testmessage-7@foo.test>
|
344
|
+
Subject: Test message
|
345
|
+
EOT
|
346
|
+
|
347
|
+
new_message_body = <<EOT
|
348
|
+
This is a test message.
|
349
|
+
EOT
|
350
|
+
|
351
|
+
m=Message.parse(new_message_headers+"\n"+new_message_body)
|
352
|
+
|
353
|
+
assert m
|
354
|
+
assert_equal "brandnewaddress@foo.test", m.envelope_from
|
355
|
+
assert_equal ["testuser@test.domain" ],
|
356
|
+
m.envelope_to
|
357
|
+
assert m.messageid
|
358
|
+
assert_equal "<280826ee-bdad-4564-9dc4-5218b8143b55@localhost>",
|
359
|
+
m.messageid
|
360
|
+
assert m.timestamp
|
361
|
+
assert m.headers
|
362
|
+
assert m.body
|
363
|
+
assert_equal 7, m.parent_id
|
364
|
+
assert_equal new_message_headers.split("\n").sort, m.headers.split("\n").sort
|
365
|
+
assert_equal "\n"+new_message_body, m.body
|
366
|
+
assert Address.find_by_address("brandnewaddress@foo.test")
|
367
|
+
assert m.deliver
|
368
|
+
assert_equal "testuser-bounces@test.domain",Net::SMTP.from
|
369
|
+
assert_equal ["address1@foo.test"], Net::SMTP.to
|
370
|
+
end
|
371
|
+
|
372
|
+
def test_new_message_with_references
|
373
|
+
new_message_headers = <<EOT
|
374
|
+
From: brandnewaddress@foo.test (Brand New Address)
|
375
|
+
Delivered-To: testuser@test.domain
|
376
|
+
Message-Id: <280826ee-bdad-4564-9dc4-5218b8143b55@localhost>
|
377
|
+
To: testuser@test.domain
|
378
|
+
References: <testmessage-7@foo.test>
|
379
|
+
Subject: Test message
|
380
|
+
EOT
|
381
|
+
|
382
|
+
new_message_body = <<EOT
|
383
|
+
This is a test message.
|
384
|
+
EOT
|
385
|
+
|
386
|
+
m=Message.parse(new_message_headers+"\n"+new_message_body)
|
387
|
+
|
388
|
+
assert m
|
389
|
+
assert_equal "brandnewaddress@foo.test", m.envelope_from
|
390
|
+
assert_equal ["testuser@test.domain" ],
|
391
|
+
m.envelope_to
|
392
|
+
assert m.messageid
|
393
|
+
assert_equal "<280826ee-bdad-4564-9dc4-5218b8143b55@localhost>",
|
394
|
+
m.messageid
|
395
|
+
assert m.timestamp
|
396
|
+
assert m.headers
|
397
|
+
assert m.body
|
398
|
+
assert_equal 7, m.parent_id
|
399
|
+
assert_equal new_message_headers.split("\n").sort, m.headers.split("\n").sort
|
400
|
+
assert_equal "\n"+new_message_body, m.body
|
401
|
+
assert Address.find_by_address("brandnewaddress@foo.test")
|
402
|
+
assert m.deliver
|
403
|
+
assert_equal "testuser-bounces@test.domain",Net::SMTP.from
|
404
|
+
assert_equal ["address1@foo.test"], Net::SMTP.to
|
405
|
+
end
|
151
406
|
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper'
|
2
|
+
|
3
|
+
class ProxyLinkTest < Test::Unit::TestCase
|
4
|
+
fixtures :addresses, :domains, :proxy_links, :mailinglists
|
5
|
+
|
6
|
+
def test_verify_fixtures
|
7
|
+
assert_equal @loaded_fixtures["proxy_links"].length,
|
8
|
+
ProxyLink.count
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_proxy_address
|
12
|
+
pl=ProxyLink.find(:first)
|
13
|
+
assert_equal "testuser-42@test.domain", pl.proxy_address
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_real_address_valid
|
17
|
+
assert_equal "addressmessage1@foo.test",
|
18
|
+
ProxyLink.real_address("testuser-42@test.domain")
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_real_address_random_address
|
22
|
+
assert_nil ProxyLink.real_address("test@test.test")
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_real_address_random_address_with_proxy_looking_syntax
|
26
|
+
assert_nil ProxyLink.real_address("test-42@test.test")
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_real_address_random_address_with_real_domain
|
30
|
+
assert_nil ProxyLink.real_address("randomtest-42@test.domain")
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_real_address_real_mailinglist_list_bad_proxy_id
|
34
|
+
assert_nil ProxyLink.real_address("testuser-64738@test.domain")
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
@@ -38,4 +38,10 @@ class SysConfigTest < Test::Unit::TestCase
|
|
38
38
|
assert_equal @testconfig["smtpserver"]["value"], param.value
|
39
39
|
end
|
40
40
|
end
|
41
|
+
|
42
|
+
def test_how_did_you_manage_that
|
43
|
+
assert_raises ArgumentError do
|
44
|
+
SysConfig.__send__ "smtpserver=", "honk", "honk"
|
45
|
+
end
|
46
|
+
end
|
41
47
|
end
|
data/test/unit/user_test.rb
CHANGED
@@ -112,6 +112,26 @@ class UserTest < Test::Unit::TestCase
|
|
112
112
|
assert u.mailinglist_id
|
113
113
|
end
|
114
114
|
|
115
|
+
def test_create_description
|
116
|
+
u = User.new
|
117
|
+
u.login = "brandnewbob"
|
118
|
+
u.description = "Brand New Bob"
|
119
|
+
u.domain_id = 1
|
120
|
+
u.password = u.password_confirmation = "bobs_secure_password"
|
121
|
+
|
122
|
+
assert_equal "Brand New Bob", u.description
|
123
|
+
u.save
|
124
|
+
assert_equal "Brand New Bob", u.description,
|
125
|
+
"different code path in #description"
|
126
|
+
|
127
|
+
u.description = "Altered Bob"
|
128
|
+
u.password = u.password_confirmation = "bobs_secure_password"
|
129
|
+
assert u.save # hmm
|
130
|
+
assert_equal "Altered Bob", u.description,
|
131
|
+
"different code path in #description="
|
132
|
+
|
133
|
+
end
|
134
|
+
|
115
135
|
def test_sha1
|
116
136
|
u = User.new
|
117
137
|
u.login = "nonexistingbob"
|
data/test/units.rb
CHANGED