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]
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
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
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.
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
-
--- /dev/null
+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
--- /dev/null
+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
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]