git-svn-id: http://svn.redmine.org/redmine/trunk@13413 e93f8b46-1217-0410-a6f0-8f06a7374b81tags/2.6.0
@@ -319,7 +319,7 @@ class MailHandler < ActionMailer::Base | |||
else | |||
@keywords[attr] = begin | |||
if (options[:override] || @@handler_options[:allow_override].include?(attr.to_s)) && | |||
(v = extract_keyword!(plain_text_body, attr, options[:format])) | |||
(v = extract_keyword!(cleaned_up_text_body, attr, options[:format])) | |||
v | |||
elsif !@@handler_options[:issue][attr].blank? | |||
@@handler_options[:issue][attr] | |||
@@ -347,7 +347,7 @@ class MailHandler < ActionMailer::Base | |||
regexp = /^(#{keys.join('|')})[ \t]*:[ \t]*(#{format})\s*$/i | |||
if m = text.match(regexp) | |||
keyword = m[2].strip | |||
text.gsub!(regexp, '') | |||
text.sub!(regexp, '') | |||
end | |||
keyword | |||
end | |||
@@ -436,7 +436,7 @@ class MailHandler < ActionMailer::Base | |||
end | |||
def cleaned_up_text_body | |||
cleanup_body(plain_text_body) | |||
@cleaned_up_text_body ||= cleanup_body(plain_text_body) | |||
end | |||
def cleaned_up_subject |
@@ -30,6 +30,15 @@ sed, mauris --- Pellentesque habitant morbi tristique senectus et netus et | |||
malesuada fames ac turpis egestas. Quisque sit amet libero. In hac habitasse | |||
platea dictumst. | |||
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 | |||
done ratio: 30 | |||
--- This line starts with a delimiter and should not be stripped | |||
This paragraph is before delimiters. | |||
@@ -49,12 +58,3 @@ dictum et, ligula. Sed erat nibh, gravida in, accumsan non, placerat sed, | |||
massa. Sed sodales, ante fermentum ultricies sollicitudin, massa leo | |||
pulvinar dui, a gravida orci mi eget odio. Nunc a lacus. | |||
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 | |||
done ratio: 30 | |||
@@ -0,0 +1,25 @@ | |||
Return-Path: <JSmith@somenet.foo> | |||
Received: from osiris ([127.0.0.1]) | |||
by OSIRIS | |||
with hMailServer ; Sun, 22 Jun 2008 12:28:07 +0200 | |||
Message-ID: <000501c8d452$a95cd7e0$0a00a8c0@osiris> | |||
From: "John Smith" <JSmith@somenet.foo> | |||
To: <redmine@somenet.foo> | |||
Subject: New ticket on a given project | |||
Date: Sun, 22 Jun 2008 12:28:07 +0200 | |||
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 | |||
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. | |||
Project: ecookbook | |||
Priority: High | |||
Priority: Low |
@@ -0,0 +1,27 @@ | |||
Return-Path: <JSmith@somenet.foo> | |||
Received: from osiris ([127.0.0.1]) | |||
by OSIRIS | |||
with hMailServer ; Sun, 22 Jun 2008 12:28:07 +0200 | |||
Message-ID: <000501c8d452$a95cd7e0$0a00a8c0@osiris> | |||
From: "John Smith" <JSmith@somenet.foo> | |||
To: <redmine@somenet.foo> | |||
Subject: New ticket on a given project | |||
Date: Sun, 22 Jun 2008 12:28:07 +0200 | |||
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 | |||
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. | |||
Project: ecookbook | |||
== DELIMITER == | |||
Priority: High |
@@ -856,6 +856,20 @@ class MailHandlerTest < ActiveSupport::TestCase | |||
assert_equal issue.subject, 'New ticket on a given project with a very long subject line which exceeds 255 chars and should not be ignored but chopped off. And if the subject line is still not long enough, we just add more text. And more text. Wow, this is really annoying. Especially, if you have nothing to say...'[0,255] | |||
end | |||
def test_first_keyword_should_be_matched | |||
issue = submit_email('ticket_with_duplicate_keyword.eml', :allow_override => 'priority') | |||
assert issue.is_a?(Issue) | |||
assert_equal 'High', issue.priority.name | |||
end | |||
def test_keyword_after_delimiter_should_be_ignored | |||
with_settings :mail_handler_body_delimiters => "== DELIMITER ==" do | |||
issue = submit_email('ticket_with_keyword_after_delimiter.eml', :allow_override => 'priority') | |||
assert issue.is_a?(Issue) | |||
assert_equal 'Normal', issue.priority.name | |||
end | |||
end | |||
def test_new_user_from_attributes_should_return_valid_user | |||
to_test = { | |||
# [address, name] => [login, firstname, lastname] |