summaryrefslogtreecommitdiffstats
path: root/test/unit/mailer_test.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/unit/mailer_test.rb')
-rw-r--r--test/unit/mailer_test.rb252
1 files changed, 78 insertions, 174 deletions
diff --git a/test/unit/mailer_test.rb b/test/unit/mailer_test.rb
index 5d2ac0d31..a5f6c04ff 100644
--- a/test/unit/mailer_test.rb
+++ b/test/unit/mailer_test.rb
@@ -122,7 +122,7 @@ class MailerTest < ActiveSupport::TestCase
def test_generated_links_with_port_and_prefix
with_settings :host_name => '10.0.0.1:81/redmine', :protocol => 'http' do
- Mailer.test_email(User.find(1)).deliver
+ Mailer.test_email(User.find(1)).deliver_now
mail = last_email
assert_not_nil mail
assert_include 'http://10.0.0.1:81/redmine', mail_body(mail)
@@ -131,7 +131,7 @@ class MailerTest < ActiveSupport::TestCase
def test_generated_links_with_port
with_settings :host_name => '10.0.0.1:81', :protocol => 'http' do
- Mailer.test_email(User.find(1)).deliver
+ Mailer.test_email(User.find(1)).deliver_now
mail = last_email
assert_not_nil mail
assert_include 'http://10.0.0.1:81', mail_body(mail)
@@ -239,7 +239,7 @@ class MailerTest < ActiveSupport::TestCase
def test_from_header
with_settings :mail_from => 'redmine@example.net' do
- Mailer.test_email(User.find(1)).deliver
+ Mailer.deliver_test_email(User.find(1))
end
mail = last_email
assert_equal 'redmine@example.net', mail.from_addrs.first
@@ -247,7 +247,7 @@ class MailerTest < ActiveSupport::TestCase
def test_from_header_with_phrase
with_settings :mail_from => 'Redmine app <redmine@example.net>' do
- Mailer.test_email(User.find(1)).deliver
+ Mailer.deliver_test_email(User.find(1))
end
mail = last_email
assert_equal 'redmine@example.net', mail.from_addrs.first
@@ -263,7 +263,7 @@ class MailerTest < ActiveSupport::TestCase
user.pref.no_self_notified = false
user.pref.save
User.current = user
- Mailer.news_added(news.reload).deliver
+ Mailer.deliver_news_added(news.reload)
assert_equal 1, last_email.bcc.size
# nobody to notify
@@ -271,7 +271,7 @@ class MailerTest < ActiveSupport::TestCase
user.pref.save
User.current = user
ActionMailer::Base.deliveries.clear
- Mailer.news_added(news.reload).deliver
+ Mailer.deliver_news_added(news.reload)
assert ActionMailer::Base.deliveries.empty?
end
@@ -300,7 +300,7 @@ class MailerTest < ActiveSupport::TestCase
def test_message_posted_message_id
message = Message.find(1)
- Mailer.message_posted(message).deliver
+ Mailer.deliver_message_posted(message)
mail = last_email
assert_match /^redmine\.message-1\.\d+\.[a-f0-9]+@example\.net/, mail.message_id
assert_include "redmine.message-1.20070512151532@example.net", mail.references
@@ -314,7 +314,7 @@ class MailerTest < ActiveSupport::TestCase
def test_reply_posted_message_id
message = Message.find(3)
- Mailer.message_posted(message).deliver
+ Mailer.deliver_message_posted(message)
mail = last_email
assert_match /^redmine\.message-3\.\d+\.[a-f0-9]+@example\.net/, mail.message_id
assert_include "redmine.message-1.20070512151532@example.net", mail.references
@@ -329,22 +329,23 @@ class MailerTest < ActiveSupport::TestCase
test "#issue_add should notify project members" do
issue = Issue.find(1)
assert Mailer.deliver_issue_add(issue)
- assert last_email.bcc.include?('dlopper@somenet.foo')
+ assert_include 'dlopper@somenet.foo', recipients
end
def test_issue_add_should_send_mail_to_all_user_email_address
EmailAddress.create!(:user_id => 3, :address => 'otheremail@somenet.foo')
issue = Issue.find(1)
assert Mailer.deliver_issue_add(issue)
- assert last_email.bcc.include?('dlopper@somenet.foo')
- assert last_email.bcc.include?('otheremail@somenet.foo')
+
+ assert mail = ActionMailer::Base.deliveries.find {|m| m.bcc.include?('dlopper@somenet.foo')}
+ assert mail.bcc.include?('otheremail@somenet.foo')
end
test "#issue_add should not notify project members that are not allow to view the issue" do
issue = Issue.find(1)
Role.find(2).remove_permission!(:view_issues)
assert Mailer.deliver_issue_add(issue)
- assert !last_email.bcc.include?('dlopper@somenet.foo')
+ assert_not_include 'dlopper@somenet.foo', recipients
end
test "#issue_add should notify issue watchers" do
@@ -358,7 +359,7 @@ class MailerTest < ActiveSupport::TestCase
Watcher.create!(:watchable => issue, :user => user)
assert Mailer.deliver_issue_add(issue)
- assert last_email.bcc.include?(user.mail)
+ assert_include user.mail, recipients
end
test "#issue_add should not notify watchers not allowed to view the issue" do
@@ -367,7 +368,7 @@ class MailerTest < ActiveSupport::TestCase
Watcher.create!(:watchable => issue, :user => user)
Role.non_member.remove_permission!(:view_issues)
assert Mailer.deliver_issue_add(issue)
- assert !last_email.bcc.include?(user.mail)
+ assert_not_include user.mail, recipients
end
def test_issue_add_should_include_enabled_fields
@@ -391,21 +392,6 @@ class MailerTest < ActiveSupport::TestCase
end
end
- # test mailer methods for each language
- def test_issue_add
- issue = Issue.find(1)
- with_each_language_as_default do
- assert Mailer.deliver_issue_add(issue)
- end
- end
-
- def test_issue_edit
- journal = Journal.find(1)
- with_each_language_as_default do
- assert Mailer.deliver_issue_edit(journal)
- end
- end
-
def test_issue_edit_should_send_private_notes_to_users_with_permission_only
journal = Journal.find(1)
journal.private_notes = true
@@ -415,13 +401,14 @@ class MailerTest < ActiveSupport::TestCase
assert_difference 'ActionMailer::Base.deliveries.size', 2 do
Mailer.deliver_issue_edit(journal)
end
- assert_equal %w(dlopper@somenet.foo jsmith@somenet.foo), ActionMailer::Base.deliveries.last(2).flat_map(&:bcc).sort
+ assert_equal %w(dlopper@somenet.foo jsmith@somenet.foo), recipients
+ ActionMailer::Base.deliveries.clear
Role.find(2).remove_permission! :view_private_notes
assert_difference 'ActionMailer::Base.deliveries.size', 1 do
Mailer.deliver_issue_edit(journal)
end
- assert_equal %w(jsmith@somenet.foo), ActionMailer::Base.deliveries.last.bcc.sort
+ assert_equal %w(jsmith@somenet.foo), recipients
end
def test_issue_edit_should_send_private_notes_to_watchers_with_permission_only
@@ -432,11 +419,12 @@ class MailerTest < ActiveSupport::TestCase
Role.non_member.add_permission! :view_private_notes
Mailer.deliver_issue_edit(journal)
- assert_include 'someone@foo.bar', ActionMailer::Base.deliveries.last.bcc.sort
+ assert_include 'someone@foo.bar', recipients
+ ActionMailer::Base.deliveries.clear
Role.non_member.remove_permission! :view_private_notes
Mailer.deliver_issue_edit(journal)
- assert_not_include 'someone@foo.bar', ActionMailer::Base.deliveries.last.bcc.sort
+ assert_not_include 'someone@foo.bar', recipients
end
def test_issue_edit_should_mark_private_notes
@@ -461,29 +449,15 @@ class MailerTest < ActiveSupport::TestCase
ActionMailer::Base.deliveries.clear
Mailer.deliver_issue_edit(journal)
- last_email.bcc.each do |email|
+ recipients.each do |email|
user = User.find_by_mail(email)
assert private_issue.visible?(user), "Issue was not visible to #{user}"
end
end
- def test_document_added
- document = Document.find(1)
- with_each_language_as_default do
- assert Mailer.document_added(document).deliver
- end
- end
-
- def test_attachments_added
- attachements = [ Attachment.find_by_container_type('Document') ]
- with_each_language_as_default do
- assert Mailer.attachments_added(attachements).deliver
- end
- end
-
def test_version_file_added
attachements = [ Attachment.find_by_container_type('Version') ]
- assert Mailer.attachments_added(attachements).deliver
+ assert Mailer.deliver_attachments_added(attachements)
assert_not_nil last_email.bcc
assert last_email.bcc.any?
assert_select_email do
@@ -493,7 +467,7 @@ class MailerTest < ActiveSupport::TestCase
def test_project_file_added
attachements = [ Attachment.find_by_container_type('Project') ]
- assert Mailer.attachments_added(attachements).deliver
+ assert Mailer.deliver_attachments_added(attachements)
assert_not_nil last_email.bcc
assert last_email.bcc.any?
assert_select_email do
@@ -501,107 +475,46 @@ class MailerTest < ActiveSupport::TestCase
end
end
- def test_news_added
- news = News.first
- with_each_language_as_default do
- assert Mailer.news_added(news).deliver
- end
- end
-
def test_news_added_should_notify_project_news_watchers
user1 = User.generate!
user2 = User.generate!
news = News.find(1)
news.project.enabled_module('news').add_watcher(user1)
- Mailer.news_added(news).deliver
- assert_include user1.mail, last_email.bcc
- assert_not_include user2.mail, last_email.bcc
- end
-
- def test_news_comment_added
- comment = Comment.find(2)
- with_each_language_as_default do
- assert Mailer.news_comment_added(comment).deliver
- end
- end
-
- def test_message_posted
- message = Message.first
- recipients = ([message.root] + message.root.children).collect {|m| m.author.mail if m.author}
- recipients = recipients.compact.uniq
- with_each_language_as_default do
- assert Mailer.message_posted(message).deliver
- end
+ Mailer.deliver_news_added(news)
+ assert_include user1.mail, recipients
+ assert_not_include user2.mail, recipients
end
def test_wiki_content_added
content = WikiContent.find(1)
- with_each_language_as_default do
- assert_difference 'ActionMailer::Base.deliveries.size', 2 do
- assert Mailer.wiki_content_added(content).deliver
- assert_select_email do
- assert_select 'a[href=?]',
- 'http://localhost:3000/projects/ecookbook/wiki/CookBook_documentation',
- :text => 'CookBook documentation'
- end
+ assert_difference 'ActionMailer::Base.deliveries.size', 2 do
+ assert Mailer.deliver_wiki_content_added(content)
+ assert_select_email do
+ assert_select 'a[href=?]',
+ 'http://localhost:3000/projects/ecookbook/wiki/CookBook_documentation',
+ :text => 'CookBook documentation'
end
end
end
def test_wiki_content_updated
content = WikiContent.find(1)
- with_each_language_as_default do
- assert_difference 'ActionMailer::Base.deliveries.size', 2 do
- assert Mailer.wiki_content_updated(content).deliver
- assert_select_email do
- assert_select 'a[href=?]',
- 'http://localhost:3000/projects/ecookbook/wiki/CookBook_documentation',
- :text => 'CookBook documentation'
- end
- end
- end
- end
-
- def test_account_information
- user = User.find(2)
- valid_languages.each do |lang|
- user.update_attribute :language, lang.to_s
- user.reload
- assert Mailer.account_information(user, 'pAsswORd').deliver
- end
- end
-
- def test_lost_password
- token = Token.find(2)
- valid_languages.each do |lang|
- token.user.update_attribute :language, lang.to_s
- token.reload
- assert Mailer.lost_password(token).deliver
+ assert Mailer.deliver_wiki_content_updated(content)
+ assert_select_email do
+ assert_select 'a[href=?]',
+ 'http://localhost:3000/projects/ecookbook/wiki/CookBook_documentation',
+ :text => 'CookBook documentation'
end
end
def test_register
token = Token.find(1)
- valid_languages.each do |lang|
- token.user.update_attribute :language, lang.to_s
- token.reload
- ActionMailer::Base.deliveries.clear
- assert Mailer.register(token).deliver
- mail = last_email
- assert_select_email do
- assert_select "a[href=?]",
- "http://localhost:3000/account/activate?token=#{token.value}",
- :text => "http://localhost:3000/account/activate?token=#{token.value}"
- end
- end
- end
-
- def test_test
- user = User.find(1)
- valid_languages.each do |lang|
- user.update_attribute :language, lang.to_s
- assert Mailer.test_email(user).deliver
+ assert Mailer.deliver_register(token.user, token)
+ assert_select_email do
+ assert_select "a[href=?]",
+ "http://localhost:3000/account/activate?token=#{token.value}",
+ :text => "http://localhost:3000/account/activate?token=#{token.value}"
end
end
@@ -674,7 +587,7 @@ class MailerTest < ActiveSupport::TestCase
Mailer.reminders(:days => 7)
assert_equal 2, ActionMailer::Base.deliveries.size
- assert_equal %w(dlopper@somenet.foo jsmith@somenet.foo), ActionMailer::Base.deliveries.map(&:bcc).flatten.sort
+ assert_equal %w(dlopper@somenet.foo jsmith@somenet.foo), recipients
ActionMailer::Base.deliveries.each do |mail|
assert_mail_body_match 'Assigned to group', mail
end
@@ -690,9 +603,7 @@ class MailerTest < ActiveSupport::TestCase
Mailer.reminders(:days => 42, :version => 'acme')
assert_equal 1, ActionMailer::Base.deliveries.size
-
- mail = last_email
- assert mail.bcc.include?('dlopper@somenet.foo')
+ assert_include 'dlopper@somenet.foo', recipients
end
end
@@ -709,8 +620,8 @@ class MailerTest < ActiveSupport::TestCase
Mailer.reminders(:days => 42)
assert_equal 1, ActionMailer::Base.deliveries.size
+ assert_include 'dlopper@somenet.foo', recipients
mail = last_email
- assert mail.bcc.include?('dlopper@somenet.foo')
assert_mail_body_no_match 'Issue dlopper should not see', mail
end
end
@@ -718,10 +629,12 @@ class MailerTest < ActiveSupport::TestCase
def test_security_notification
set_language_if_valid User.find(1).language
with_settings :emails_footer => "footer without link" do
- User.current.remote_ip = '192.168.1.1'
- assert Mailer.security_notification(User.find(1), message: :notice_account_password_updated).deliver
+ sender = User.find(2)
+ sender.remote_ip = '192.168.1.1'
+ assert Mailer.deliver_security_notification(User.find(1), sender, message: :notice_account_password_updated)
mail = last_email
assert_not_nil mail
+ assert_mail_body_match sender.login, mail
assert_mail_body_match '192.168.1.1', mail
assert_mail_body_match I18n.t(:notice_account_password_updated), mail
assert_select_email do
@@ -731,30 +644,25 @@ class MailerTest < ActiveSupport::TestCase
end
end
- def test_security_notification_with_overridden_originator_and_remote_ip
+ def test_security_notification_with_overridden_remote_ip
set_language_if_valid User.find(1).language
with_settings :emails_footer => "footer without link" do
- User.current.remote_ip = '192.168.1.1'
- assert Mailer.security_notification(User.find(1), message: :notice_account_password_updated, originator: User.find(2), remote_ip: '10.0.0.42').deliver
+ sender = User.find(2)
+ sender.remote_ip = '192.168.1.1'
+ assert Mailer.deliver_security_notification(User.find(1), sender, message: :notice_account_password_updated, remote_ip: '10.0.0.42')
mail = last_email
assert_not_nil mail
- assert_mail_body_match User.find(2).login, mail
assert_mail_body_match '10.0.0.42', mail
- assert_mail_body_match I18n.t(:notice_account_password_updated), mail
- assert_select_email do
- assert_select "h1", false
- assert_select "a", false
- end
end
end
def test_security_notification_should_include_title
set_language_if_valid User.find(2).language
with_settings :emails_footer => "footer without link" do
- assert Mailer.security_notification(User.find(2),
+ assert Mailer.deliver_security_notification(User.find(2), User.find(2),
message: :notice_account_password_updated,
title: :label_my_account
- ).deliver
+ )
assert_select_email do
assert_select "a", false
assert_select "h1", :text => I18n.t(:label_my_account)
@@ -765,11 +673,11 @@ class MailerTest < ActiveSupport::TestCase
def test_security_notification_should_include_link
set_language_if_valid User.find(3).language
with_settings :emails_footer => "footer without link" do
- assert Mailer.security_notification(User.find(3),
+ assert Mailer.deliver_security_notification(User.find(3), User.find(3),
message: :notice_account_password_updated,
title: :label_my_account,
url: {controller: 'my', action: 'account'}
- ).deliver
+ )
assert_select_email do
assert_select "h1", false
assert_select 'a[href=?]', 'http://localhost:3000/my/account', :text => I18n.t(:label_my_account)
@@ -782,8 +690,9 @@ class MailerTest < ActiveSupport::TestCase
set_language_if_valid 'it'
# Send an email to a french user
user = User.find(1)
- user.language = 'fr'
- Mailer.account_activated(user).deliver
+ user.update_attribute :language, 'fr'
+
+ Mailer.deliver_account_activated(user)
mail = last_email
assert_mail_body_match 'Votre compte', mail
@@ -792,7 +701,7 @@ class MailerTest < ActiveSupport::TestCase
def test_with_deliveries_off
Mailer.with_deliveries false do
- Mailer.test_email(User.find(1)).deliver
+ Mailer.test_email(User.find(1)).deliver_now
end
assert ActionMailer::Base.deliveries.empty?
# should restore perform_deliveries
@@ -808,7 +717,7 @@ class MailerTest < ActiveSupport::TestCase
def test_layout_should_include_the_emails_header
with_settings :emails_header => "*Header content*" do
with_settings :plain_text_mail => 0 do
- assert Mailer.test_email(User.find(1)).deliver
+ assert Mailer.test_email(User.find(1)).deliver_now
assert_select_email do
assert_select ".header" do
assert_select "strong", :text => "Header content"
@@ -816,7 +725,7 @@ class MailerTest < ActiveSupport::TestCase
end
end
with_settings :plain_text_mail => 1 do
- assert Mailer.test_email(User.find(1)).deliver
+ assert Mailer.test_email(User.find(1)).deliver_now
mail = last_email
assert_not_nil mail
assert_include "*Header content*", mail.body.decoded
@@ -826,7 +735,7 @@ class MailerTest < ActiveSupport::TestCase
def test_layout_should_not_include_empty_emails_header
with_settings :emails_header => "", :plain_text_mail => 0 do
- assert Mailer.test_email(User.find(1)).deliver
+ assert Mailer.test_email(User.find(1)).deliver_now
assert_select_email do
assert_select ".header", false
end
@@ -836,7 +745,7 @@ class MailerTest < ActiveSupport::TestCase
def test_layout_should_include_the_emails_footer
with_settings :emails_footer => "*Footer content*" do
with_settings :plain_text_mail => 0 do
- assert Mailer.test_email(User.find(1)).deliver
+ assert Mailer.test_email(User.find(1)).deliver_now
assert_select_email do
assert_select ".footer" do
assert_select "strong", :text => "Footer content"
@@ -844,7 +753,7 @@ class MailerTest < ActiveSupport::TestCase
end
end
with_settings :plain_text_mail => 1 do
- assert Mailer.test_email(User.find(1)).deliver
+ assert Mailer.test_email(User.find(1)).deliver_now
mail = last_email
assert_not_nil mail
assert_include "\n-- \n", mail.body.decoded
@@ -856,13 +765,13 @@ class MailerTest < ActiveSupport::TestCase
def test_layout_should_not_include_empty_emails_footer
with_settings :emails_footer => "" do
with_settings :plain_text_mail => 0 do
- assert Mailer.test_email(User.find(1)).deliver
+ assert Mailer.test_email(User.find(1)).deliver_now
assert_select_email do
assert_select ".footer", false
end
end
with_settings :plain_text_mail => 1 do
- assert Mailer.test_email(User.find(1)).deliver
+ assert Mailer.test_email(User.find(1)).deliver_now
mail = last_email
assert_not_nil mail
assert_not_include "\n-- \n", mail.body.decoded
@@ -902,16 +811,14 @@ class MailerTest < ActiveSupport::TestCase
end
def test_with_synched_deliveries_should_yield_with_synced_deliveries
- ActionMailer::Base.delivery_method = :async_smtp
- ActionMailer::Base.async_smtp_settings = {:foo => 'bar'}
+ ActionMailer::DeliveryJob.queue_adapter = ActiveJob::QueueAdapters::AsyncAdapter.new
Mailer.with_synched_deliveries do
- assert_equal :smtp, ActionMailer::Base.delivery_method
- assert_equal({:foo => 'bar'}, ActionMailer::Base.smtp_settings)
+ assert_kind_of ActiveJob::QueueAdapters::InlineAdapter, ActionMailer::DeliveryJob.queue_adapter
end
- assert_equal :async_smtp, ActionMailer::Base.delivery_method
+ assert_kind_of ActiveJob::QueueAdapters::AsyncAdapter, ActionMailer::DeliveryJob.queue_adapter
ensure
- ActionMailer::Base.delivery_method = :test
+ ActionMailer::DeliveryJob.queue_adapter = ActiveJob::QueueAdapters::InlineAdapter.new
end
def test_email_addresses_should_keep_addresses
@@ -940,6 +847,11 @@ class MailerTest < ActiveSupport::TestCase
private
+ # Returns an array of email addresses to which emails were sent
+ def recipients
+ ActionMailer::Base.deliveries.map(&:bcc).flatten.sort
+ end
+
def last_email
mail = ActionMailer::Base.deliveries.last
assert_not_nil mail
@@ -953,12 +865,4 @@ class MailerTest < ActiveSupport::TestCase
def html_part
last_email.parts.detect {|part| part.content_type.include?('text/html')}
end
-
- def with_each_language_as_default(&block)
- valid_languages.each do |lang|
- with_settings :default_language => lang.to_s do
- yield lang
- end
- end
- end
end