From f30462595e83f512cd5f29246a4542773595a224 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Tue, 13 Dec 2016 18:46:29 +0000 Subject: Optional Regex delimiters to truncate incoming emails (#5864). git-svn-id: http://svn.redmine.org/redmine/trunk@16065 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- .../mail_handler/ticket_reply_from_mail.eml | 35 ++++++++++++++++++++++ test/functional/settings_controller_test.rb | 29 ++++++++++++++++++ test/unit/mail_handler_test.rb | 19 ++++++++++++ 3 files changed, 83 insertions(+) create mode 100644 test/fixtures/mail_handler/ticket_reply_from_mail.eml (limited to 'test') diff --git a/test/fixtures/mail_handler/ticket_reply_from_mail.eml b/test/fixtures/mail_handler/ticket_reply_from_mail.eml new file mode 100644 index 000000000..016b189f1 --- /dev/null +++ b/test/fixtures/mail_handler/ticket_reply_from_mail.eml @@ -0,0 +1,35 @@ +Return-Path: +Received: from osiris ([127.0.0.1]) + by OSIRIS + with hMailServer; Wed, 12 Oct 2016 03:05:50 -0700 +Message-ID: <000501c8d452$a95cd7e0$0a00a8c0@osiris> +From: "John Smith" +To: +Subject: New ticket on a given project +Date: Wed, 12 Oct 2016 13:05:38 +0300 +MIME-Version: 1.0 +Content-Type: text/plain; + format=flowed; + charset="iso-8859-1"; + reply-type=original +Content-Transfer-Encoding: 7bit +X-Priority: 3 +X-MSMail-Priority: Normal +X-Mailer: Microsoft Outlook Express 6.00.2900.2869 +X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869 + +Project: onlinestore +Status: Resolved +due date: 2010-12-31 +Start Date:2010-01-01 +Assigned to: John Smith +fixed version: alpha +estimated hours: 2.5 +remaining hours: 1 +done ratio: 30 + +This paragraph is before delimiter + +On Wed, 11 Oct at 1:05 PM, Jon Smith > wrote: + +This paragraph is after the delimiter diff --git a/test/functional/settings_controller_test.rb b/test/functional/settings_controller_test.rb index 38e569569..d7dacc0ee 100644 --- a/test/functional/settings_controller_test.rb +++ b/test/functional/settings_controller_test.rb @@ -254,4 +254,33 @@ class SettingsControllerTest < Redmine::ControllerTest ensure Redmine::Plugin.unregister(:foo) end + + def test_post_mail_handler_delimiters_should_not_save_invalid_regex_delimiters + post :edit, :params => { + :settings => { + :mail_handler_enable_regex_delimiters => '1', + :mail_handler_body_delimiters => 'Abc[', + } + } + + assert_response :success + assert_equal '0', Setting.mail_handler_enable_regex_delimiters + assert_equal '', Setting.mail_handler_body_delimiters + + assert_select_error /is not a valid regular expression/ + assert_select 'textarea[name=?]', 'settings[mail_handler_body_delimiters]', :text => 'Abc[' + end + + def test_post_mail_handler_delimiters_should_save_valid_regex_delimiters + post :edit, :params => { + :settings => { + :mail_handler_enable_regex_delimiters => '1', + :mail_handler_body_delimiters => 'On .*, .* at .*, .* <.*> wrote:', + } + } + + assert_redirected_to '/settings' + assert_equal '1', Setting.mail_handler_enable_regex_delimiters + assert_equal 'On .*, .* at .*, .* <.*> wrote:', Setting.mail_handler_body_delimiters + end end diff --git a/test/unit/mail_handler_test.rb b/test/unit/mail_handler_test.rb index c1afdaebd..898ccc918 100644 --- a/test/unit/mail_handler_test.rb +++ b/test/unit/mail_handler_test.rb @@ -977,6 +977,25 @@ class MailHandlerTest < ActiveSupport::TestCase end end + test "truncate emails using a regex delimiter" do + delimiter = "On .*, .* at .*, .* <.*> wrote:" + with_settings :mail_handler_enable_regex_delimiters => '1', :mail_handler_body_delimiters => delimiter do + issue = submit_email('ticket_reply_from_mail.eml') + assert_issue_created(issue) + assert issue.description.include?('This paragraph is before delimiter') + assert !issue.description.include?('On Wed, 11 Oct at 1:05 PM, Jon Smith > wrote:') + assert !issue.description.include?('This paragraph is after the delimiter') + end + + with_settings :mail_handler_enable_regex_delimiters => '0', :mail_handler_body_delimiters => delimiter do + issue = submit_email('ticket_reply_from_mail.eml') + assert_issue_created(issue) + assert issue.description.include?('This paragraph is before delimiter') + assert issue.description.include?('On Wed, 11 Oct at 1:05 PM, Jon Smith > wrote:') + assert issue.description.include?('This paragraph is after the delimiter') + end + end + def test_attachments_that_match_mail_handler_excluded_filenames_should_be_ignored with_settings :mail_handler_excluded_filenames => '*.vcf, *.jpg' do issue = submit_email('ticket_with_attachment.eml', :issue => {:project => 'onlinestore'}) -- cgit v1.2.3