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:
parent
d3737db6b5
commit
d5b97d49c6
|
@ -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)
|
||||||
|
|
Loading…
Reference in New Issue