[#674] Convert outbound mail to be sent per-recipient
Instead of a single email that is sent out with all the recipients as CC/BCC, each recipient will be delivered their own email. This will let emails to be customized per user based on their permissions, without exposing private data.
This commit is contained in:
parent
21685caf5f
commit
260e8b84f8
@ -69,7 +69,12 @@ class DocumentsController < ApplicationController
|
|||||||
attachments = Attachment.attach_files(@document, params[:attachments])
|
attachments = Attachment.attach_files(@document, params[:attachments])
|
||||||
render_attachment_warning_if_needed(@document)
|
render_attachment_warning_if_needed(@document)
|
||||||
|
|
||||||
Mailer.deliver_attachments_added(attachments[:files]) if attachments.present? && attachments[:files].present? && Setting.notified_events.include?('document_added')
|
if attachments.present? && attachments[:files].present? && Setting.notified_events.include?('document_added')
|
||||||
|
# TODO: refactor
|
||||||
|
attachments.first.container.recipients.each do |recipient|
|
||||||
|
Mailer.deliver_attachments_added(attachments[:files], recipient)
|
||||||
|
end
|
||||||
|
end
|
||||||
redirect_to :action => 'show', :id => @document
|
redirect_to :action => 'show', :id => @document
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -42,7 +42,11 @@ class FilesController < ApplicationController
|
|||||||
render_attachment_warning_if_needed(container)
|
render_attachment_warning_if_needed(container)
|
||||||
|
|
||||||
if !attachments.empty? && !attachments[:files].blank? && Setting.notified_events.include?('file_added')
|
if !attachments.empty? && !attachments[:files].blank? && Setting.notified_events.include?('file_added')
|
||||||
Mailer.deliver_attachments_added(attachments[:files])
|
# TODO: refactor
|
||||||
|
recipients = attachments[:files].first.container.project.notified_users.select {|user| user.allowed_to?(:view_files, container.project)}.collect {|u| u.mail}
|
||||||
|
recipients.each do |recipient|
|
||||||
|
Mailer.deliver_attachments_added(attachments[:files], recipient)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
redirect_to project_files_path(@project)
|
redirect_to project_files_path(@project)
|
||||||
end
|
end
|
||||||
|
@ -14,6 +14,10 @@
|
|||||||
|
|
||||||
class DocumentObserver < ActiveRecord::Observer
|
class DocumentObserver < ActiveRecord::Observer
|
||||||
def after_create(document)
|
def after_create(document)
|
||||||
Mailer.deliver_document_added(document) if Setting.notified_events.include?('document_added')
|
if Setting.notified_events.include?('document_added')
|
||||||
|
document.recipients.each do |recipient|
|
||||||
|
Mailer.deliver_document_added(document, recipient)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -17,7 +17,9 @@ class IssueObserver < ActiveRecord::Observer
|
|||||||
|
|
||||||
def after_create(issue)
|
def after_create(issue)
|
||||||
if self.send_notification
|
if self.send_notification
|
||||||
Mailer.deliver_issue_add(issue) if Setting.notified_events.include?('issue_added')
|
(issue.recipients + issue.watcher_recipients).uniq.each do |recipient|
|
||||||
|
Mailer.deliver_issue_add(issue, recipient)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
clear_notification
|
clear_notification
|
||||||
end
|
end
|
||||||
|
@ -27,7 +27,10 @@ class JournalObserver < ActiveRecord::Observer
|
|||||||
(Setting.notified_events.include?('issue_note_added') && journal.notes.present?) ||
|
(Setting.notified_events.include?('issue_note_added') && journal.notes.present?) ||
|
||||||
(Setting.notified_events.include?('issue_status_updated') && journal.new_status.present?) ||
|
(Setting.notified_events.include?('issue_status_updated') && journal.new_status.present?) ||
|
||||||
(Setting.notified_events.include?('issue_priority_updated') && journal.new_value_for('priority_id').present?)
|
(Setting.notified_events.include?('issue_priority_updated') && journal.new_value_for('priority_id').present?)
|
||||||
Mailer.deliver_issue_edit(journal)
|
issue = journal.issue
|
||||||
|
(issue.recipients + issue.watcher_recipients).uniq.each do |recipient|
|
||||||
|
Mailer.deliver_issue_edit(journal, recipient)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -30,20 +30,19 @@ class Mailer < ActionMailer::Base
|
|||||||
{ :host => h, :protocol => Setting.protocol }
|
{ :host => h, :protocol => Setting.protocol }
|
||||||
end
|
end
|
||||||
|
|
||||||
# Builds a tmail object used to email recipients of the added issue.
|
# Builds a tmail object used to email a recipient of the added issue.
|
||||||
#
|
#
|
||||||
# Example:
|
# Example:
|
||||||
# issue_add(issue) => tmail object
|
# issue_add(issue, 'user@example.com') => tmail object
|
||||||
# Mailer.deliver_issue_add(issue) => sends an email to issue recipients
|
# Mailer.deliver_issue_add(issue, 'user@example.com') => sends an email to 'user@example.com'
|
||||||
def issue_add(issue)
|
def issue_add(issue, recipient)
|
||||||
redmine_headers 'Project' => issue.project.identifier,
|
redmine_headers 'Project' => issue.project.identifier,
|
||||||
'Issue-Id' => issue.id,
|
'Issue-Id' => issue.id,
|
||||||
'Issue-Author' => issue.author.login,
|
'Issue-Author' => issue.author.login,
|
||||||
'Type' => "Issue"
|
'Type' => "Issue"
|
||||||
redmine_headers 'Issue-Assignee' => issue.assigned_to.login if issue.assigned_to
|
redmine_headers 'Issue-Assignee' => issue.assigned_to.login if issue.assigned_to
|
||||||
message_id issue
|
message_id issue
|
||||||
recipients issue.recipients
|
recipients [recipient]
|
||||||
cc(issue.watcher_recipients - @recipients)
|
|
||||||
subject "[#{issue.project.name} - #{issue.tracker.name} ##{issue.id}] (#{issue.status.name}) #{issue.subject}"
|
subject "[#{issue.project.name} - #{issue.tracker.name} ##{issue.id}] (#{issue.status.name}) #{issue.subject}"
|
||||||
body :issue => issue,
|
body :issue => issue,
|
||||||
:issue_url => url_for(:controller => 'issues', :action => 'show', :id => issue)
|
:issue_url => url_for(:controller => 'issues', :action => 'show', :id => issue)
|
||||||
@ -53,9 +52,9 @@ class Mailer < ActionMailer::Base
|
|||||||
# Builds a tmail object used to email recipients of the edited issue.
|
# Builds a tmail object used to email recipients of the edited issue.
|
||||||
#
|
#
|
||||||
# Example:
|
# Example:
|
||||||
# issue_edit(journal) => tmail object
|
# issue_edit(journal, 'user@example.com') => tmail object
|
||||||
# Mailer.deliver_issue_edit(journal) => sends an email to issue recipients
|
# Mailer.deliver_issue_edit(journal, 'user@example.com') => sends an email to issue recipients
|
||||||
def issue_edit(journal)
|
def issue_edit(journal, recipient)
|
||||||
issue = journal.journaled.reload
|
issue = journal.journaled.reload
|
||||||
redmine_headers 'Project' => issue.project.identifier,
|
redmine_headers 'Project' => issue.project.identifier,
|
||||||
'Issue-Id' => issue.id,
|
'Issue-Id' => issue.id,
|
||||||
@ -65,9 +64,7 @@ class Mailer < ActionMailer::Base
|
|||||||
message_id journal
|
message_id journal
|
||||||
references issue
|
references issue
|
||||||
@author = journal.user
|
@author = journal.user
|
||||||
recipients issue.recipients
|
recipients [recipient]
|
||||||
# Watchers in cc
|
|
||||||
cc(issue.watcher_recipients - @recipients)
|
|
||||||
s = "[#{issue.project.name} - #{issue.tracker.name} ##{issue.id}] "
|
s = "[#{issue.project.name} - #{issue.tracker.name} ##{issue.id}] "
|
||||||
s << "(#{issue.status.name}) " if journal.details['status_id']
|
s << "(#{issue.status.name}) " if journal.details['status_id']
|
||||||
s << issue.subject
|
s << issue.subject
|
||||||
@ -93,12 +90,12 @@ class Mailer < ActionMailer::Base
|
|||||||
# Builds a tmail object used to email users belonging to the added document's project.
|
# Builds a tmail object used to email users belonging to the added document's project.
|
||||||
#
|
#
|
||||||
# Example:
|
# Example:
|
||||||
# document_added(document) => tmail object
|
# document_added(document, 'test@example.com') => tmail object
|
||||||
# Mailer.deliver_document_added(document) => sends an email to the document's project recipients
|
# Mailer.deliver_document_added(document, 'test@example.com') => sends an email to the document's project recipients
|
||||||
def document_added(document)
|
def document_added(document, recipient)
|
||||||
redmine_headers 'Project' => document.project.identifier,
|
redmine_headers 'Project' => document.project.identifier,
|
||||||
'Type' => "Document"
|
'Type' => "Document"
|
||||||
recipients document.recipients
|
recipients [recipient]
|
||||||
subject "[#{document.project.name}] #{l(:label_document_new)}: #{document.title}"
|
subject "[#{document.project.name}] #{l(:label_document_new)}: #{document.title}"
|
||||||
body :document => document,
|
body :document => document,
|
||||||
:document_url => url_for(:controller => 'documents', :action => 'show', :id => document)
|
:document_url => url_for(:controller => 'documents', :action => 'show', :id => document)
|
||||||
@ -110,7 +107,7 @@ class Mailer < ActionMailer::Base
|
|||||||
# Example:
|
# Example:
|
||||||
# attachments_added(attachments) => tmail object
|
# attachments_added(attachments) => tmail object
|
||||||
# Mailer.deliver_attachments_added(attachments) => sends an email to the project's recipients
|
# Mailer.deliver_attachments_added(attachments) => sends an email to the project's recipients
|
||||||
def attachments_added(attachments)
|
def attachments_added(attachments, recipient)
|
||||||
container = attachments.first.container
|
container = attachments.first.container
|
||||||
added_to = ''
|
added_to = ''
|
||||||
added_to_url = ''
|
added_to_url = ''
|
||||||
@ -118,16 +115,14 @@ class Mailer < ActionMailer::Base
|
|||||||
when 'Project'
|
when 'Project'
|
||||||
added_to_url = url_for(:controller => 'files', :action => 'index', :project_id => container)
|
added_to_url = url_for(:controller => 'files', :action => 'index', :project_id => container)
|
||||||
added_to = "#{l(:label_project)}: #{container}"
|
added_to = "#{l(:label_project)}: #{container}"
|
||||||
recipients container.project.notified_users.select {|user| user.allowed_to?(:view_files, container.project)}.collect {|u| u.mail}
|
|
||||||
when 'Version'
|
when 'Version'
|
||||||
added_to_url = url_for(:controller => 'files', :action => 'index', :project_id => container.project)
|
added_to_url = url_for(:controller => 'files', :action => 'index', :project_id => container.project)
|
||||||
added_to = "#{l(:label_version)}: #{container.name}"
|
added_to = "#{l(:label_version)}: #{container.name}"
|
||||||
recipients container.project.notified_users.select {|user| user.allowed_to?(:view_files, container.project)}.collect {|u| u.mail}
|
|
||||||
when 'Document'
|
when 'Document'
|
||||||
added_to_url = url_for(:controller => 'documents', :action => 'show', :id => container.id)
|
added_to_url = url_for(:controller => 'documents', :action => 'show', :id => container.id)
|
||||||
added_to = "#{l(:label_document)}: #{container.title}"
|
added_to = "#{l(:label_document)}: #{container.title}"
|
||||||
recipients container.recipients
|
|
||||||
end
|
end
|
||||||
|
recipients [recipient]
|
||||||
redmine_headers 'Project' => container.project.identifier,
|
redmine_headers 'Project' => container.project.identifier,
|
||||||
'Type' => "Attachment"
|
'Type' => "Attachment"
|
||||||
subject "[#{container.project.name}] #{l(:label_attachment_new)}"
|
subject "[#{container.project.name}] #{l(:label_attachment_new)}"
|
||||||
@ -142,11 +137,11 @@ class Mailer < ActionMailer::Base
|
|||||||
# Example:
|
# Example:
|
||||||
# news_added(news) => tmail object
|
# news_added(news) => tmail object
|
||||||
# Mailer.deliver_news_added(news) => sends an email to the news' project recipients
|
# Mailer.deliver_news_added(news) => sends an email to the news' project recipients
|
||||||
def news_added(news)
|
def news_added(news, recipient)
|
||||||
redmine_headers 'Project' => news.project.identifier,
|
redmine_headers 'Project' => news.project.identifier,
|
||||||
'Type' => "News"
|
'Type' => "News"
|
||||||
message_id news
|
message_id news
|
||||||
recipients news.recipients
|
recipients [recipient]
|
||||||
subject "[#{news.project.name}] #{l(:label_news)}: #{news.title}"
|
subject "[#{news.project.name}] #{l(:label_news)}: #{news.title}"
|
||||||
body :news => news,
|
body :news => news,
|
||||||
:news_url => url_for(:controller => 'news', :action => 'show', :id => news)
|
:news_url => url_for(:controller => 'news', :action => 'show', :id => news)
|
||||||
@ -176,14 +171,13 @@ class Mailer < ActionMailer::Base
|
|||||||
# Example:
|
# Example:
|
||||||
# message_posted(message) => tmail object
|
# message_posted(message) => tmail object
|
||||||
# Mailer.deliver_message_posted(message) => sends an email to the recipients
|
# Mailer.deliver_message_posted(message) => sends an email to the recipients
|
||||||
def message_posted(message)
|
def message_posted(message, recipient)
|
||||||
redmine_headers 'Project' => message.project.identifier,
|
redmine_headers 'Project' => message.project.identifier,
|
||||||
'Topic-Id' => (message.parent_id || message.id),
|
'Topic-Id' => (message.parent_id || message.id),
|
||||||
'Type' => "Forum"
|
'Type' => "Forum"
|
||||||
message_id message
|
message_id message
|
||||||
references message.parent unless message.parent.nil?
|
references message.parent unless message.parent.nil?
|
||||||
recipients(message.recipients)
|
recipients [recipient]
|
||||||
cc((message.root.watcher_recipients + message.board.watcher_recipients).uniq - @recipients)
|
|
||||||
subject "[#{message.board.project.name} - #{message.board.name} - msg#{message.root.id}] #{message.subject}"
|
subject "[#{message.board.project.name} - #{message.board.name} - msg#{message.root.id}] #{message.subject}"
|
||||||
body :message => message,
|
body :message => message,
|
||||||
:message_url => url_for({ :controller => 'messages', :action => 'show', :board_id => message.board, :id => message.root, :r => message, :anchor => "message-#{message.id}" })
|
:message_url => url_for({ :controller => 'messages', :action => 'show', :board_id => message.board, :id => message.root, :r => message, :anchor => "message-#{message.id}" })
|
||||||
@ -195,13 +189,12 @@ class Mailer < ActionMailer::Base
|
|||||||
# Example:
|
# Example:
|
||||||
# wiki_content_added(wiki_content) => tmail object
|
# wiki_content_added(wiki_content) => tmail object
|
||||||
# Mailer.deliver_wiki_content_added(wiki_content) => sends an email to the project's recipients
|
# Mailer.deliver_wiki_content_added(wiki_content) => sends an email to the project's recipients
|
||||||
def wiki_content_added(wiki_content)
|
def wiki_content_added(wiki_content, recipient)
|
||||||
redmine_headers 'Project' => wiki_content.project.identifier,
|
redmine_headers 'Project' => wiki_content.project.identifier,
|
||||||
'Wiki-Page-Id' => wiki_content.page.id,
|
'Wiki-Page-Id' => wiki_content.page.id,
|
||||||
'Type' => "Wiki"
|
'Type' => "Wiki"
|
||||||
message_id wiki_content
|
message_id wiki_content
|
||||||
recipients wiki_content.recipients
|
recipients [recipient]
|
||||||
cc(wiki_content.page.wiki.watcher_recipients - recipients)
|
|
||||||
subject "[#{wiki_content.project.name}] #{l(:mail_subject_wiki_content_added, :id => wiki_content.page.pretty_title)}"
|
subject "[#{wiki_content.project.name}] #{l(:mail_subject_wiki_content_added, :id => wiki_content.page.pretty_title)}"
|
||||||
body :wiki_content => wiki_content,
|
body :wiki_content => wiki_content,
|
||||||
:wiki_content_url => url_for(:controller => 'wiki', :action => 'show', :project_id => wiki_content.project, :id => wiki_content.page.title)
|
:wiki_content_url => url_for(:controller => 'wiki', :action => 'show', :project_id => wiki_content.project, :id => wiki_content.page.title)
|
||||||
@ -213,13 +206,12 @@ class Mailer < ActionMailer::Base
|
|||||||
# Example:
|
# Example:
|
||||||
# wiki_content_updated(wiki_content) => tmail object
|
# wiki_content_updated(wiki_content) => tmail object
|
||||||
# Mailer.deliver_wiki_content_updated(wiki_content) => sends an email to the project's recipients
|
# Mailer.deliver_wiki_content_updated(wiki_content) => sends an email to the project's recipients
|
||||||
def wiki_content_updated(wiki_content)
|
def wiki_content_updated(wiki_content, recipient)
|
||||||
redmine_headers 'Project' => wiki_content.project.identifier,
|
redmine_headers 'Project' => wiki_content.project.identifier,
|
||||||
'Wiki-Page-Id' => wiki_content.page.id,
|
'Wiki-Page-Id' => wiki_content.page.id,
|
||||||
'Type' => "Wiki"
|
'Type' => "Wiki"
|
||||||
message_id wiki_content
|
message_id wiki_content
|
||||||
recipients wiki_content.recipients
|
recipients [recipient]
|
||||||
cc(wiki_content.page.wiki.watcher_recipients + wiki_content.page.watcher_recipients - recipients)
|
|
||||||
subject "[#{wiki_content.project.name}] #{l(:mail_subject_wiki_content_updated, :id => wiki_content.page.pretty_title)}"
|
subject "[#{wiki_content.project.name}] #{l(:mail_subject_wiki_content_updated, :id => wiki_content.page.pretty_title)}"
|
||||||
body :wiki_content => wiki_content,
|
body :wiki_content => wiki_content,
|
||||||
:wiki_content_url => url_for(:controller => 'wiki', :action => 'show', :project_id => wiki_content.project, :id => wiki_content.page.title),
|
:wiki_content_url => url_for(:controller => 'wiki', :action => 'show', :project_id => wiki_content.project, :id => wiki_content.page.title),
|
||||||
@ -403,13 +395,6 @@ class Mailer < ActionMailer::Base
|
|||||||
notified_users = [recipients, cc].flatten.compact.uniq
|
notified_users = [recipients, cc].flatten.compact.uniq
|
||||||
# Rails would log recipients only, not cc and bcc
|
# Rails would log recipients only, not cc and bcc
|
||||||
mylogger.info "Sending email notification to: #{notified_users.join(', ')}" if mylogger
|
mylogger.info "Sending email notification to: #{notified_users.join(', ')}" if mylogger
|
||||||
|
|
||||||
# Blind carbon copy recipients
|
|
||||||
if Setting.bcc_recipients?
|
|
||||||
bcc(notified_users)
|
|
||||||
recipients []
|
|
||||||
cc []
|
|
||||||
end
|
|
||||||
super
|
super
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -14,6 +14,13 @@
|
|||||||
|
|
||||||
class MessageObserver < ActiveRecord::Observer
|
class MessageObserver < ActiveRecord::Observer
|
||||||
def after_create(message)
|
def after_create(message)
|
||||||
Mailer.deliver_message_posted(message) if Setting.notified_events.include?('message_posted')
|
if Setting.notified_events.include?('message_posted')
|
||||||
|
recipients = message.recipients
|
||||||
|
recipients += message.root.watcher_recipients
|
||||||
|
recipients += message.board.watcher_recipients
|
||||||
|
recipients.uniq.each do |recipient|
|
||||||
|
Mailer.deliver_message_posted(message, recipient)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -14,6 +14,10 @@
|
|||||||
|
|
||||||
class NewsObserver < ActiveRecord::Observer
|
class NewsObserver < ActiveRecord::Observer
|
||||||
def after_create(news)
|
def after_create(news)
|
||||||
Mailer.deliver_news_added(news) if Setting.notified_events.include?('news_added')
|
if Setting.notified_events.include?('news_added')
|
||||||
|
news.recipients.each do |recipient|
|
||||||
|
Mailer.deliver_news_added(news, recipient)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -14,12 +14,19 @@
|
|||||||
|
|
||||||
class WikiContentObserver < ActiveRecord::Observer
|
class WikiContentObserver < ActiveRecord::Observer
|
||||||
def after_create(wiki_content)
|
def after_create(wiki_content)
|
||||||
Mailer.deliver_wiki_content_added(wiki_content) if Setting.notified_events.include?('wiki_content_added')
|
if Setting.notified_events.include?('wiki_content_added')
|
||||||
|
(wiki_content.recipients + wiki_content.page.wiki.watcher_recipients).uniq.each do |recipient|
|
||||||
|
Mailer.deliver_wiki_content_added(wiki_content, recipient)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def after_update(wiki_content)
|
def after_update(wiki_content)
|
||||||
if wiki_content.text_changed?
|
if wiki_content.text_changed? && Setting.notified_events.include?('wiki_content_updated')
|
||||||
Mailer.deliver_wiki_content_updated(wiki_content) if Setting.notified_events.include?('wiki_content_updated')
|
|
||||||
|
(wiki_content.recipients + wiki_content.page.wiki.watcher_recipients + wiki_content.page.watcher_recipients).uniq.each do |recipient|
|
||||||
|
Mailer.deliver_wiki_content_updated(wiki_content, recipient)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -74,7 +74,7 @@ class AdminControllerTest < ActionController::TestCase
|
|||||||
mail = ActionMailer::Base.deliveries.last
|
mail = ActionMailer::Base.deliveries.last
|
||||||
assert_kind_of TMail::Mail, mail
|
assert_kind_of TMail::Mail, mail
|
||||||
user = User.find(1)
|
user = User.find(1)
|
||||||
assert_equal [user.mail], mail.bcc
|
assert_equal [user.mail], mail.to
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_no_plugins
|
def test_no_plugins
|
||||||
|
@ -80,7 +80,7 @@ LOREM
|
|||||||
assert_equal Enumeration.find(2), document.category
|
assert_equal Enumeration.find(2), document.category
|
||||||
assert_equal 1, document.attachments.size
|
assert_equal 1, document.attachments.size
|
||||||
assert_equal 'testfile.txt', document.attachments.first.filename
|
assert_equal 'testfile.txt', document.attachments.first.filename
|
||||||
assert_equal 1, ActionMailer::Base.deliveries.size
|
assert_equal 2, ActionMailer::Base.deliveries.size
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_destroy
|
def test_destroy
|
||||||
|
@ -521,9 +521,8 @@ class IssuesControllerTest < ActionController::TestCase
|
|||||||
assert_equal [2, 3], issue.watcher_user_ids.sort
|
assert_equal [2, 3], issue.watcher_user_ids.sort
|
||||||
assert issue.watched_by?(User.find(3))
|
assert issue.watched_by?(User.find(3))
|
||||||
# Watchers notified
|
# Watchers notified
|
||||||
mail = ActionMailer::Base.deliveries.last
|
recipients = ActionMailer::Base.deliveries.collect(&:to)
|
||||||
assert_kind_of TMail::Mail, mail
|
assert recipients.flatten.include?(User.find(3).mail)
|
||||||
assert [mail.bcc, mail.cc].flatten.include?(User.find(3).mail)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_post_create_subissue
|
def test_post_create_subissue
|
||||||
@ -567,8 +566,8 @@ class IssuesControllerTest < ActionController::TestCase
|
|||||||
:custom_field_values => {'2' => 'Value for field 2'}}
|
:custom_field_values => {'2' => 'Value for field 2'}}
|
||||||
end
|
end
|
||||||
assert_redirected_to :controller => 'issues', :action => 'show', :id => Issue.last.id
|
assert_redirected_to :controller => 'issues', :action => 'show', :id => Issue.last.id
|
||||||
|
|
||||||
assert_equal 1, ActionMailer::Base.deliveries.size
|
assert_equal 2, ActionMailer::Base.deliveries.size
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_post_create_should_preserve_fields_values_on_validation_failure
|
def test_post_create_should_preserve_fields_values_on_validation_failure
|
||||||
@ -1017,7 +1016,7 @@ class IssuesControllerTest < ActionController::TestCase
|
|||||||
:priority_id => '6',
|
:priority_id => '6',
|
||||||
:category_id => '1' # no change
|
:category_id => '1' # no change
|
||||||
}
|
}
|
||||||
assert_equal 1, ActionMailer::Base.deliveries.size
|
assert_equal 2, ActionMailer::Base.deliveries.size
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_put_update_should_not_send_a_notification_if_send_notification_is_off
|
def test_put_update_should_not_send_a_notification_if_send_notification_is_off
|
||||||
@ -1240,7 +1239,7 @@ class IssuesControllerTest < ActionController::TestCase
|
|||||||
})
|
})
|
||||||
|
|
||||||
assert_response 302
|
assert_response 302
|
||||||
assert_equal 2, ActionMailer::Base.deliveries.size
|
assert_equal 5, ActionMailer::Base.deliveries.size
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_bulk_update_status
|
def test_bulk_update_status
|
||||||
|
@ -88,14 +88,19 @@ class MessagesControllerTest < ActionController::TestCase
|
|||||||
assert_equal 2, message.author_id
|
assert_equal 2, message.author_id
|
||||||
assert_equal 1, message.board_id
|
assert_equal 1, message.board_id
|
||||||
|
|
||||||
mail = ActionMailer::Base.deliveries.last
|
# author
|
||||||
|
mails_to_author = ActionMailer::Base.deliveries.select {|m| m.to.include?('jsmith@somenet.foo') }
|
||||||
|
assert_equal 1, mails_to_author.length
|
||||||
|
mail = mails_to_author.first
|
||||||
|
assert mail.to.include?('jsmith@somenet.foo')
|
||||||
assert_kind_of TMail::Mail, mail
|
assert_kind_of TMail::Mail, mail
|
||||||
assert_equal "[#{message.board.project.name} - #{message.board.name} - msg#{message.root.id}] Test created message", mail.subject
|
assert_equal "[#{message.board.project.name} - #{message.board.name} - msg#{message.root.id}] Test created message", mail.subject
|
||||||
assert mail.body.include?('Message body')
|
assert mail.body.include?('Message body')
|
||||||
# author
|
|
||||||
assert mail.bcc.include?('jsmith@somenet.foo')
|
|
||||||
# project member
|
# project member
|
||||||
assert mail.bcc.include?('dlopper@somenet.foo')
|
mails_to_member = ActionMailer::Base.deliveries.select {|m| m.to.include?('dlopper@somenet.foo') }
|
||||||
|
assert_equal 1, mails_to_member.length
|
||||||
|
assert mails_to_member.first.to.include?('dlopper@somenet.foo')
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_get_edit
|
def test_get_edit
|
||||||
|
@ -76,7 +76,7 @@ class NewsControllerTest < ActionController::TestCase
|
|||||||
assert_equal 'This is the description', news.description
|
assert_equal 'This is the description', news.description
|
||||||
assert_equal User.find(2), news.author
|
assert_equal User.find(2), news.author
|
||||||
assert_equal Project.find(1), news.project
|
assert_equal Project.find(1), news.project
|
||||||
assert_equal 1, ActionMailer::Base.deliveries.size
|
assert_equal 2, ActionMailer::Base.deliveries.size
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_get_edit
|
def test_get_edit
|
||||||
|
@ -179,7 +179,7 @@ class UsersControllerTest < ActionController::TestCase
|
|||||||
|
|
||||||
mail = ActionMailer::Base.deliveries.last
|
mail = ActionMailer::Base.deliveries.last
|
||||||
assert_not_nil mail
|
assert_not_nil mail
|
||||||
assert_equal [user.mail], mail.bcc
|
assert_equal [user.mail], mail.to
|
||||||
assert mail.body.include?('secret')
|
assert mail.body.include?('secret')
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -240,7 +240,7 @@ class UsersControllerTest < ActionController::TestCase
|
|||||||
assert u.reload.active?
|
assert u.reload.active?
|
||||||
mail = ActionMailer::Base.deliveries.last
|
mail = ActionMailer::Base.deliveries.last
|
||||||
assert_not_nil mail
|
assert_not_nil mail
|
||||||
assert_equal ['foo.bar@somenet.foo'], mail.bcc
|
assert_equal ['foo.bar@somenet.foo'], mail.to
|
||||||
assert mail.body.include?(ll('fr', :notice_account_activated))
|
assert mail.body.include?(ll('fr', :notice_account_activated))
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -254,7 +254,7 @@ class UsersControllerTest < ActionController::TestCase
|
|||||||
|
|
||||||
mail = ActionMailer::Base.deliveries.last
|
mail = ActionMailer::Base.deliveries.last
|
||||||
assert_not_nil mail
|
assert_not_nil mail
|
||||||
assert_equal [u.mail], mail.bcc
|
assert_equal [u.mail], mail.to
|
||||||
assert mail.body.include?('newpass')
|
assert mail.body.include?('newpass')
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -37,7 +37,7 @@ class ChangesetTest < ActiveSupport::TestCase
|
|||||||
fixed = Issue.find(1)
|
fixed = Issue.find(1)
|
||||||
assert fixed.closed?
|
assert fixed.closed?
|
||||||
assert_equal 90, fixed.done_ratio
|
assert_equal 90, fixed.done_ratio
|
||||||
assert_equal 1, ActionMailer::Base.deliveries.size
|
assert_equal 2, ActionMailer::Base.deliveries.size
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_ref_keywords
|
def test_ref_keywords
|
||||||
|
@ -27,7 +27,7 @@ class DocumentTest < ActiveSupport::TestCase
|
|||||||
doc = Document.new(:project => Project.find(1), :title => 'New document', :category => Enumeration.find_by_name('User documentation'))
|
doc = Document.new(:project => Project.find(1), :title => 'New document', :category => Enumeration.find_by_name('User documentation'))
|
||||||
|
|
||||||
assert doc.save
|
assert doc.save
|
||||||
assert_equal 1, ActionMailer::Base.deliveries.size
|
assert_equal 2, ActionMailer::Base.deliveries.size
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_create_with_default_category
|
def test_create_with_default_category
|
||||||
|
@ -599,7 +599,7 @@ class IssueTest < ActiveSupport::TestCase
|
|||||||
issue = Issue.new(:project_id => 1, :tracker_id => 1, :author_id => 3, :status_id => 1, :priority => IssuePriority.all.first, :subject => 'test_create', :estimated_hours => '1:30')
|
issue = Issue.new(:project_id => 1, :tracker_id => 1, :author_id => 3, :status_id => 1, :priority => IssuePriority.all.first, :subject => 'test_create', :estimated_hours => '1:30')
|
||||||
|
|
||||||
assert issue.save
|
assert issue.save
|
||||||
assert_equal 1, ActionMailer::Base.deliveries.size
|
assert_equal 2, ActionMailer::Base.deliveries.size
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_stale_issue_should_not_send_email_notification
|
def test_stale_issue_should_not_send_email_notification
|
||||||
@ -610,7 +610,7 @@ class IssueTest < ActiveSupport::TestCase
|
|||||||
issue.init_journal(User.find(1))
|
issue.init_journal(User.find(1))
|
||||||
issue.subject = 'Subjet update'
|
issue.subject = 'Subjet update'
|
||||||
assert issue.save
|
assert issue.save
|
||||||
assert_equal 1, ActionMailer::Base.deliveries.size
|
assert_equal 2, ActionMailer::Base.deliveries.size
|
||||||
ActionMailer::Base.deliveries.clear
|
ActionMailer::Base.deliveries.clear
|
||||||
|
|
||||||
stale.init_journal(User.find(1))
|
stale.init_journal(User.find(1))
|
||||||
|
@ -25,7 +25,7 @@ class JournalObserverTest < ActiveSupport::TestCase
|
|||||||
context "#after_create for 'issue_updated'" do
|
context "#after_create for 'issue_updated'" do
|
||||||
should "should send a notification when configured as a notification" do
|
should "should send a notification when configured as a notification" do
|
||||||
Setting.notified_events = ['issue_updated']
|
Setting.notified_events = ['issue_updated']
|
||||||
assert_difference('ActionMailer::Base.deliveries.size') do
|
assert_difference('ActionMailer::Base.deliveries.size', 2) do
|
||||||
@issue.init_journal(@user)
|
@issue.init_journal(@user)
|
||||||
@issue.subject = "A change to the issue"
|
@issue.subject = "A change to the issue"
|
||||||
assert @issue.save
|
assert @issue.save
|
||||||
@ -46,7 +46,7 @@ class JournalObserverTest < ActiveSupport::TestCase
|
|||||||
context "#after_create for 'issue_note_added'" do
|
context "#after_create for 'issue_note_added'" do
|
||||||
should "should send a notification when configured as a notification" do
|
should "should send a notification when configured as a notification" do
|
||||||
Setting.notified_events = ['issue_note_added']
|
Setting.notified_events = ['issue_note_added']
|
||||||
assert_difference('ActionMailer::Base.deliveries.size') do
|
assert_difference('ActionMailer::Base.deliveries.size', 2) do
|
||||||
@issue.init_journal(@user, 'This update has a note')
|
@issue.init_journal(@user, 'This update has a note')
|
||||||
assert @issue.save
|
assert @issue.save
|
||||||
end
|
end
|
||||||
@ -66,7 +66,7 @@ class JournalObserverTest < ActiveSupport::TestCase
|
|||||||
context "#after_create for 'issue_status_updated'" do
|
context "#after_create for 'issue_status_updated'" do
|
||||||
should "should send a notification when configured as a notification" do
|
should "should send a notification when configured as a notification" do
|
||||||
Setting.notified_events = ['issue_status_updated']
|
Setting.notified_events = ['issue_status_updated']
|
||||||
assert_difference('ActionMailer::Base.deliveries.size') do
|
assert_difference('ActionMailer::Base.deliveries.size', 2) do
|
||||||
@issue.init_journal(@user)
|
@issue.init_journal(@user)
|
||||||
@issue.status = IssueStatus.generate!
|
@issue.status = IssueStatus.generate!
|
||||||
assert @issue.save
|
assert @issue.save
|
||||||
@ -89,7 +89,7 @@ class JournalObserverTest < ActiveSupport::TestCase
|
|||||||
context "#after_create for 'issue_priority_updated'" do
|
context "#after_create for 'issue_priority_updated'" do
|
||||||
should "should send a notification when configured as a notification" do
|
should "should send a notification when configured as a notification" do
|
||||||
Setting.notified_events = ['issue_priority_updated']
|
Setting.notified_events = ['issue_priority_updated']
|
||||||
assert_difference('ActionMailer::Base.deliveries.size') do
|
assert_difference('ActionMailer::Base.deliveries.size', 2) do
|
||||||
@issue.init_journal(@user)
|
@issue.init_journal(@user)
|
||||||
@issue.priority = IssuePriority.generate!
|
@issue.priority = IssuePriority.generate!
|
||||||
assert @issue.save
|
assert @issue.save
|
||||||
|
@ -45,7 +45,7 @@ class JournalTest < ActiveSupport::TestCase
|
|||||||
assert_equal 0, ActionMailer::Base.deliveries.size
|
assert_equal 0, ActionMailer::Base.deliveries.size
|
||||||
issue.reload
|
issue.reload
|
||||||
issue.update_attribute(:subject, "New subject to trigger automatic journal entry")
|
issue.update_attribute(:subject, "New subject to trigger automatic journal entry")
|
||||||
assert_equal 1, ActionMailer::Base.deliveries.size
|
assert_equal 2, ActionMailer::Base.deliveries.size
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_create_should_not_send_email_notification_if_told_not_to
|
def test_create_should_not_send_email_notification_if_told_not_to
|
||||||
|
@ -144,14 +144,14 @@ class Redmine::Hook::ManagerTest < ActiveSupport::TestCase
|
|||||||
issue = Issue.find(1)
|
issue = Issue.find(1)
|
||||||
|
|
||||||
ActionMailer::Base.deliveries.clear
|
ActionMailer::Base.deliveries.clear
|
||||||
Mailer.deliver_issue_add(issue)
|
Mailer.deliver_issue_add(issue, 'jsmith@somenet.foo')
|
||||||
mail = ActionMailer::Base.deliveries.last
|
mail = ActionMailer::Base.deliveries.last
|
||||||
|
|
||||||
@hook_module.add_listener(TestLinkToHook)
|
@hook_module.add_listener(TestLinkToHook)
|
||||||
hook_helper.call_hook(:view_layouts_base_html_head)
|
hook_helper.call_hook(:view_layouts_base_html_head)
|
||||||
|
|
||||||
ActionMailer::Base.deliveries.clear
|
ActionMailer::Base.deliveries.clear
|
||||||
Mailer.deliver_issue_add(issue)
|
Mailer.deliver_issue_add(issue, 'jsmith@somenet.foo')
|
||||||
mail2 = ActionMailer::Base.deliveries.last
|
mail2 = ActionMailer::Base.deliveries.last
|
||||||
|
|
||||||
assert_equal mail.body, mail2.body
|
assert_equal mail.body, mail2.body
|
||||||
|
@ -333,7 +333,7 @@ class MailHandlerTest < ActiveSupport::TestCase
|
|||||||
ActionMailer::Base.deliveries.clear
|
ActionMailer::Base.deliveries.clear
|
||||||
journal = submit_email('ticket_reply.eml')
|
journal = submit_email('ticket_reply.eml')
|
||||||
assert journal.is_a?(Journal)
|
assert journal.is_a?(Journal)
|
||||||
assert_equal 1, ActionMailer::Base.deliveries.size
|
assert_equal 3, ActionMailer::Base.deliveries.size
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_add_issue_note_should_not_set_defaults
|
def test_add_issue_note_should_not_set_defaults
|
||||||
|
@ -19,6 +19,7 @@ class MailerTest < ActiveSupport::TestCase
|
|||||||
fixtures :all
|
fixtures :all
|
||||||
|
|
||||||
def setup
|
def setup
|
||||||
|
User.current = nil # Clear current user in case of tests setting it and leaking data
|
||||||
ActionMailer::Base.deliveries.clear
|
ActionMailer::Base.deliveries.clear
|
||||||
Setting.host_name = 'mydomain.foo'
|
Setting.host_name = 'mydomain.foo'
|
||||||
Setting.protocol = 'http'
|
Setting.protocol = 'http'
|
||||||
@ -30,8 +31,8 @@ class MailerTest < ActiveSupport::TestCase
|
|||||||
Setting.protocol = 'https'
|
Setting.protocol = 'https'
|
||||||
|
|
||||||
journal = Journal.find(2)
|
journal = Journal.find(2)
|
||||||
assert Mailer.deliver_issue_edit(journal)
|
assert Mailer.deliver_issue_edit(journal,'dlopper@somenet.foo')
|
||||||
|
|
||||||
mail = ActionMailer::Base.deliveries.last
|
mail = ActionMailer::Base.deliveries.last
|
||||||
assert_kind_of TMail::Mail, mail
|
assert_kind_of TMail::Mail, mail
|
||||||
|
|
||||||
@ -52,8 +53,8 @@ class MailerTest < ActiveSupport::TestCase
|
|||||||
Redmine::Utils.relative_url_root = '/rdm'
|
Redmine::Utils.relative_url_root = '/rdm'
|
||||||
|
|
||||||
journal = Journal.find(2)
|
journal = Journal.find(2)
|
||||||
assert Mailer.deliver_issue_edit(journal)
|
assert Mailer.deliver_issue_edit(journal,'dlopper@somenet.foo')
|
||||||
|
|
||||||
mail = ActionMailer::Base.deliveries.last
|
mail = ActionMailer::Base.deliveries.last
|
||||||
assert_kind_of TMail::Mail, mail
|
assert_kind_of TMail::Mail, mail
|
||||||
|
|
||||||
@ -77,8 +78,8 @@ class MailerTest < ActiveSupport::TestCase
|
|||||||
Redmine::Utils.relative_url_root = nil
|
Redmine::Utils.relative_url_root = nil
|
||||||
|
|
||||||
journal = Journal.find(2)
|
journal = Journal.find(2)
|
||||||
assert Mailer.deliver_issue_edit(journal)
|
assert Mailer.deliver_issue_edit(journal,'dlopper@somenet.foo')
|
||||||
|
|
||||||
mail = ActionMailer::Base.deliveries.last
|
mail = ActionMailer::Base.deliveries.last
|
||||||
assert_kind_of TMail::Mail, mail
|
assert_kind_of TMail::Mail, mail
|
||||||
|
|
||||||
@ -97,7 +98,7 @@ class MailerTest < ActiveSupport::TestCase
|
|||||||
|
|
||||||
def test_email_headers
|
def test_email_headers
|
||||||
issue = Issue.find(1)
|
issue = Issue.find(1)
|
||||||
Mailer.deliver_issue_add(issue)
|
Mailer.deliver_issue_add(issue,'dlopper@somenet.foo')
|
||||||
mail = ActionMailer::Base.deliveries.last
|
mail = ActionMailer::Base.deliveries.last
|
||||||
assert_not_nil mail
|
assert_not_nil mail
|
||||||
assert_equal 'bulk', mail.header_string('Precedence')
|
assert_equal 'bulk', mail.header_string('Precedence')
|
||||||
@ -107,7 +108,7 @@ class MailerTest < ActiveSupport::TestCase
|
|||||||
def test_plain_text_mail
|
def test_plain_text_mail
|
||||||
Setting.plain_text_mail = 1
|
Setting.plain_text_mail = 1
|
||||||
journal = Journal.find(2)
|
journal = Journal.find(2)
|
||||||
Mailer.deliver_issue_edit(journal)
|
Mailer.deliver_issue_edit(journal,'dlopper@somenet.foo')
|
||||||
mail = ActionMailer::Base.deliveries.last
|
mail = ActionMailer::Base.deliveries.last
|
||||||
assert_equal "text/plain", mail.content_type
|
assert_equal "text/plain", mail.content_type
|
||||||
assert_equal 0, mail.parts.size
|
assert_equal 0, mail.parts.size
|
||||||
@ -117,7 +118,7 @@ class MailerTest < ActiveSupport::TestCase
|
|||||||
def test_html_mail
|
def test_html_mail
|
||||||
Setting.plain_text_mail = 0
|
Setting.plain_text_mail = 0
|
||||||
journal = Journal.find(2)
|
journal = Journal.find(2)
|
||||||
Mailer.deliver_issue_edit(journal)
|
Mailer.deliver_issue_edit(journal,'dlopper@somenet.foo')
|
||||||
mail = ActionMailer::Base.deliveries.last
|
mail = ActionMailer::Base.deliveries.last
|
||||||
assert_equal 2, mail.parts.size
|
assert_equal 2, mail.parts.size
|
||||||
assert mail.encoded.include?('href')
|
assert mail.encoded.include?('href')
|
||||||
@ -141,21 +142,21 @@ class MailerTest < ActiveSupport::TestCase
|
|||||||
user.pref[:no_self_notified] = false
|
user.pref[:no_self_notified] = false
|
||||||
user.pref.save
|
user.pref.save
|
||||||
User.current = user
|
User.current = user
|
||||||
Mailer.deliver_news_added(news.reload)
|
Mailer.deliver_news_added(news.reload, user.mail)
|
||||||
assert_equal 1, last_email.bcc.size
|
assert_equal 1, last_email.to.size
|
||||||
|
|
||||||
# nobody to notify
|
# nobody to notify
|
||||||
user.pref[:no_self_notified] = true
|
user.pref[:no_self_notified] = true
|
||||||
user.pref.save
|
user.pref.save
|
||||||
User.current = user
|
User.current = user
|
||||||
ActionMailer::Base.deliveries.clear
|
ActionMailer::Base.deliveries.clear
|
||||||
Mailer.deliver_news_added(news.reload)
|
Mailer.deliver_news_added(news.reload, user.mail)
|
||||||
assert ActionMailer::Base.deliveries.empty?
|
assert ActionMailer::Base.deliveries.empty?
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_issue_add_message_id
|
def test_issue_add_message_id
|
||||||
issue = Issue.find(1)
|
issue = Issue.find(1)
|
||||||
Mailer.deliver_issue_add(issue)
|
Mailer.deliver_issue_add(issue, 'dlopper@somenet.foo')
|
||||||
mail = ActionMailer::Base.deliveries.last
|
mail = ActionMailer::Base.deliveries.last
|
||||||
assert_not_nil mail
|
assert_not_nil mail
|
||||||
assert_equal Mailer.message_id_for(issue), mail.message_id
|
assert_equal Mailer.message_id_for(issue), mail.message_id
|
||||||
@ -164,7 +165,7 @@ class MailerTest < ActiveSupport::TestCase
|
|||||||
|
|
||||||
def test_issue_edit_message_id
|
def test_issue_edit_message_id
|
||||||
journal = Journal.find(1)
|
journal = Journal.find(1)
|
||||||
Mailer.deliver_issue_edit(journal)
|
Mailer.deliver_issue_edit(journal, "jsmith@somenet.foo")
|
||||||
mail = ActionMailer::Base.deliveries.last
|
mail = ActionMailer::Base.deliveries.last
|
||||||
assert_not_nil mail
|
assert_not_nil mail
|
||||||
assert_equal Mailer.message_id_for(journal), mail.message_id
|
assert_equal Mailer.message_id_for(journal), mail.message_id
|
||||||
@ -173,7 +174,7 @@ class MailerTest < ActiveSupport::TestCase
|
|||||||
|
|
||||||
def test_message_posted_message_id
|
def test_message_posted_message_id
|
||||||
message = Message.find(1)
|
message = Message.find(1)
|
||||||
Mailer.deliver_message_posted(message)
|
Mailer.deliver_message_posted(message, "jsmith@somenet.foo")
|
||||||
mail = ActionMailer::Base.deliveries.last
|
mail = ActionMailer::Base.deliveries.last
|
||||||
assert_not_nil mail
|
assert_not_nil mail
|
||||||
assert_equal Mailer.message_id_for(message), mail.message_id
|
assert_equal Mailer.message_id_for(message), mail.message_id
|
||||||
@ -186,7 +187,7 @@ class MailerTest < ActiveSupport::TestCase
|
|||||||
|
|
||||||
def test_reply_posted_message_id
|
def test_reply_posted_message_id
|
||||||
message = Message.find(3)
|
message = Message.find(3)
|
||||||
Mailer.deliver_message_posted(message)
|
Mailer.deliver_message_posted(message, "jsmith@somenet.foo")
|
||||||
mail = ActionMailer::Base.deliveries.last
|
mail = ActionMailer::Base.deliveries.last
|
||||||
assert_not_nil mail
|
assert_not_nil mail
|
||||||
assert_equal Mailer.message_id_for(message), mail.message_id
|
assert_equal Mailer.message_id_for(message), mail.message_id
|
||||||
@ -204,36 +205,10 @@ class MailerTest < ActiveSupport::TestCase
|
|||||||
@issue = Issue.find(1)
|
@issue = Issue.find(1)
|
||||||
end
|
end
|
||||||
|
|
||||||
should "notify project members" do
|
should "send one email per recipient" do
|
||||||
assert Mailer.deliver_issue_add(@issue)
|
assert Mailer.deliver_issue_add(@issue, 'dlopper@somenet.foo')
|
||||||
assert last_email.bcc.include?('dlopper@somenet.foo')
|
assert_equal 1, ActionMailer::Base.deliveries.length
|
||||||
end
|
assert_equal ['dlopper@somenet.foo'], last_email.to
|
||||||
|
|
||||||
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)
|
|
||||||
# minimal email notification options
|
|
||||||
user.pref[:no_self_notified] = '1'
|
|
||||||
user.pref.save
|
|
||||||
user.mail_notification = false
|
|
||||||
user.save
|
|
||||||
|
|
||||||
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
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -242,7 +217,7 @@ class MailerTest < ActiveSupport::TestCase
|
|||||||
issue = Issue.find(1)
|
issue = Issue.find(1)
|
||||||
valid_languages.each do |lang|
|
valid_languages.each do |lang|
|
||||||
Setting.default_language = lang.to_s
|
Setting.default_language = lang.to_s
|
||||||
assert Mailer.deliver_issue_add(issue)
|
assert Mailer.deliver_issue_add(issue, 'dlopper@somenet.foo')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -250,7 +225,7 @@ class MailerTest < ActiveSupport::TestCase
|
|||||||
journal = Journal.find(1)
|
journal = Journal.find(1)
|
||||||
valid_languages.each do |lang|
|
valid_languages.each do |lang|
|
||||||
Setting.default_language = lang.to_s
|
Setting.default_language = lang.to_s
|
||||||
assert Mailer.deliver_issue_edit(journal)
|
assert Mailer.deliver_issue_edit(journal, "jsmith@somenet.foo")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -258,7 +233,7 @@ class MailerTest < ActiveSupport::TestCase
|
|||||||
document = Document.find(1)
|
document = Document.find(1)
|
||||||
valid_languages.each do |lang|
|
valid_languages.each do |lang|
|
||||||
Setting.default_language = lang.to_s
|
Setting.default_language = lang.to_s
|
||||||
assert Mailer.deliver_document_added(document)
|
assert Mailer.deliver_document_added(document, "jsmith@somenet.foo")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -266,35 +241,27 @@ class MailerTest < ActiveSupport::TestCase
|
|||||||
attachements = [ Attachment.find_by_container_type('Document') ]
|
attachements = [ Attachment.find_by_container_type('Document') ]
|
||||||
valid_languages.each do |lang|
|
valid_languages.each do |lang|
|
||||||
Setting.default_language = lang.to_s
|
Setting.default_language = lang.to_s
|
||||||
assert Mailer.deliver_attachments_added(attachements)
|
assert Mailer.deliver_attachments_added(attachements, "jsmith@somenet.foo")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_version_file_added
|
def test_version_file_added
|
||||||
attachements = [ Attachment.find_by_container_type('Version') ]
|
attachements = [ Attachment.find_by_container_type('Version') ]
|
||||||
assert Mailer.deliver_attachments_added(attachements)
|
assert Mailer.deliver_attachments_added(attachements, "jsmith@somenet.foo")
|
||||||
assert_not_nil last_email.bcc
|
assert_equal ["jsmith@somenet.foo"], last_email.to
|
||||||
assert last_email.bcc.any?
|
|
||||||
assert_select_email do
|
|
||||||
assert_select "a[href=?]", "http://mydomain.foo/projects/ecookbook/files"
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_project_file_added
|
def test_project_file_added
|
||||||
attachements = [ Attachment.find_by_container_type('Project') ]
|
attachements = [ Attachment.find_by_container_type('Project') ]
|
||||||
assert Mailer.deliver_attachments_added(attachements)
|
assert Mailer.deliver_attachments_added(attachements, "jsmith@somenet.foo")
|
||||||
assert_not_nil last_email.bcc
|
assert_equal ["jsmith@somenet.foo"], last_email.to
|
||||||
assert last_email.bcc.any?
|
|
||||||
assert_select_email do
|
|
||||||
assert_select "a[href=?]", "http://mydomain.foo/projects/ecookbook/files"
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_news_added
|
def test_news_added
|
||||||
news = News.find(:first)
|
news = News.find(:first)
|
||||||
valid_languages.each do |lang|
|
valid_languages.each do |lang|
|
||||||
Setting.default_language = lang.to_s
|
Setting.default_language = lang.to_s
|
||||||
assert Mailer.deliver_news_added(news)
|
assert Mailer.deliver_news_added(news, "jsmith@somenet.foo")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -308,11 +275,9 @@ class MailerTest < ActiveSupport::TestCase
|
|||||||
|
|
||||||
def test_message_posted
|
def test_message_posted
|
||||||
message = Message.find(:first)
|
message = Message.find(:first)
|
||||||
recipients = ([message.root] + message.root.children).collect {|m| m.author.mail if m.author}
|
|
||||||
recipients = recipients.compact.uniq
|
|
||||||
valid_languages.each do |lang|
|
valid_languages.each do |lang|
|
||||||
Setting.default_language = lang.to_s
|
Setting.default_language = lang.to_s
|
||||||
assert Mailer.deliver_message_posted(message)
|
assert Mailer.deliver_message_posted(message, "jsmith@somenet.foo")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -321,7 +286,7 @@ class MailerTest < ActiveSupport::TestCase
|
|||||||
valid_languages.each do |lang|
|
valid_languages.each do |lang|
|
||||||
Setting.default_language = lang.to_s
|
Setting.default_language = lang.to_s
|
||||||
assert_difference 'ActionMailer::Base.deliveries.size' do
|
assert_difference 'ActionMailer::Base.deliveries.size' do
|
||||||
assert Mailer.deliver_wiki_content_added(content)
|
assert Mailer.deliver_wiki_content_added(content, "jsmith@somenet.foo")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -331,7 +296,7 @@ class MailerTest < ActiveSupport::TestCase
|
|||||||
valid_languages.each do |lang|
|
valid_languages.each do |lang|
|
||||||
Setting.default_language = lang.to_s
|
Setting.default_language = lang.to_s
|
||||||
assert_difference 'ActionMailer::Base.deliveries.size' do
|
assert_difference 'ActionMailer::Base.deliveries.size' do
|
||||||
assert Mailer.deliver_wiki_content_updated(content)
|
assert Mailer.deliver_wiki_content_updated(content, "jsmith@somenet.foo")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -381,18 +346,18 @@ class MailerTest < ActiveSupport::TestCase
|
|||||||
Mailer.reminders(:days => 42)
|
Mailer.reminders(:days => 42)
|
||||||
assert_equal 1, ActionMailer::Base.deliveries.size
|
assert_equal 1, ActionMailer::Base.deliveries.size
|
||||||
mail = ActionMailer::Base.deliveries.last
|
mail = ActionMailer::Base.deliveries.last
|
||||||
assert mail.bcc.include?('dlopper@somenet.foo')
|
assert mail.to.include?('dlopper@somenet.foo')
|
||||||
assert mail.body.include?('Bug #3: Error 281 when updating a recipe')
|
assert mail.body.include?('Bug #3: Error 281 when updating a recipe')
|
||||||
assert_equal '1 issue(s) due in the next 42 days', mail.subject
|
assert_equal '1 issue(s) due in the next 42 days', mail.subject
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_reminders_for_users
|
def test_reminders_for_users
|
||||||
Mailer.reminders(:days => 42, :users => ['5'])
|
Mailer.reminders(:days => 42, :users => ['5'])
|
||||||
assert_equal 0, ActionMailer::Base.deliveries.size # No mail for dlopper
|
assert_equal 0, ActionMailer::Base.deliveries.size
|
||||||
Mailer.reminders(:days => 42, :users => ['3'])
|
Mailer.reminders(:days => 42, :users => ['3'])
|
||||||
assert_equal 1, ActionMailer::Base.deliveries.size # No mail for dlopper
|
assert_equal 1, ActionMailer::Base.deliveries.size
|
||||||
mail = ActionMailer::Base.deliveries.last
|
mail = ActionMailer::Base.deliveries.last
|
||||||
assert mail.bcc.include?('dlopper@somenet.foo')
|
assert mail.to.include?('dlopper@somenet.foo')
|
||||||
assert mail.body.include?('Bug #3: Error 281 when updating a recipe')
|
assert mail.body.include?('Bug #3: Error 281 when updating a recipe')
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
require File.expand_path('../../test_helper', __FILE__)
|
require File.expand_path('../../test_helper', __FILE__)
|
||||||
|
|
||||||
class MessageTest < ActiveSupport::TestCase
|
class MessageTest < ActiveSupport::TestCase
|
||||||
fixtures :projects, :roles, :members, :member_roles, :boards, :messages, :users, :watchers
|
fixtures :all
|
||||||
|
|
||||||
def setup
|
def setup
|
||||||
Setting.notified_events = ['message_posted']
|
Setting.notified_events = ['message_posted']
|
||||||
@ -142,7 +142,7 @@ class MessageTest < ActiveSupport::TestCase
|
|||||||
end
|
end
|
||||||
|
|
||||||
test "email notifications for creating a message" do
|
test "email notifications for creating a message" do
|
||||||
assert_difference("ActionMailer::Base.deliveries.count") do
|
assert_difference("ActionMailer::Base.deliveries.count", 3) do
|
||||||
message = Message.new(:board => @board, :subject => 'Test message', :content => 'Test message content', :author => @user)
|
message = Message.new(:board => @board, :subject => 'Test message', :content => 'Test message content', :author => @user)
|
||||||
assert message.save
|
assert message.save
|
||||||
end
|
end
|
||||||
|
@ -30,7 +30,7 @@ class NewsTest < ActiveSupport::TestCase
|
|||||||
news = Project.find(:first).news.new(valid_news)
|
news = Project.find(:first).news.new(valid_news)
|
||||||
|
|
||||||
assert news.save
|
assert news.save
|
||||||
assert_equal 1, ActionMailer::Base.deliveries.size
|
assert_equal 2, ActionMailer::Base.deliveries.size
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_should_include_news_for_projects_with_news_enabled
|
def test_should_include_news_for_projects_with_news_enabled
|
||||||
|
@ -96,9 +96,9 @@ class RepositoryTest < ActiveSupport::TestCase
|
|||||||
journal = fixed_issue.journals.last
|
journal = fixed_issue.journals.last
|
||||||
assert_equal User.find_by_login('dlopper'), journal.user
|
assert_equal User.find_by_login('dlopper'), journal.user
|
||||||
assert_equal 'Applied in changeset r2.', journal.notes
|
assert_equal 'Applied in changeset r2.', journal.notes
|
||||||
|
|
||||||
# 2 email notifications
|
# 2 email notifications to 5 users
|
||||||
assert_equal 2, ActionMailer::Base.deliveries.size
|
assert_equal 5, ActionMailer::Base.deliveries.size
|
||||||
mail = ActionMailer::Base.deliveries.first
|
mail = ActionMailer::Base.deliveries.first
|
||||||
assert_kind_of TMail::Mail, mail
|
assert_kind_of TMail::Mail, mail
|
||||||
assert mail.subject.starts_with?("[#{fixed_issue.project.name} - #{fixed_issue.tracker.name} ##{fixed_issue.id}]")
|
assert mail.subject.starts_with?("[#{fixed_issue.project.name} - #{fixed_issue.tracker.name} ##{fixed_issue.id}]")
|
||||||
|
@ -43,8 +43,8 @@ class WikiContentTest < ActiveSupport::TestCase
|
|||||||
page = WikiPage.new(:wiki => @wiki, :title => "A new page")
|
page = WikiPage.new(:wiki => @wiki, :title => "A new page")
|
||||||
page.content = WikiContent.new(:text => "Content text", :author => User.find(1), :comments => "My comment")
|
page.content = WikiContent.new(:text => "Content text", :author => User.find(1), :comments => "My comment")
|
||||||
assert page.save
|
assert page.save
|
||||||
|
|
||||||
assert_equal 1, ActionMailer::Base.deliveries.size
|
assert_equal 2, ActionMailer::Base.deliveries.size
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_update
|
def test_update
|
||||||
@ -63,8 +63,8 @@ class WikiContentTest < ActiveSupport::TestCase
|
|||||||
content = @page.content
|
content = @page.content
|
||||||
content.text = "My new content"
|
content.text = "My new content"
|
||||||
assert content.save
|
assert content.save
|
||||||
|
|
||||||
assert_equal 1, ActionMailer::Base.deliveries.size
|
assert_equal 2, ActionMailer::Base.deliveries.size
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_fetch_history
|
def test_fetch_history
|
||||||
|
Loading…
x
Reference in New Issue
Block a user