Make sure users don't get notified for thing they can not view (#3589).

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3169 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Philippe Lang
2009-12-13 14:26:54 +00:00
parent 6610bb6b6c
commit bb477a3a0f
7 changed files with 97 additions and 22 deletions
+43 -3
View File
@@ -147,7 +147,7 @@ class MailerTest < ActiveSupport::TestCase
def test_message_posted_message_id
ActionMailer::Base.deliveries.clear
message = Message.find(1)
Mailer.deliver_message_posted(message, message.author.mail)
Mailer.deliver_message_posted(message)
mail = ActionMailer::Base.deliveries.last
assert_not_nil mail
assert_equal Mailer.message_id_for(message), mail.message_id
@@ -157,13 +157,47 @@ class MailerTest < ActiveSupport::TestCase
def test_reply_posted_message_id
ActionMailer::Base.deliveries.clear
message = Message.find(3)
Mailer.deliver_message_posted(message, message.author.mail)
Mailer.deliver_message_posted(message)
mail = ActionMailer::Base.deliveries.last
assert_not_nil mail
assert_equal Mailer.message_id_for(message), mail.message_id
assert_equal Mailer.message_id_for(message.parent), mail.references.first.to_s
end
context("#issue_add") do
setup do
ActionMailer::Base.deliveries.clear
Setting.bcc_recipients = '1'
@issue = Issue.find(1)
end
should "notify project members" do
assert Mailer.deliver_issue_add(@issue)
assert last_email.bcc.include?('dlopper@somenet.foo')
end
should "not notify project members that are not allow to view the issue" do
Role.find(2).remove_permission!(:view_issues)
assert Mailer.deliver_issue_add(@issue)
assert !last_email.bcc.include?('dlopper@somenet.foo')
end
should "notify issue watchers" do
user = User.find(9)
Watcher.create!(:watchable => @issue, :user => user)
assert Mailer.deliver_issue_add(@issue)
assert last_email.bcc.include?(user.mail)
end
should "not notify watchers not allowed to view the issue" do
user = User.find(9)
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)
end
end
# test mailer methods for each language
def test_issue_add
issue = Issue.find(1)
@@ -211,7 +245,7 @@ class MailerTest < ActiveSupport::TestCase
recipients = recipients.compact.uniq
valid_languages.each do |lang|
Setting.default_language = lang.to_s
assert Mailer.deliver_message_posted(message, recipients)
assert Mailer.deliver_message_posted(message)
end
end
@@ -256,4 +290,10 @@ class MailerTest < ActiveSupport::TestCase
assert mail.bcc.include?('dlopper@somenet.foo')
assert mail.body.include?('Bug #3: Error 281 when updating a recipe')
end
def last_email
mail = ActionMailer::Base.deliveries.last
assert_not_nil mail
mail
end
end