diff options
-rwxr-xr-x | app/models/mail_handler.rb | 1 | ||||
-rw-r--r-- | test/fixtures/mail_handler/ticket_with_empty_attachment.eml | 58 | ||||
-rw-r--r-- | test/unit/mail_handler_test.rb | 8 |
3 files changed, 67 insertions, 0 deletions
diff --git a/app/models/mail_handler.rb b/app/models/mail_handler.rb index 9bcc1b12d..518e8c84b 100755 --- a/app/models/mail_handler.rb +++ b/app/models/mail_handler.rb @@ -296,6 +296,7 @@ class MailHandler < ActionMailer::Base if email.attachments && email.attachments.any? email.attachments.each do |attachment| next unless accept_attachment?(attachment) + next unless attachment.body.decoded.size > 0 obj.attachments << Attachment.create(:container => obj, :file => attachment.body.decoded, :filename => attachment.filename, diff --git a/test/fixtures/mail_handler/ticket_with_empty_attachment.eml b/test/fixtures/mail_handler/ticket_with_empty_attachment.eml new file mode 100644 index 000000000..2dfc88b8d --- /dev/null +++ b/test/fixtures/mail_handler/ticket_with_empty_attachment.eml @@ -0,0 +1,58 @@ +Return-Path: <jsmith@somenet.foo> +Received: from osiris ([127.0.0.1]) + by OSIRIS + with hMailServer ; Sat, 21 Jun 2008 15:53:25 +0200 +Message-ID: <002301c8d3a6$2cdf6950$0a00a8c0@osiris> +From: "John Smith" <jsmith@somenet.foo> +To: <redmine@somenet.foo> +Subject: Ticket created by email with attachment +Date: Sat, 21 Jun 2008 15:53:25 +0200 +MIME-Version: 1.0 +Content-Type: multipart/mixed; + boundary="----=_NextPart_000_001F_01C8D3B6.F05C5270" +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 + +This is a multi-part message in MIME format. + +------=_NextPart_000_001F_01C8D3B6.F05C5270 +Content-Type: multipart/alternative; + boundary="----=_NextPart_001_0020_01C8D3B6.F05C5270" + + +------=_NextPart_001_0020_01C8D3B6.F05C5270 +Content-Type: text/plain; + charset="iso-8859-1" +Content-Transfer-Encoding: quoted-printable + +This is a new ticket with attachments +------=_NextPart_001_0020_01C8D3B6.F05C5270 +Content-Type: text/html; + charset="iso-8859-1" +Content-Transfer-Encoding: quoted-printable + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> +<HTML><HEAD> +<META http-equiv=3DContent-Type content=3D"text/html; = +charset=3Diso-8859-1"> +<META content=3D"MSHTML 6.00.2900.2883" name=3DGENERATOR> +<STYLE></STYLE> +</HEAD> +<BODY bgColor=3D#ffffff> +<DIV><FONT face=3DArial size=3D2>This is a new ticket with=20 +attachments</FONT></DIV></BODY></HTML> + +------=_NextPart_001_0020_01C8D3B6.F05C5270-- + +------=_NextPart_000_001F_01C8D3B6.F05C5270 +Content-Type: application/json; + name="response.json" +Content-Transfer-Encoding: base64 +Content-Disposition: attachment; + filename="response.json" + + +------=_NextPart_000_001F_01C8D3B6.F05C5270-- + diff --git a/test/unit/mail_handler_test.rb b/test/unit/mail_handler_test.rb index f17161c75..04da637c2 100644 --- a/test/unit/mail_handler_test.rb +++ b/test/unit/mail_handler_test.rb @@ -627,6 +627,14 @@ class MailHandlerTest < ActiveSupport::TestCase assert_equal content, File.read(attachment.diskfile).force_encoding('CP852') end + def test_empty_attachment_should_not_be_imported + issue = submit_email( + 'ticket_with_empty_attachment.eml', + issue: { project: 'ecookbook' } + ) + assert_equal 0, issue.attachments.size + end + def test_multiple_inline_text_parts_should_be_appended_to_issue_description issue = submit_email('multiple_text_parts.eml', :issue => {:project => 'ecookbook'}) assert_include 'first', issue.description |