##// END OF EJS Templates
remove trailing white-spaces from ....
Toshi MARUYAMA -
r6806:1b4ae22b0255
parent child
Show More
@@ -1,445 +1,445
1 # Redmine - project management software
1 # Redmine - project management software
2 # Copyright (C) 2006-2011 Jean-Philippe Lang
2 # Copyright (C) 2006-2011 Jean-Philippe Lang
3 #
3 #
4 # This program is free software; you can redistribute it and/or
4 # This program is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License
5 # modify it under the terms of the GNU General Public License
6 # as published by the Free Software Foundation; either version 2
6 # as published by the Free Software Foundation; either version 2
7 # of the License, or (at your option) any later version.
7 # of the License, or (at your option) any later version.
8 #
8 #
9 # This program is distributed in the hope that it will be useful,
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
12 # GNU General Public License for more details.
13 #
13 #
14 # You should have received a copy of the GNU General Public License
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
17
18 require File.expand_path('../../test_helper', __FILE__)
18 require File.expand_path('../../test_helper', __FILE__)
19
19
20 class MailerTest < ActiveSupport::TestCase
20 class MailerTest < ActiveSupport::TestCase
21 include Redmine::I18n
21 include Redmine::I18n
22 include ActionController::Assertions::SelectorAssertions
22 include ActionController::Assertions::SelectorAssertions
23 fixtures :all
23 fixtures :all
24
24
25 def setup
25 def setup
26 ActionMailer::Base.deliveries.clear
26 ActionMailer::Base.deliveries.clear
27 Setting.host_name = 'mydomain.foo'
27 Setting.host_name = 'mydomain.foo'
28 Setting.protocol = 'http'
28 Setting.protocol = 'http'
29 Setting.plain_text_mail = '0'
29 Setting.plain_text_mail = '0'
30 end
30 end
31
31
32 def test_generated_links_in_emails
32 def test_generated_links_in_emails
33 Setting.host_name = 'mydomain.foo'
33 Setting.host_name = 'mydomain.foo'
34 Setting.protocol = 'https'
34 Setting.protocol = 'https'
35
35
36 journal = Journal.find(2)
36 journal = Journal.find(2)
37 assert Mailer.deliver_issue_edit(journal)
37 assert Mailer.deliver_issue_edit(journal)
38
38
39 mail = ActionMailer::Base.deliveries.last
39 mail = ActionMailer::Base.deliveries.last
40 assert_kind_of TMail::Mail, mail
40 assert_kind_of TMail::Mail, mail
41
41
42 assert_select_email do
42 assert_select_email do
43 # link to the main ticket
43 # link to the main ticket
44 assert_select "a[href=?]", "https://mydomain.foo/issues/1", :text => "Bug #1: Can't print recipes"
44 assert_select "a[href=?]", "https://mydomain.foo/issues/1", :text => "Bug #1: Can't print recipes"
45 # link to a referenced ticket
45 # link to a referenced ticket
46 assert_select "a[href=?][title=?]", "https://mydomain.foo/issues/2", "Add ingredients categories (Assigned)", :text => "#2"
46 assert_select "a[href=?][title=?]", "https://mydomain.foo/issues/2", "Add ingredients categories (Assigned)", :text => "#2"
47 # link to a changeset
47 # link to a changeset
48 assert_select "a[href=?][title=?]", "https://mydomain.foo/projects/ecookbook/repository/revisions/2", "This commit fixes #1, #2 and references #1 &amp; #3", :text => "r2"
48 assert_select "a[href=?][title=?]", "https://mydomain.foo/projects/ecookbook/repository/revisions/2", "This commit fixes #1, #2 and references #1 &amp; #3", :text => "r2"
49 end
49 end
50 end
50 end
51
51
52 def test_generated_links_with_prefix
52 def test_generated_links_with_prefix
53 relative_url_root = Redmine::Utils.relative_url_root
53 relative_url_root = Redmine::Utils.relative_url_root
54 Setting.host_name = 'mydomain.foo/rdm'
54 Setting.host_name = 'mydomain.foo/rdm'
55 Setting.protocol = 'http'
55 Setting.protocol = 'http'
56 Redmine::Utils.relative_url_root = '/rdm'
56 Redmine::Utils.relative_url_root = '/rdm'
57
57
58 journal = Journal.find(2)
58 journal = Journal.find(2)
59 assert Mailer.deliver_issue_edit(journal)
59 assert Mailer.deliver_issue_edit(journal)
60
60
61 mail = ActionMailer::Base.deliveries.last
61 mail = ActionMailer::Base.deliveries.last
62 assert_kind_of TMail::Mail, mail
62 assert_kind_of TMail::Mail, mail
63
63
64 assert_select_email do
64 assert_select_email do
65 # link to the main ticket
65 # link to the main ticket
66 assert_select "a[href=?]", "http://mydomain.foo/rdm/issues/1", :text => "Bug #1: Can't print recipes"
66 assert_select "a[href=?]", "http://mydomain.foo/rdm/issues/1", :text => "Bug #1: Can't print recipes"
67 # link to a referenced ticket
67 # link to a referenced ticket
68 assert_select "a[href=?][title=?]", "http://mydomain.foo/rdm/issues/2", "Add ingredients categories (Assigned)", :text => "#2"
68 assert_select "a[href=?][title=?]", "http://mydomain.foo/rdm/issues/2", "Add ingredients categories (Assigned)", :text => "#2"
69 # link to a changeset
69 # link to a changeset
70 assert_select "a[href=?][title=?]", "http://mydomain.foo/rdm/projects/ecookbook/repository/revisions/2", "This commit fixes #1, #2 and references #1 &amp; #3", :text => "r2"
70 assert_select "a[href=?][title=?]", "http://mydomain.foo/rdm/projects/ecookbook/repository/revisions/2", "This commit fixes #1, #2 and references #1 &amp; #3", :text => "r2"
71 end
71 end
72 ensure
72 ensure
73 # restore it
73 # restore it
74 Redmine::Utils.relative_url_root = relative_url_root
74 Redmine::Utils.relative_url_root = relative_url_root
75 end
75 end
76
76
77 def test_generated_links_with_prefix_and_no_relative_url_root
77 def test_generated_links_with_prefix_and_no_relative_url_root
78 relative_url_root = Redmine::Utils.relative_url_root
78 relative_url_root = Redmine::Utils.relative_url_root
79 Setting.host_name = 'mydomain.foo/rdm'
79 Setting.host_name = 'mydomain.foo/rdm'
80 Setting.protocol = 'http'
80 Setting.protocol = 'http'
81 Redmine::Utils.relative_url_root = nil
81 Redmine::Utils.relative_url_root = nil
82
82
83 journal = Journal.find(2)
83 journal = Journal.find(2)
84 assert Mailer.deliver_issue_edit(journal)
84 assert Mailer.deliver_issue_edit(journal)
85
85
86 mail = ActionMailer::Base.deliveries.last
86 mail = ActionMailer::Base.deliveries.last
87 assert_kind_of TMail::Mail, mail
87 assert_kind_of TMail::Mail, mail
88
88
89 assert_select_email do
89 assert_select_email do
90 # link to the main ticket
90 # link to the main ticket
91 assert_select "a[href=?]", "http://mydomain.foo/rdm/issues/1", :text => "Bug #1: Can't print recipes"
91 assert_select "a[href=?]", "http://mydomain.foo/rdm/issues/1", :text => "Bug #1: Can't print recipes"
92 # link to a referenced ticket
92 # link to a referenced ticket
93 assert_select "a[href=?][title=?]", "http://mydomain.foo/rdm/issues/2", "Add ingredients categories (Assigned)", :text => "#2"
93 assert_select "a[href=?][title=?]", "http://mydomain.foo/rdm/issues/2", "Add ingredients categories (Assigned)", :text => "#2"
94 # link to a changeset
94 # link to a changeset
95 assert_select "a[href=?][title=?]", "http://mydomain.foo/rdm/projects/ecookbook/repository/revisions/2", "This commit fixes #1, #2 and references #1 &amp; #3", :text => "r2"
95 assert_select "a[href=?][title=?]", "http://mydomain.foo/rdm/projects/ecookbook/repository/revisions/2", "This commit fixes #1, #2 and references #1 &amp; #3", :text => "r2"
96 end
96 end
97 ensure
97 ensure
98 # restore it
98 # restore it
99 Redmine::Utils.relative_url_root = relative_url_root
99 Redmine::Utils.relative_url_root = relative_url_root
100 end
100 end
101
101
102 def test_email_headers
102 def test_email_headers
103 issue = Issue.find(1)
103 issue = Issue.find(1)
104 Mailer.deliver_issue_add(issue)
104 Mailer.deliver_issue_add(issue)
105 mail = ActionMailer::Base.deliveries.last
105 mail = ActionMailer::Base.deliveries.last
106 assert_not_nil mail
106 assert_not_nil mail
107 assert_equal 'bulk', mail.header_string('Precedence')
107 assert_equal 'bulk', mail.header_string('Precedence')
108 assert_equal 'auto-generated', mail.header_string('Auto-Submitted')
108 assert_equal 'auto-generated', mail.header_string('Auto-Submitted')
109 end
109 end
110
110
111 def test_plain_text_mail
111 def test_plain_text_mail
112 Setting.plain_text_mail = 1
112 Setting.plain_text_mail = 1
113 journal = Journal.find(2)
113 journal = Journal.find(2)
114 Mailer.deliver_issue_edit(journal)
114 Mailer.deliver_issue_edit(journal)
115 mail = ActionMailer::Base.deliveries.last
115 mail = ActionMailer::Base.deliveries.last
116 assert_equal "text/plain", mail.content_type
116 assert_equal "text/plain", mail.content_type
117 assert_equal 0, mail.parts.size
117 assert_equal 0, mail.parts.size
118 assert !mail.encoded.include?('href')
118 assert !mail.encoded.include?('href')
119 end
119 end
120
120
121 def test_html_mail
121 def test_html_mail
122 Setting.plain_text_mail = 0
122 Setting.plain_text_mail = 0
123 journal = Journal.find(2)
123 journal = Journal.find(2)
124 Mailer.deliver_issue_edit(journal)
124 Mailer.deliver_issue_edit(journal)
125 mail = ActionMailer::Base.deliveries.last
125 mail = ActionMailer::Base.deliveries.last
126 assert_equal 2, mail.parts.size
126 assert_equal 2, mail.parts.size
127 assert mail.encoded.include?('href')
127 assert mail.encoded.include?('href')
128 end
128 end
129
129
130 def test_mail_from_with_phrase
130 def test_mail_from_with_phrase
131 with_settings :mail_from => 'Redmine app <redmine@example.net>' do
131 with_settings :mail_from => 'Redmine app <redmine@example.net>' do
132 Mailer.deliver_test(User.find(1))
132 Mailer.deliver_test(User.find(1))
133 end
133 end
134 mail = ActionMailer::Base.deliveries.last
134 mail = ActionMailer::Base.deliveries.last
135 assert_not_nil mail
135 assert_not_nil mail
136 assert_equal 'Redmine app', mail.from_addrs.first.name
136 assert_equal 'Redmine app', mail.from_addrs.first.name
137 end
137 end
138
138
139 def test_should_not_send_email_without_recipient
139 def test_should_not_send_email_without_recipient
140 news = News.find(:first)
140 news = News.find(:first)
141 user = news.author
141 user = news.author
142 # Remove members except news author
142 # Remove members except news author
143 news.project.memberships.each {|m| m.destroy unless m.user == user}
143 news.project.memberships.each {|m| m.destroy unless m.user == user}
144
144
145 user.pref[:no_self_notified] = false
145 user.pref[:no_self_notified] = false
146 user.pref.save
146 user.pref.save
147 User.current = user
147 User.current = user
148 Mailer.deliver_news_added(news.reload)
148 Mailer.deliver_news_added(news.reload)
149 assert_equal 1, last_email.bcc.size
149 assert_equal 1, last_email.bcc.size
150
150
151 # nobody to notify
151 # nobody to notify
152 user.pref[:no_self_notified] = true
152 user.pref[:no_self_notified] = true
153 user.pref.save
153 user.pref.save
154 User.current = user
154 User.current = user
155 ActionMailer::Base.deliveries.clear
155 ActionMailer::Base.deliveries.clear
156 Mailer.deliver_news_added(news.reload)
156 Mailer.deliver_news_added(news.reload)
157 assert ActionMailer::Base.deliveries.empty?
157 assert ActionMailer::Base.deliveries.empty?
158 end
158 end
159
159
160 def test_issue_add_message_id
160 def test_issue_add_message_id
161 issue = Issue.find(1)
161 issue = Issue.find(1)
162 Mailer.deliver_issue_add(issue)
162 Mailer.deliver_issue_add(issue)
163 mail = ActionMailer::Base.deliveries.last
163 mail = ActionMailer::Base.deliveries.last
164 assert_not_nil mail
164 assert_not_nil mail
165 assert_equal Mailer.message_id_for(issue), mail.message_id
165 assert_equal Mailer.message_id_for(issue), mail.message_id
166 assert_nil mail.references
166 assert_nil mail.references
167 end
167 end
168
168
169 def test_issue_edit_message_id
169 def test_issue_edit_message_id
170 journal = Journal.find(1)
170 journal = Journal.find(1)
171 Mailer.deliver_issue_edit(journal)
171 Mailer.deliver_issue_edit(journal)
172 mail = ActionMailer::Base.deliveries.last
172 mail = ActionMailer::Base.deliveries.last
173 assert_not_nil mail
173 assert_not_nil mail
174 assert_equal Mailer.message_id_for(journal), mail.message_id
174 assert_equal Mailer.message_id_for(journal), mail.message_id
175 assert_equal Mailer.message_id_for(journal.issue), mail.references.first.to_s
175 assert_equal Mailer.message_id_for(journal.issue), mail.references.first.to_s
176 end
176 end
177
177
178 def test_message_posted_message_id
178 def test_message_posted_message_id
179 message = Message.find(1)
179 message = Message.find(1)
180 Mailer.deliver_message_posted(message)
180 Mailer.deliver_message_posted(message)
181 mail = ActionMailer::Base.deliveries.last
181 mail = ActionMailer::Base.deliveries.last
182 assert_not_nil mail
182 assert_not_nil mail
183 assert_equal Mailer.message_id_for(message), mail.message_id
183 assert_equal Mailer.message_id_for(message), mail.message_id
184 assert_nil mail.references
184 assert_nil mail.references
185 assert_select_email do
185 assert_select_email do
186 # link to the message
186 # link to the message
187 assert_select "a[href=?]", "http://mydomain.foo/boards/#{message.board.id}/topics/#{message.id}", :text => message.subject
187 assert_select "a[href=?]", "http://mydomain.foo/boards/#{message.board.id}/topics/#{message.id}", :text => message.subject
188 end
188 end
189 end
189 end
190
190
191 def test_reply_posted_message_id
191 def test_reply_posted_message_id
192 message = Message.find(3)
192 message = Message.find(3)
193 Mailer.deliver_message_posted(message)
193 Mailer.deliver_message_posted(message)
194 mail = ActionMailer::Base.deliveries.last
194 mail = ActionMailer::Base.deliveries.last
195 assert_not_nil mail
195 assert_not_nil mail
196 assert_equal Mailer.message_id_for(message), mail.message_id
196 assert_equal Mailer.message_id_for(message), mail.message_id
197 assert_equal Mailer.message_id_for(message.parent), mail.references.first.to_s
197 assert_equal Mailer.message_id_for(message.parent), mail.references.first.to_s
198 assert_select_email do
198 assert_select_email do
199 # link to the reply
199 # link to the reply
200 assert_select "a[href=?]", "http://mydomain.foo/boards/#{message.board.id}/topics/#{message.root.id}?r=#{message.id}#message-#{message.id}", :text => message.subject
200 assert_select "a[href=?]", "http://mydomain.foo/boards/#{message.board.id}/topics/#{message.root.id}?r=#{message.id}#message-#{message.id}", :text => message.subject
201 end
201 end
202 end
202 end
203
203
204 context("#issue_add") do
204 context("#issue_add") do
205 setup do
205 setup do
206 ActionMailer::Base.deliveries.clear
206 ActionMailer::Base.deliveries.clear
207 Setting.bcc_recipients = '1'
207 Setting.bcc_recipients = '1'
208 @issue = Issue.find(1)
208 @issue = Issue.find(1)
209 end
209 end
210
210
211 should "notify project members" do
211 should "notify project members" do
212 assert Mailer.deliver_issue_add(@issue)
212 assert Mailer.deliver_issue_add(@issue)
213 assert last_email.bcc.include?('dlopper@somenet.foo')
213 assert last_email.bcc.include?('dlopper@somenet.foo')
214 end
214 end
215
215
216 should "not notify project members that are not allow to view the issue" do
216 should "not notify project members that are not allow to view the issue" do
217 Role.find(2).remove_permission!(:view_issues)
217 Role.find(2).remove_permission!(:view_issues)
218 assert Mailer.deliver_issue_add(@issue)
218 assert Mailer.deliver_issue_add(@issue)
219 assert !last_email.bcc.include?('dlopper@somenet.foo')
219 assert !last_email.bcc.include?('dlopper@somenet.foo')
220 end
220 end
221
221
222 should "notify issue watchers" do
222 should "notify issue watchers" do
223 user = User.find(9)
223 user = User.find(9)
224 # minimal email notification options
224 # minimal email notification options
225 user.pref[:no_self_notified] = '1'
225 user.pref[:no_self_notified] = '1'
226 user.pref.save
226 user.pref.save
227 user.mail_notification = false
227 user.mail_notification = false
228 user.save
228 user.save
229
229
230 Watcher.create!(:watchable => @issue, :user => user)
230 Watcher.create!(:watchable => @issue, :user => user)
231 assert Mailer.deliver_issue_add(@issue)
231 assert Mailer.deliver_issue_add(@issue)
232 assert last_email.bcc.include?(user.mail)
232 assert last_email.bcc.include?(user.mail)
233 end
233 end
234
234
235 should "not notify watchers not allowed to view the issue" do
235 should "not notify watchers not allowed to view the issue" do
236 user = User.find(9)
236 user = User.find(9)
237 Watcher.create!(:watchable => @issue, :user => user)
237 Watcher.create!(:watchable => @issue, :user => user)
238 Role.non_member.remove_permission!(:view_issues)
238 Role.non_member.remove_permission!(:view_issues)
239 assert Mailer.deliver_issue_add(@issue)
239 assert Mailer.deliver_issue_add(@issue)
240 assert !last_email.bcc.include?(user.mail)
240 assert !last_email.bcc.include?(user.mail)
241 end
241 end
242 end
242 end
243
243
244 # test mailer methods for each language
244 # test mailer methods for each language
245 def test_issue_add
245 def test_issue_add
246 issue = Issue.find(1)
246 issue = Issue.find(1)
247 valid_languages.each do |lang|
247 valid_languages.each do |lang|
248 Setting.default_language = lang.to_s
248 Setting.default_language = lang.to_s
249 assert Mailer.deliver_issue_add(issue)
249 assert Mailer.deliver_issue_add(issue)
250 end
250 end
251 end
251 end
252
252
253 def test_issue_edit
253 def test_issue_edit
254 journal = Journal.find(1)
254 journal = Journal.find(1)
255 valid_languages.each do |lang|
255 valid_languages.each do |lang|
256 Setting.default_language = lang.to_s
256 Setting.default_language = lang.to_s
257 assert Mailer.deliver_issue_edit(journal)
257 assert Mailer.deliver_issue_edit(journal)
258 end
258 end
259 end
259 end
260
260
261 def test_document_added
261 def test_document_added
262 document = Document.find(1)
262 document = Document.find(1)
263 valid_languages.each do |lang|
263 valid_languages.each do |lang|
264 Setting.default_language = lang.to_s
264 Setting.default_language = lang.to_s
265 assert Mailer.deliver_document_added(document)
265 assert Mailer.deliver_document_added(document)
266 end
266 end
267 end
267 end
268
268
269 def test_attachments_added
269 def test_attachments_added
270 attachements = [ Attachment.find_by_container_type('Document') ]
270 attachements = [ Attachment.find_by_container_type('Document') ]
271 valid_languages.each do |lang|
271 valid_languages.each do |lang|
272 Setting.default_language = lang.to_s
272 Setting.default_language = lang.to_s
273 assert Mailer.deliver_attachments_added(attachements)
273 assert Mailer.deliver_attachments_added(attachements)
274 end
274 end
275 end
275 end
276
276
277 def test_version_file_added
277 def test_version_file_added
278 attachements = [ Attachment.find_by_container_type('Version') ]
278 attachements = [ Attachment.find_by_container_type('Version') ]
279 assert Mailer.deliver_attachments_added(attachements)
279 assert Mailer.deliver_attachments_added(attachements)
280 assert_not_nil last_email.bcc
280 assert_not_nil last_email.bcc
281 assert last_email.bcc.any?
281 assert last_email.bcc.any?
282 assert_select_email do
282 assert_select_email do
283 assert_select "a[href=?]", "http://mydomain.foo/projects/ecookbook/files"
283 assert_select "a[href=?]", "http://mydomain.foo/projects/ecookbook/files"
284 end
284 end
285 end
285 end
286
286
287 def test_project_file_added
287 def test_project_file_added
288 attachements = [ Attachment.find_by_container_type('Project') ]
288 attachements = [ Attachment.find_by_container_type('Project') ]
289 assert Mailer.deliver_attachments_added(attachements)
289 assert Mailer.deliver_attachments_added(attachements)
290 assert_not_nil last_email.bcc
290 assert_not_nil last_email.bcc
291 assert last_email.bcc.any?
291 assert last_email.bcc.any?
292 assert_select_email do
292 assert_select_email do
293 assert_select "a[href=?]", "http://mydomain.foo/projects/ecookbook/files"
293 assert_select "a[href=?]", "http://mydomain.foo/projects/ecookbook/files"
294 end
294 end
295 end
295 end
296
296
297 def test_news_added
297 def test_news_added
298 news = News.find(:first)
298 news = News.find(:first)
299 valid_languages.each do |lang|
299 valid_languages.each do |lang|
300 Setting.default_language = lang.to_s
300 Setting.default_language = lang.to_s
301 assert Mailer.deliver_news_added(news)
301 assert Mailer.deliver_news_added(news)
302 end
302 end
303 end
303 end
304
304
305 def test_news_comment_added
305 def test_news_comment_added
306 comment = Comment.find(2)
306 comment = Comment.find(2)
307 valid_languages.each do |lang|
307 valid_languages.each do |lang|
308 Setting.default_language = lang.to_s
308 Setting.default_language = lang.to_s
309 assert Mailer.deliver_news_comment_added(comment)
309 assert Mailer.deliver_news_comment_added(comment)
310 end
310 end
311 end
311 end
312
312
313 def test_message_posted
313 def test_message_posted
314 message = Message.find(:first)
314 message = Message.find(:first)
315 recipients = ([message.root] + message.root.children).collect {|m| m.author.mail if m.author}
315 recipients = ([message.root] + message.root.children).collect {|m| m.author.mail if m.author}
316 recipients = recipients.compact.uniq
316 recipients = recipients.compact.uniq
317 valid_languages.each do |lang|
317 valid_languages.each do |lang|
318 Setting.default_language = lang.to_s
318 Setting.default_language = lang.to_s
319 assert Mailer.deliver_message_posted(message)
319 assert Mailer.deliver_message_posted(message)
320 end
320 end
321 end
321 end
322
322
323 def test_wiki_content_added
323 def test_wiki_content_added
324 content = WikiContent.find(:first)
324 content = WikiContent.find(:first)
325 valid_languages.each do |lang|
325 valid_languages.each do |lang|
326 Setting.default_language = lang.to_s
326 Setting.default_language = lang.to_s
327 assert_difference 'ActionMailer::Base.deliveries.size' do
327 assert_difference 'ActionMailer::Base.deliveries.size' do
328 assert Mailer.deliver_wiki_content_added(content)
328 assert Mailer.deliver_wiki_content_added(content)
329 end
329 end
330 end
330 end
331 end
331 end
332
332
333 def test_wiki_content_updated
333 def test_wiki_content_updated
334 content = WikiContent.find(:first)
334 content = WikiContent.find(:first)
335 valid_languages.each do |lang|
335 valid_languages.each do |lang|
336 Setting.default_language = lang.to_s
336 Setting.default_language = lang.to_s
337 assert_difference 'ActionMailer::Base.deliveries.size' do
337 assert_difference 'ActionMailer::Base.deliveries.size' do
338 assert Mailer.deliver_wiki_content_updated(content)
338 assert Mailer.deliver_wiki_content_updated(content)
339 end
339 end
340 end
340 end
341 end
341 end
342
342
343 def test_account_information
343 def test_account_information
344 user = User.find(2)
344 user = User.find(2)
345 valid_languages.each do |lang|
345 valid_languages.each do |lang|
346 user.update_attribute :language, lang.to_s
346 user.update_attribute :language, lang.to_s
347 user.reload
347 user.reload
348 assert Mailer.deliver_account_information(user, 'pAsswORd')
348 assert Mailer.deliver_account_information(user, 'pAsswORd')
349 end
349 end
350 end
350 end
351
351
352 def test_lost_password
352 def test_lost_password
353 token = Token.find(2)
353 token = Token.find(2)
354 valid_languages.each do |lang|
354 valid_languages.each do |lang|
355 token.user.update_attribute :language, lang.to_s
355 token.user.update_attribute :language, lang.to_s
356 token.reload
356 token.reload
357 assert Mailer.deliver_lost_password(token)
357 assert Mailer.deliver_lost_password(token)
358 end
358 end
359 end
359 end
360
360
361 def test_register
361 def test_register
362 token = Token.find(1)
362 token = Token.find(1)
363 Setting.host_name = 'redmine.foo'
363 Setting.host_name = 'redmine.foo'
364 Setting.protocol = 'https'
364 Setting.protocol = 'https'
365
365
366 valid_languages.each do |lang|
366 valid_languages.each do |lang|
367 token.user.update_attribute :language, lang.to_s
367 token.user.update_attribute :language, lang.to_s
368 token.reload
368 token.reload
369 ActionMailer::Base.deliveries.clear
369 ActionMailer::Base.deliveries.clear
370 assert Mailer.deliver_register(token)
370 assert Mailer.deliver_register(token)
371 mail = ActionMailer::Base.deliveries.last
371 mail = ActionMailer::Base.deliveries.last
372 assert mail.body.include?("https://redmine.foo/account/activate?token=#{token.value}")
372 assert mail.body.include?("https://redmine.foo/account/activate?token=#{token.value}")
373 end
373 end
374 end
374 end
375
375
376 def test_test
376 def test_test
377 user = User.find(1)
377 user = User.find(1)
378 valid_languages.each do |lang|
378 valid_languages.each do |lang|
379 user.update_attribute :language, lang.to_s
379 user.update_attribute :language, lang.to_s
380 assert Mailer.deliver_test(user)
380 assert Mailer.deliver_test(user)
381 end
381 end
382 end
382 end
383
383
384 def test_reminders
384 def test_reminders
385 Mailer.reminders(:days => 42)
385 Mailer.reminders(:days => 42)
386 assert_equal 1, ActionMailer::Base.deliveries.size
386 assert_equal 1, ActionMailer::Base.deliveries.size
387 mail = ActionMailer::Base.deliveries.last
387 mail = ActionMailer::Base.deliveries.last
388 assert mail.bcc.include?('dlopper@somenet.foo')
388 assert mail.bcc.include?('dlopper@somenet.foo')
389 assert mail.body.include?('Bug #3: Error 281 when updating a recipe')
389 assert mail.body.include?('Bug #3: Error 281 when updating a recipe')
390 assert_equal '1 issue(s) due in the next 42 days', mail.subject
390 assert_equal '1 issue(s) due in the next 42 days', mail.subject
391 end
391 end
392
392
393 def test_reminders_for_users
393 def test_reminders_for_users
394 Mailer.reminders(:days => 42, :users => ['5'])
394 Mailer.reminders(:days => 42, :users => ['5'])
395 assert_equal 0, ActionMailer::Base.deliveries.size # No mail for dlopper
395 assert_equal 0, ActionMailer::Base.deliveries.size # No mail for dlopper
396 Mailer.reminders(:days => 42, :users => ['3'])
396 Mailer.reminders(:days => 42, :users => ['3'])
397 assert_equal 1, ActionMailer::Base.deliveries.size # No mail for dlopper
397 assert_equal 1, ActionMailer::Base.deliveries.size # No mail for dlopper
398 mail = ActionMailer::Base.deliveries.last
398 mail = ActionMailer::Base.deliveries.last
399 assert mail.bcc.include?('dlopper@somenet.foo')
399 assert mail.bcc.include?('dlopper@somenet.foo')
400 assert mail.body.include?('Bug #3: Error 281 when updating a recipe')
400 assert mail.body.include?('Bug #3: Error 281 when updating a recipe')
401 end
401 end
402
402
403 def last_email
403 def last_email
404 mail = ActionMailer::Base.deliveries.last
404 mail = ActionMailer::Base.deliveries.last
405 assert_not_nil mail
405 assert_not_nil mail
406 mail
406 mail
407 end
407 end
408
408
409 def test_mailer_should_not_change_locale
409 def test_mailer_should_not_change_locale
410 Setting.default_language = 'en'
410 Setting.default_language = 'en'
411 # Set current language to italian
411 # Set current language to italian
412 set_language_if_valid 'it'
412 set_language_if_valid 'it'
413 # Send an email to a french user
413 # Send an email to a french user
414 user = User.find(1)
414 user = User.find(1)
415 user.language = 'fr'
415 user.language = 'fr'
416 Mailer.deliver_account_activated(user)
416 Mailer.deliver_account_activated(user)
417 mail = ActionMailer::Base.deliveries.last
417 mail = ActionMailer::Base.deliveries.last
418 assert mail.body.include?('Votre compte')
418 assert mail.body.include?('Votre compte')
419
419
420 assert_equal :it, current_language
420 assert_equal :it, current_language
421 end
421 end
422
422
423 def test_with_deliveries_off
423 def test_with_deliveries_off
424 Mailer.with_deliveries false do
424 Mailer.with_deliveries false do
425 Mailer.deliver_test(User.find(1))
425 Mailer.deliver_test(User.find(1))
426 end
426 end
427 assert ActionMailer::Base.deliveries.empty?
427 assert ActionMailer::Base.deliveries.empty?
428 # should restore perform_deliveries
428 # should restore perform_deliveries
429 assert ActionMailer::Base.perform_deliveries
429 assert ActionMailer::Base.perform_deliveries
430 end
430 end
431
431
432 context "layout" do
432 context "layout" do
433 should "include the emails_header" do
433 should "include the emails_header" do
434 with_settings(:emails_header => "*Header content*") do
434 with_settings(:emails_header => "*Header content*") do
435 assert Mailer.deliver_test(User.find(1))
435 assert Mailer.deliver_test(User.find(1))
436
436
437 assert_select_email do
437 assert_select_email do
438 assert_select ".header" do
438 assert_select ".header" do
439 assert_select "strong", :text => "Header content"
439 assert_select "strong", :text => "Header content"
440 end
440 end
441 end
441 end
442 end
442 end
443 end
443 end
444 end
444 end
445 end
445 end
General Comments 0
You need to be logged in to leave comments. Login now