From a54fa93b2e28c369fde84b714ac8e20d2fa77b5b Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Wed, 23 Dec 2009 18:35:19 +0000 Subject: Adds a setting to remove incoming emails body after a delimiter (#4409). git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3226 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- .../mail_handler/ticket_on_given_project.eml | 14 +++++- test/unit/mail_handler_test.rb | 52 ++++++++++++++++++++++ 2 files changed, 65 insertions(+), 1 deletion(-) (limited to 'test') diff --git a/test/fixtures/mail_handler/ticket_on_given_project.eml b/test/fixtures/mail_handler/ticket_on_given_project.eml index 5dbd0dc2e..372e7302c 100644 --- a/test/fixtures/mail_handler/ticket_on_given_project.eml +++ b/test/fixtures/mail_handler/ticket_on_given_project.eml @@ -26,10 +26,22 @@ in urna sed tellus aliquet lobortis. Morbi scelerisque tortor in dolor. Cras sagittis odio eu lacus. Aliquam sem tortor, consequat sit amet, vestibulum id, iaculis at, lectus. Fusce tortor libero, congue ut, euismod nec, luctus eget, eros. Pellentesque tortor enim, feugiat in, dignissim eget, tristique -sed, mauris. Pellentesque habitant morbi tristique senectus et netus et +sed, mauris --- Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Quisque sit amet libero. In hac habitasse platea dictumst. +--- This line starts with a delimiter and should not be stripped + +This paragraph is before delimiters. + +BREAK + +This paragraph is between delimiters. + +--- + +This paragraph is after the delimiter so it shouldn't appear. + Nulla et nunc. Duis pede. Donec et ipsum. Nam ut dui tincidunt neque sollicitudin iaculis. Duis vitae dolor. Vestibulum eget massa. Sed lorem. Nullam volutpat cursus erat. Cras felis dolor, lacinia quis, rutrum et, diff --git a/test/unit/mail_handler_test.rb b/test/unit/mail_handler_test.rb index a4ae37345..21d2aedd5 100644 --- a/test/unit/mail_handler_test.rb +++ b/test/unit/mail_handler_test.rb @@ -279,10 +279,62 @@ class MailHandlerTest < ActiveSupport::TestCase assert_equal 'This is a html-only email.', issue.description end + context "truncate emails based on the Setting" do + context "with no setting" do + setup do + Setting.mail_handler_body_delimiters = '' + end + + should "add the entire email into the issue" do + issue = submit_email('ticket_on_given_project.eml') + assert_issue_created(issue) + assert issue.description.include?('---') + assert issue.description.include?('This paragraph is after the delimiter') + end + end + + context "with a single string" do + setup do + Setting.mail_handler_body_delimiters = '---' + end + + should "truncate the email at the delimiter for the issue" do + issue = submit_email('ticket_on_given_project.eml') + assert_issue_created(issue) + assert issue.description.include?('This paragraph is before delimiters') + assert issue.description.include?('--- This line starts with a delimiter') + assert !issue.description.match(/^---$/) + assert !issue.description.include?('This paragraph is after the delimiter') + end + end + + context "with multiple strings" do + setup do + Setting.mail_handler_body_delimiters = "---\nBREAK" + end + + should "truncate the email at the first delimiter found (BREAK)" do + issue = submit_email('ticket_on_given_project.eml') + assert_issue_created(issue) + assert issue.description.include?('This paragraph is before delimiters') + assert !issue.description.include?('BREAK') + assert !issue.description.include?('This paragraph is between delimiters') + assert !issue.description.match(/^---$/) + assert !issue.description.include?('This paragraph is after the delimiter') + end + end + end + private def submit_email(filename, options={}) raw = IO.read(File.join(FIXTURES_PATH, filename)) MailHandler.receive(raw, options) end + + def assert_issue_created(issue) + assert issue.is_a?(Issue) + assert !issue.new_record? + issue.reload + end end -- cgit v1.2.3