code clean up MailHandlerTest unit test.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@5559 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Toshi MARUYAMA 2011-04-28 07:09:52 +00:00
parent d3737db6b5
commit d5b97d49c6
1 changed files with 26 additions and 35 deletions

View File

@ -20,7 +20,7 @@
require File.expand_path('../../test_helper', __FILE__) require File.expand_path('../../test_helper', __FILE__)
class MailHandlerTest < ActiveSupport::TestCase class MailHandlerTest < ActiveSupport::TestCase
fixtures :users, :projects, fixtures :users, :projects,
:enabled_modules, :enabled_modules,
:roles, :roles,
:members, :members,
@ -39,14 +39,14 @@ class MailHandlerTest < ActiveSupport::TestCase
:custom_fields_projects, :custom_fields_projects,
:boards, :boards,
:messages :messages
FIXTURES_PATH = File.dirname(__FILE__) + '/../fixtures/mail_handler' FIXTURES_PATH = File.dirname(__FILE__) + '/../fixtures/mail_handler'
def setup def setup
ActionMailer::Base.deliveries.clear ActionMailer::Base.deliveries.clear
Setting.notified_events = Redmine::Notifiable.all.collect(&:name) Setting.notified_events = Redmine::Notifiable.all.collect(&:name)
end end
def test_add_issue def test_add_issue
ActionMailer::Base.deliveries.clear ActionMailer::Base.deliveries.clear
# This email contains: 'Project: onlinestore' # This email contains: 'Project: onlinestore'
@ -76,7 +76,7 @@ class MailHandlerTest < ActiveSupport::TestCase
assert_not_nil mail assert_not_nil mail
assert mail.subject.include?('New ticket on a given project') assert mail.subject.include?('New ticket on a given project')
end end
def test_add_issue_with_default_tracker def test_add_issue_with_default_tracker
# This email contains: 'Project: onlinestore' # This email contains: 'Project: onlinestore'
issue = submit_email('ticket_on_given_project.eml', :issue => {:tracker => 'Support request'}) issue = submit_email('ticket_on_given_project.eml', :issue => {:tracker => 'Support request'})
@ -95,7 +95,7 @@ class MailHandlerTest < ActiveSupport::TestCase
assert_equal Project.find(2), issue.project assert_equal Project.find(2), issue.project
assert_equal IssueStatus.find_by_name("Resolved"), issue.status assert_equal IssueStatus.find_by_name("Resolved"), issue.status
end end
def test_add_issue_with_attributes_override def test_add_issue_with_attributes_override
issue = submit_email('ticket_with_attributes.eml', :allow_override => 'tracker,category,priority') issue = submit_email('ticket_with_attributes.eml', :allow_override => 'tracker,category,priority')
assert issue.is_a?(Issue) assert issue.is_a?(Issue)
@ -109,7 +109,7 @@ class MailHandlerTest < ActiveSupport::TestCase
assert_equal 'Urgent', issue.priority.to_s assert_equal 'Urgent', issue.priority.to_s
assert issue.description.include?('Lorem ipsum dolor sit amet, consectetuer adipiscing elit.') assert issue.description.include?('Lorem ipsum dolor sit amet, consectetuer adipiscing elit.')
end end
def test_add_issue_with_partial_attributes_override def test_add_issue_with_partial_attributes_override
issue = submit_email('ticket_with_attributes.eml', :issue => {:priority => 'High'}, :allow_override => ['tracker']) issue = submit_email('ticket_with_attributes.eml', :issue => {:priority => 'High'}, :allow_override => ['tracker'])
assert issue.is_a?(Issue) assert issue.is_a?(Issue)
@ -123,7 +123,7 @@ class MailHandlerTest < ActiveSupport::TestCase
assert_equal 'High', issue.priority.to_s assert_equal 'High', issue.priority.to_s
assert issue.description.include?('Lorem ipsum dolor sit amet, consectetuer adipiscing elit.') assert issue.description.include?('Lorem ipsum dolor sit amet, consectetuer adipiscing elit.')
end end
def test_add_issue_with_spaces_between_attribute_and_separator def test_add_issue_with_spaces_between_attribute_and_separator
issue = submit_email('ticket_with_spaces_between_attribute_and_separator.eml', :allow_override => 'tracker,category,priority') issue = submit_email('ticket_with_spaces_between_attribute_and_separator.eml', :allow_override => 'tracker,category,priority')
assert issue.is_a?(Issue) assert issue.is_a?(Issue)
@ -138,7 +138,6 @@ class MailHandlerTest < ActiveSupport::TestCase
assert issue.description.include?('Lorem ipsum dolor sit amet, consectetuer adipiscing elit.') assert issue.description.include?('Lorem ipsum dolor sit amet, consectetuer adipiscing elit.')
end end
def test_add_issue_with_attachment_to_specific_project def test_add_issue_with_attachment_to_specific_project
issue = submit_email('ticket_with_attachment.eml', :issue => {:project => 'onlinestore'}) issue = submit_email('ticket_with_attachment.eml', :issue => {:project => 'onlinestore'})
assert issue.is_a?(Issue) assert issue.is_a?(Issue)
@ -154,7 +153,7 @@ class MailHandlerTest < ActiveSupport::TestCase
assert_equal 'image/jpeg', issue.attachments.first.content_type assert_equal 'image/jpeg', issue.attachments.first.content_type
assert_equal 10790, issue.attachments.first.filesize assert_equal 10790, issue.attachments.first.filesize
end end
def test_add_issue_with_custom_fields def test_add_issue_with_custom_fields
issue = submit_email('ticket_with_custom_fields.eml', :issue => {:project => 'onlinestore'}) issue = submit_email('ticket_with_custom_fields.eml', :issue => {:project => 'onlinestore'})
assert issue.is_a?(Issue) assert issue.is_a?(Issue)
@ -164,7 +163,7 @@ class MailHandlerTest < ActiveSupport::TestCase
assert_equal 'Value for a custom field', issue.custom_value_for(CustomField.find_by_name('Searchable field')).value assert_equal 'Value for a custom field', issue.custom_value_for(CustomField.find_by_name('Searchable field')).value
assert !issue.description.match(/^searchable field:/i) assert !issue.description.match(/^searchable field:/i)
end end
def test_add_issue_with_cc def test_add_issue_with_cc
issue = submit_email('ticket_with_cc.eml', :issue => {:project => 'ecookbook'}) issue = submit_email('ticket_with_cc.eml', :issue => {:project => 'ecookbook'})
assert issue.is_a?(Issue) assert issue.is_a?(Issue)
@ -173,13 +172,13 @@ class MailHandlerTest < ActiveSupport::TestCase
assert issue.watched_by?(User.find_by_mail('dlopper@somenet.foo')) assert issue.watched_by?(User.find_by_mail('dlopper@somenet.foo'))
assert_equal 1, issue.watcher_user_ids.size assert_equal 1, issue.watcher_user_ids.size
end end
def test_add_issue_by_unknown_user def test_add_issue_by_unknown_user
assert_no_difference 'User.count' do assert_no_difference 'User.count' do
assert_equal false, submit_email('ticket_by_unknown_user.eml', :issue => {:project => 'ecookbook'}) assert_equal false, submit_email('ticket_by_unknown_user.eml', :issue => {:project => 'ecookbook'})
end end
end end
def test_add_issue_by_anonymous_user def test_add_issue_by_anonymous_user
Role.anonymous.add_permission!(:add_issues) Role.anonymous.add_permission!(:add_issues)
assert_no_difference 'User.count' do assert_no_difference 'User.count' do
@ -197,7 +196,7 @@ class MailHandlerTest < ActiveSupport::TestCase
assert issue.author.anonymous? assert issue.author.anonymous?
end end
end end
def test_add_issue_by_anonymous_user_on_private_project def test_add_issue_by_anonymous_user_on_private_project
Role.anonymous.add_permission!(:add_issues) Role.anonymous.add_permission!(:add_issues)
assert_no_difference 'User.count' do assert_no_difference 'User.count' do
@ -206,7 +205,7 @@ class MailHandlerTest < ActiveSupport::TestCase
end end
end end
end end
def test_add_issue_by_anonymous_user_on_private_project_without_permission_check def test_add_issue_by_anonymous_user_on_private_project_without_permission_check
assert_no_difference 'User.count' do assert_no_difference 'User.count' do
assert_difference 'Issue.count' do assert_difference 'Issue.count' do
@ -218,7 +217,7 @@ class MailHandlerTest < ActiveSupport::TestCase
end end
end end
end end
def test_add_issue_by_created_user def test_add_issue_by_created_user
Setting.default_language = 'en' Setting.default_language = 'en'
assert_difference 'User.count' do assert_difference 'User.count' do
@ -228,7 +227,7 @@ class MailHandlerTest < ActiveSupport::TestCase
assert_equal 'john.doe@somenet.foo', issue.author.mail assert_equal 'john.doe@somenet.foo', issue.author.mail
assert_equal 'John', issue.author.firstname assert_equal 'John', issue.author.firstname
assert_equal 'Doe', issue.author.lastname assert_equal 'Doe', issue.author.lastname
# account information # account information
email = ActionMailer::Base.deliveries.first email = ActionMailer::Base.deliveries.first
assert_not_nil email assert_not_nil email
@ -238,7 +237,7 @@ class MailHandlerTest < ActiveSupport::TestCase
assert_equal issue.author, User.try_to_login(login, password) assert_equal issue.author, User.try_to_login(login, password)
end end
end end
def test_add_issue_without_from_header def test_add_issue_without_from_header
Role.anonymous.add_permission!(:add_issues) Role.anonymous.add_permission!(:add_issues)
assert_equal false, submit_email('ticket_without_from_header.eml') assert_equal false, submit_email('ticket_without_from_header.eml')
@ -271,7 +270,7 @@ class MailHandlerTest < ActiveSupport::TestCase
assert_equal 'Urgent', issue.priority.to_s assert_equal 'Urgent', issue.priority.to_s
assert issue.description.include?('Lorem ipsum dolor sit amet, consectetuer adipiscing elit.') assert issue.description.include?('Lorem ipsum dolor sit amet, consectetuer adipiscing elit.')
end end
def test_add_issue_with_japanese_keywords def test_add_issue_with_japanese_keywords
tracker = Tracker.create!(:name => '開発') tracker = Tracker.create!(:name => '開発')
Project.find(1).trackers << tracker Project.find(1).trackers << tracker
@ -295,7 +294,7 @@ class MailHandlerTest < ActiveSupport::TestCase
assert issue.is_a?(Issue) assert issue.is_a?(Issue)
assert_equal 1, ActionMailer::Base.deliveries.size assert_equal 1, ActionMailer::Base.deliveries.size
end end
def test_add_issue_note def test_add_issue_note
journal = submit_email('ticket_reply.eml') journal = submit_email('ticket_reply.eml')
assert journal.is_a?(Journal) assert journal.is_a?(Journal)
@ -330,7 +329,7 @@ class MailHandlerTest < ActiveSupport::TestCase
assert journal.is_a?(Journal) assert journal.is_a?(Journal)
assert_equal 1, ActionMailer::Base.deliveries.size assert_equal 1, ActionMailer::Base.deliveries.size
end end
def test_add_issue_note_should_not_set_defaults def test_add_issue_note_should_not_set_defaults
journal = submit_email('ticket_reply.eml', :issue => {:tracker => 'Support request', :priority => 'High'}) journal = submit_email('ticket_reply.eml', :issue => {:tracker => 'Support request', :priority => 'High'})
assert journal.is_a?(Journal) assert journal.is_a?(Journal)
@ -338,7 +337,7 @@ class MailHandlerTest < ActiveSupport::TestCase
assert_equal 'Feature request', journal.issue.tracker.name assert_equal 'Feature request', journal.issue.tracker.name
assert_equal 'Normal', journal.issue.priority.name assert_equal 'Normal', journal.issue.priority.name
end end
def test_reply_to_a_message def test_reply_to_a_message
m = submit_email('message_reply.eml') m = submit_email('message_reply.eml')
assert m.is_a?(Message) assert m.is_a?(Message)
@ -348,7 +347,7 @@ class MailHandlerTest < ActiveSupport::TestCase
# The email replies to message #2 which is part of the thread of message #1 # The email replies to message #2 which is part of the thread of message #1
assert_equal Message.find(1), m.parent assert_equal Message.find(1), m.parent
end end
def test_reply_to_a_message_by_subject def test_reply_to_a_message_by_subject
m = submit_email('message_reply_by_subject.eml') m = submit_email('message_reply_by_subject.eml')
assert m.is_a?(Message) assert m.is_a?(Message)
@ -357,7 +356,7 @@ class MailHandlerTest < ActiveSupport::TestCase
assert_equal 'Reply to the first post', m.subject assert_equal 'Reply to the first post', m.subject
assert_equal Message.find(1), m.parent assert_equal Message.find(1), m.parent
end end
def test_should_strip_tags_of_html_only_emails def test_should_strip_tags_of_html_only_emails
issue = submit_email('ticket_html_only.eml', :issue => {:project => 'ecookbook'}) issue = submit_email('ticket_html_only.eml', :issue => {:project => 'ecookbook'})
assert issue.is_a?(Issue) assert issue.is_a?(Issue)
@ -385,7 +384,6 @@ class MailHandlerTest < ActiveSupport::TestCase
setup do setup do
Setting.mail_handler_body_delimiters = '---' Setting.mail_handler_body_delimiters = '---'
end end
should "truncate the email at the delimiter for the issue" do should "truncate the email at the delimiter for the issue" do
issue = submit_email('ticket_on_given_project.eml') issue = submit_email('ticket_on_given_project.eml')
assert_issue_created(issue) assert_issue_created(issue)
@ -400,39 +398,32 @@ class MailHandlerTest < ActiveSupport::TestCase
setup do setup do
Setting.mail_handler_body_delimiters = '--- Reply above. Do not remove this line. ---' Setting.mail_handler_body_delimiters = '--- Reply above. Do not remove this line. ---'
end end
should "truncate the email at the delimiter with the quoted reply symbols (>)" do should "truncate the email at the delimiter with the quoted reply symbols (>)" do
journal = submit_email('issue_update_with_quoted_reply_above.eml') journal = submit_email('issue_update_with_quoted_reply_above.eml')
assert journal.is_a?(Journal) assert journal.is_a?(Journal)
assert journal.notes.include?('An update to the issue by the sender.') assert journal.notes.include?('An update to the issue by the sender.')
assert !journal.notes.match(Regexp.escape("--- Reply above. Do not remove this line. ---")) assert !journal.notes.match(Regexp.escape("--- Reply above. Do not remove this line. ---"))
assert !journal.notes.include?('Looks like the JSON api for projects was missed.') assert !journal.notes.include?('Looks like the JSON api for projects was missed.')
end end
end end
context "with multiple quoted replies (e.g. reply to a reply of a Redmine email notification)" do context "with multiple quoted replies (e.g. reply to a reply of a Redmine email notification)" do
setup do setup do
Setting.mail_handler_body_delimiters = '--- Reply above. Do not remove this line. ---' Setting.mail_handler_body_delimiters = '--- Reply above. Do not remove this line. ---'
end end
should "truncate the email at the delimiter with the quoted reply symbols (>)" do should "truncate the email at the delimiter with the quoted reply symbols (>)" do
journal = submit_email('issue_update_with_multiple_quoted_reply_above.eml') journal = submit_email('issue_update_with_multiple_quoted_reply_above.eml')
assert journal.is_a?(Journal) assert journal.is_a?(Journal)
assert journal.notes.include?('An update to the issue by the sender.') assert journal.notes.include?('An update to the issue by the sender.')
assert !journal.notes.match(Regexp.escape("--- Reply above. Do not remove this line. ---")) assert !journal.notes.match(Regexp.escape("--- Reply above. Do not remove this line. ---"))
assert !journal.notes.include?('Looks like the JSON api for projects was missed.') assert !journal.notes.include?('Looks like the JSON api for projects was missed.')
end end
end end
context "with multiple strings" do context "with multiple strings" do
setup do setup do
Setting.mail_handler_body_delimiters = "---\nBREAK" Setting.mail_handler_body_delimiters = "---\nBREAK"
end end
should "truncate the email at the first delimiter found (BREAK)" do should "truncate the email at the first delimiter found (BREAK)" do
issue = submit_email('ticket_on_given_project.eml') issue = submit_email('ticket_on_given_project.eml')
assert_issue_created(issue) assert_issue_created(issue)
@ -444,7 +435,7 @@ class MailHandlerTest < ActiveSupport::TestCase
end end
end end
end end
def test_email_with_long_subject_line def test_email_with_long_subject_line
issue = submit_email('ticket_with_long_subject.eml') issue = submit_email('ticket_with_long_subject.eml')
assert issue.is_a?(Issue) assert issue.is_a?(Issue)
@ -452,7 +443,7 @@ class MailHandlerTest < ActiveSupport::TestCase
end end
private private
def submit_email(filename, options={}) def submit_email(filename, options={})
raw = IO.read(File.join(FIXTURES_PATH, filename)) raw = IO.read(File.join(FIXTURES_PATH, filename))
MailHandler.receive(raw, options) MailHandler.receive(raw, options)