JAMES-2346 MDN reports should be reported as attachments

Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/1be875be
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/1be875be
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/1be875be

Branch: refs/heads/master
Commit: 1be875be2682a146dcb74fef6720615e014edfc5
Parents: 2070966
Author: benwa <btell...@linagora.com>
Authored: Thu Mar 8 16:19:14 2018 +0700
Committer: benwa <btell...@linagora.com>
Committed: Tue Mar 13 15:11:54 2018 +0700

----------------------------------------------------------------------
 mailbox/store/pom.xml                           |  5 +++
 .../store/mail/model/impl/MessageParser.java    |  5 +--
 .../mail/model/impl/MessageParserTest.java      | 37 ++++++++++++++++++++
 3 files changed, 45 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/1be875be/mailbox/store/pom.xml
----------------------------------------------------------------------
diff --git a/mailbox/store/pom.xml b/mailbox/store/pom.xml
index 9befb3a..ac6dc19 100644
--- a/mailbox/store/pom.xml
+++ b/mailbox/store/pom.xml
@@ -60,6 +60,11 @@
         </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
+            <artifactId>james-mdn</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
             <artifactId>james-server-util</artifactId>
         </dependency>
         <dependency>

http://git-wip-us.apache.org/repos/asf/james-project/blob/1be875be/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/MessageParser.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/MessageParser.java
 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/MessageParser.java
index 3331b7b..ed09191 100644
--- 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/MessageParser.java
+++ 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/MessageParser.java
@@ -57,7 +57,6 @@ public class MessageParser {
         .setMaxContentLen(-1)
         .setMaxHeaderCount(-1)
         .setMaxHeaderLen(-1)
-        .setMaxHeaderCount(-1)
         .setMaxLineLen(-1)
         .build();
     private static final String TEXT_MEDIA_TYPE = "text";
@@ -68,7 +67,9 @@ public class MessageParser {
     private static final List<String> ATTACHMENT_CONTENT_DISPOSITIONS = 
ImmutableList.of(
             
ContentDispositionField.DISPOSITION_TYPE_ATTACHMENT.toLowerCase(Locale.US),
             
ContentDispositionField.DISPOSITION_TYPE_INLINE.toLowerCase(Locale.US));
-    private static final ImmutableList<String> ATTACHMENT_CONTENT_TYPES = 
ImmutableList.of("application/pgp-signature");
+    private static final ImmutableList<String> ATTACHMENT_CONTENT_TYPES = 
ImmutableList.of(
+        "application/pgp-signature",
+        "message/disposition-notification");
     private static final Logger LOGGER = 
LoggerFactory.getLogger(MessageParser.class);
 
     private final Cid.CidParser cidParser;

http://git-wip-us.apache.org/repos/asf/james-project/blob/1be875be/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/impl/MessageParserTest.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/impl/MessageParserTest.java
 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/impl/MessageParserTest.java
index 61df5a9..4fd3ca9 100644
--- 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/impl/MessageParserTest.java
+++ 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/impl/MessageParserTest.java
@@ -21,12 +21,22 @@ package org.apache.james.mailbox.store.mail.model.impl;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
 import java.util.List;
 import java.util.Optional;
 
 import org.apache.james.mailbox.model.Attachment;
 import org.apache.james.mailbox.model.Cid;
 import org.apache.james.mailbox.model.MessageAttachment;
+import org.apache.james.mdn.MDN;
+import org.apache.james.mdn.MDNReport;
+import org.apache.james.mdn.action.mode.DispositionActionMode;
+import org.apache.james.mdn.fields.Disposition;
+import org.apache.james.mdn.sending.mode.DispositionSendingMode;
+import org.apache.james.mdn.type.DispositionType;
+import org.apache.james.mime4j.dom.Message;
+import org.apache.james.mime4j.message.DefaultMessageWriter;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -266,4 +276,31 @@ public class MessageParserTest {
             .extracting(Optional::get)
             .containsOnly("message suivi", "signature.asc");
     }
+
+    @Test
+    public void 
mdnReportShouldBeConsideredAsAttachmentWhenDispositionContentType() throws 
Exception {
+        Message message = MDN.builder()
+            .humanReadableText("A little test")
+            .report(MDNReport.builder()
+                .dispositionField(Disposition.builder()
+                    .actionMode(DispositionActionMode.Automatic)
+                    .sendingMode(DispositionSendingMode.Automatic)
+                    .type(DispositionType.Processed)
+                    .build())
+                .originalMessageIdField("zeug...@domain.tld")
+                .reportingUserAgentField("Thunderbird")
+                .finalRecipientField("u...@domain.tld")
+                .originalRecipientField("u...@domain.tld")
+                .build())
+            .build()
+            .asMime4JMessageBuilder()
+            .build();
+
+        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+        new DefaultMessageWriter().writeMessage(message, outputStream);
+
+        List<MessageAttachment> result = testee.retrieveAttachments(new 
ByteArrayInputStream(outputStream.toByteArray()));
+        assertThat(result).hasSize(1)
+            .allMatch(attachment -> 
attachment.getAttachment().getType().equals(MDN.DISPOSITION_CONTENT_TYPE));
+    }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org

Reply via email to