MAILET-149 Use MimeMessageBuilder for mailet integration tests

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

Branch: refs/heads/master
Commit: b1b4631251096146492554f6063a2e5906366ea7
Parents: 6d1f913
Author: Benoit Tellier <[email protected]>
Authored: Fri Jan 20 10:29:55 2017 +0700
Committer: Antoine Duprat <[email protected]>
Committed: Mon Jan 23 16:19:24 2017 +0100

----------------------------------------------------------------------
 .../mailet/base/test/MimeMessageBuilder.java    |  34 +++--
 .../mailets/AmqpForwardAttachmentTest.java      |  49 ++-----
 .../mailets/ICSAttachmentWorkflowTest.java      | 146 +++++++------------
 .../transport/mailets/StripAttachmentTest.java  |  54 +++----
 4 files changed, 114 insertions(+), 169 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/b1b46312/mailet/base/src/test/java/org/apache/mailet/base/test/MimeMessageBuilder.java
----------------------------------------------------------------------
diff --git 
a/mailet/base/src/test/java/org/apache/mailet/base/test/MimeMessageBuilder.java 
b/mailet/base/src/test/java/org/apache/mailet/base/test/MimeMessageBuilder.java
index 42a2339..1246bf7 100644
--- 
a/mailet/base/src/test/java/org/apache/mailet/base/test/MimeMessageBuilder.java
+++ 
b/mailet/base/src/test/java/org/apache/mailet/base/test/MimeMessageBuilder.java
@@ -91,7 +91,8 @@ public class MimeMessageBuilder {
         private Optional<String> filename = Optional.absent();
         private ImmutableList.Builder<Header> headers = 
ImmutableList.builder();
         private Optional<String> disposition = Optional.absent();
-        private Optional<String> data = Optional.absent();
+        private Optional<String> dataAsString = Optional.absent();
+        private Optional<byte[]> dataAsBytes = Optional.absent();
         private Optional<String> type = Optional.absent();
 
         public BodyPartBuilder cid(String cid) {
@@ -110,7 +111,12 @@ public class MimeMessageBuilder {
         }
 
         public BodyPartBuilder data(String data) {
-            this.data = Optional.of(data);
+            this.dataAsString = Optional.of(data);
+            return this;
+        }
+
+        public BodyPartBuilder data(byte[] data) {
+            this.dataAsBytes = Optional.of(data);
             return this;
         }
 
@@ -130,14 +136,24 @@ public class MimeMessageBuilder {
         }
 
         public BodyPart build() throws IOException, MessagingException {
-            Preconditions.checkNotNull(data);
+            Preconditions.checkState(dataAsString.isPresent() ^ 
dataAsBytes.isPresent(), "one and only one of data as string or data as bytes 
should be specified");
             MimeBodyPart bodyPart = new MimeBodyPart();
-            bodyPart.setDataHandler(
-                new DataHandler(
-                    new ByteArrayDataSource(
-                        data.or(DEFAULT_VALUE),
-                        type.or(DEFAULT_TEXT_PLAIN_UTF8_TYPE))
-                ));
+            if (dataAsString.isPresent()) {
+                bodyPart.setDataHandler(
+                    new DataHandler(
+                        new ByteArrayDataSource(
+                            dataAsString.or(DEFAULT_VALUE),
+                            type.or(DEFAULT_TEXT_PLAIN_UTF8_TYPE))
+                    ));
+            }
+            if (dataAsBytes.isPresent()) {
+                bodyPart.setDataHandler(
+                    new DataHandler(
+                        new ByteArrayDataSource(
+                            dataAsBytes.get(),
+                            type.or(DEFAULT_TEXT_PLAIN_UTF8_TYPE))
+                    ));
+            }
             if (filename.isPresent()) {
                 bodyPart.setFileName(filename.get());
             }

http://git-wip-us.apache.org/repos/asf/james-project/blob/b1b46312/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AmqpForwardAttachmentTest.java
----------------------------------------------------------------------
diff --git 
a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AmqpForwardAttachmentTest.java
 
b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AmqpForwardAttachmentTest.java
index 400f965..2ebc972 100644
--- 
a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AmqpForwardAttachmentTest.java
+++ 
b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AmqpForwardAttachmentTest.java
@@ -21,15 +21,7 @@ package org.apache.james.transport.mailets;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
-import java.io.ByteArrayInputStream;
-import java.io.UnsupportedEncodingException;
-import java.util.Properties;
-
-import javax.mail.MessagingException;
-import javax.mail.Session;
-import javax.mail.internet.MimeBodyPart;
 import javax.mail.internet.MimeMessage;
-import javax.mail.internet.MimeMultipart;
 
 import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailets.TemporaryJamesServer;
@@ -44,6 +36,7 @@ import org.apache.james.util.streams.SwarmGenericContainer;
 import org.apache.mailet.Mail;
 import org.apache.mailet.MailAddress;
 import org.apache.mailet.base.test.FakeMail;
+import org.apache.mailet.base.test.MimeMessageBuilder;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
@@ -52,7 +45,6 @@ import org.junit.rules.RuleChain;
 import org.junit.rules.TemporaryFolder;
 
 import com.google.common.base.Charsets;
-import com.google.common.primitives.Bytes;
 import com.jayway.awaitility.Awaitility;
 import com.jayway.awaitility.Duration;
 import com.jayway.awaitility.core.ConditionFactory;
@@ -154,19 +146,19 @@ public class AmqpForwardAttachmentTest {
 
     @Test
     public void 
stripAttachmentShouldPutAttachmentsInMailAttributeWhenConfiguredForIt() throws 
Exception {
-        MimeMessage message = new MimeMessage(Session
-                .getDefaultInstance(new Properties()));
-        
-        MimeMultipart multiPart = new MimeMultipart();
-        MimeBodyPart part = new MimeBodyPart();
-        part.setText("simple text");
-        multiPart.addBodyPart(part);
-        
multiPart.addBodyPart(createAttachmentBodyPart(TEST_ATTACHMENT_CONTENT, 
"test.txt"));
-        
-        message.setSubject("test");
-        message.setContent(multiPart);
-        message.saveChanges();
-        
+        MimeMessage message = MimeMessageBuilder.mimeMessageBuilder()
+            .setMultipartWithBodyParts(
+                MimeMessageBuilder.bodyPartBuilder()
+                    .data("simple text")
+                    .build(),
+                MimeMessageBuilder.bodyPartBuilder()
+                    .data(TEST_ATTACHMENT_CONTENT)
+                    .disposition("attachment")
+                    .filename("test.txt")
+                    .build())
+            .setSubject("test")
+            .build();
+
         Mail mail = FakeMail.builder()
               .mimeMessage(message)
               .sender(new MailAddress(FROM))
@@ -183,17 +175,4 @@ public class AmqpForwardAttachmentTest {
         
assertThat(amqpRule.readContentAsBytes()).contains(TEST_ATTACHMENT_CONTENT);
     }
 
-    private MimeBodyPart createAttachmentBodyPart(byte[] body, String 
fileName) throws MessagingException, UnsupportedEncodingException {
-        MimeBodyPart part = createBodyPart(body);
-        part.setDisposition("attachment");
-        part.setFileName(fileName);
-        return part;
-    }
-
-    private MimeBodyPart createBodyPart(byte[] body) throws 
MessagingException, UnsupportedEncodingException {
-        return new MimeBodyPart(new ByteArrayInputStream(
-                Bytes.concat("Content-Transfer-Encoding: 8bit\r\nContent-Type: 
application/octet-stream; charset=utf-8\r\n\r\n".getBytes(Charsets.UTF_8),
-                        body)));
-    }
-
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/b1b46312/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java
----------------------------------------------------------------------
diff --git 
a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java
 
b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java
index 1fb694d..a6b03e5 100644
--- 
a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java
+++ 
b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java
@@ -21,16 +21,9 @@ package org.apache.james.transport.mailets;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
-import java.io.ByteArrayInputStream;
-import java.io.UnsupportedEncodingException;
 import java.util.Optional;
-import java.util.Properties;
 
-import javax.mail.MessagingException;
-import javax.mail.Session;
-import javax.mail.internet.MimeBodyPart;
 import javax.mail.internet.MimeMessage;
-import javax.mail.internet.MimeMultipart;
 
 import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailets.TemporaryJamesServer;
@@ -45,6 +38,7 @@ import org.apache.james.util.streams.SwarmGenericContainer;
 import org.apache.mailet.Mail;
 import org.apache.mailet.MailAddress;
 import org.apache.mailet.base.test.FakeMail;
+import org.apache.mailet.base.test.MimeMessageBuilder;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Ignore;
@@ -54,7 +48,6 @@ import org.junit.rules.RuleChain;
 import org.junit.rules.TemporaryFolder;
 
 import com.google.common.base.Charsets;
-import com.google.common.primitives.Bytes;
 import com.jayway.awaitility.Awaitility;
 import com.jayway.awaitility.Duration;
 import com.jayway.awaitility.core.ConditionFactory;
@@ -219,6 +212,8 @@ public class ICSAttachmentWorkflowTest {
 
     private ConditionFactory calmlyAwait;
     private TemporaryJamesServer jamesServer;
+    private MimeMessage messageWithoutICSAttached;
+    private MimeMessage messageWithICSAttached;
 
     @Before
     public void setup() throws Exception {
@@ -290,6 +285,32 @@ public class ICSAttachmentWorkflowTest {
         jamesServer.getServerProbe().addUser(FROM, PASSWORD);
         jamesServer.getServerProbe().addUser(RECIPIENT, PASSWORD);
         
jamesServer.getServerProbe().createMailbox(MailboxConstants.USER_NAMESPACE, 
RECIPIENT, "INBOX");
+
+        messageWithoutICSAttached = MimeMessageBuilder.mimeMessageBuilder()
+            .setMultipartWithBodyParts(
+                MimeMessageBuilder.bodyPartBuilder()
+                    .data("simple text")
+                    .build(),
+                MimeMessageBuilder.bodyPartBuilder()
+                    .data("My attachment")
+                    .filename("test.txt")
+                    .disposition("attachment")
+                    .build())
+            .setSubject("test")
+            .build();
+
+        messageWithICSAttached = MimeMessageBuilder.mimeMessageBuilder()
+            .setMultipartWithBodyParts(
+                MimeMessageBuilder.bodyPartBuilder()
+                    .data("simple text")
+                    .build(),
+                MimeMessageBuilder.bodyPartBuilder()
+                    .data(ICS_1.getBytes(Charsets.UTF_8))
+                    .filename("meeting.ics")
+                    .disposition("attachment")
+                    .build())
+            .setSubject("test")
+            .build();
     }
 
     @After
@@ -299,20 +320,8 @@ public class ICSAttachmentWorkflowTest {
 
     @Test
     public void 
calendarAttachmentShouldNotBePublishedInMQWhenNoICalAttachment() throws 
Exception {
-        MimeMessage message = new MimeMessage(Session.getDefaultInstance(new 
Properties()));
-        
-        MimeMultipart multiPart = new MimeMultipart();
-        MimeBodyPart part = new MimeBodyPart();
-        part.setText("simple text");
-        multiPart.addBodyPart(part);
-        multiPart.addBodyPart(createAttachmentBodyPart("My 
attachment".getBytes(Charsets.UTF_8), "test.txt"));
-        
-        message.setSubject("test");
-        message.setContent(multiPart);
-        message.saveChanges();
-        
         Mail mail = FakeMail.builder()
-              .mimeMessage(message)
+              .mimeMessage(messageWithoutICSAttached)
               .sender(new MailAddress(FROM))
               .recipient(new MailAddress(RECIPIENT))
               .build();
@@ -329,20 +338,8 @@ public class ICSAttachmentWorkflowTest {
 
     @Test
     public void 
calendarAttachmentShouldBePublishedInMQWhenMatchingWorkflowConfiguration() 
throws Exception {
-        MimeMessage message = new MimeMessage(Session.getDefaultInstance(new 
Properties()));
-        
-        MimeMultipart multiPart = new MimeMultipart();
-        MimeBodyPart part = new MimeBodyPart();
-        part.setText("simple text");
-        multiPart.addBodyPart(part);
-        
multiPart.addBodyPart(createAttachmentBodyPart(ICS_1.getBytes(Charsets.UTF_8), 
"meeting.ics"));
-        
-        message.setSubject("test");
-        message.setContent(multiPart);
-        message.saveChanges();
-        
         Mail mail = FakeMail.builder()
-              .mimeMessage(message)
+              .mimeMessage(messageWithICSAttached)
               .sender(new MailAddress(FROM))
               .recipient(new MailAddress(RECIPIENT))
               .build();
@@ -375,20 +372,8 @@ public class ICSAttachmentWorkflowTest {
 
     @Test
     public void headersShouldNotBeAddedInMailWhenNoICalAttachment() throws 
Exception {
-        MimeMessage message = new MimeMessage(Session.getDefaultInstance(new 
Properties()));
-        
-        MimeMultipart multiPart = new MimeMultipart();
-        MimeBodyPart part = new MimeBodyPart();
-        part.setText("simple text");
-        multiPart.addBodyPart(part);
-        multiPart.addBodyPart(createAttachmentBodyPart("My 
attachment".getBytes(Charsets.UTF_8), "test.txt"));
-        
-        message.setSubject("test");
-        message.setContent(multiPart);
-        message.saveChanges();
-        
         Mail mail = FakeMail.builder()
-              .mimeMessage(message)
+              .mimeMessage(messageWithoutICSAttached)
               .sender(new MailAddress(FROM))
               .recipient(new MailAddress(RECIPIENT))
               .build();
@@ -411,21 +396,8 @@ public class ICSAttachmentWorkflowTest {
 
     @Test
     public void headersShouldBeAddedInMailWhenOneICalAttachment() throws 
Exception {
-        MimeMessage message = new MimeMessage(Session
-                .getDefaultInstance(new Properties()));
-        
-        MimeMultipart multiPart = new MimeMultipart();
-        MimeBodyPart part = new MimeBodyPart();
-        part.setText("simple text");
-        multiPart.addBodyPart(part);
-        
multiPart.addBodyPart(createAttachmentBodyPart(ICS_1.getBytes(Charsets.UTF_8), 
"test.txt"));
-        
-        message.setSubject("test");
-        message.setContent(multiPart);
-        message.saveChanges();
-        
         Mail mail = FakeMail.builder()
-              .mimeMessage(message)
+              .mimeMessage(messageWithICSAttached)
               .sender(new MailAddress(FROM))
               .recipient(new MailAddress(RECIPIENT))
               .build();
@@ -448,23 +420,31 @@ public class ICSAttachmentWorkflowTest {
     @Ignore("See JIRA issue MAILET-151")
     @Test
     public void 
headersShouldBeFilledOnlyWithOneICalAttachmentWhenMailHasSeveral() throws 
Exception {
-        MimeMessage message = new MimeMessage(Session
-                .getDefaultInstance(new Properties()));
-        
-        MimeMultipart multiPart = new MimeMultipart();
-        MimeBodyPart part = new MimeBodyPart();
-        part.setText("simple text");
-        multiPart.addBodyPart(part);
-        
multiPart.addBodyPart(createAttachmentBodyPart(ICS_1.getBytes(Charsets.UTF_8), 
"test.txt"));
-        
multiPart.addBodyPart(createAttachmentBodyPart(ICS_2.getBytes(Charsets.UTF_8), 
"test.txt"));
-        
multiPart.addBodyPart(createAttachmentBodyPart(ICS_3.getBytes(Charsets.UTF_8), 
"test.txt"));
-        
-        message.setSubject("test");
-        message.setContent(multiPart);
-        message.saveChanges();
+        MimeMessage messageWithThreeICSAttached = 
MimeMessageBuilder.mimeMessageBuilder()
+            .setMultipartWithBodyParts(
+                MimeMessageBuilder.bodyPartBuilder()
+                    .data("simple text")
+                    .build(),
+                MimeMessageBuilder.bodyPartBuilder()
+                    .data(ICS_1.getBytes(Charsets.UTF_8))
+                    .filename("test.txt")
+                    .disposition("attachment")
+                    .build(),
+                MimeMessageBuilder.bodyPartBuilder()
+                    .data(ICS_2.getBytes(Charsets.UTF_8))
+                    .filename("test.txt")
+                    .disposition("attachment")
+                    .build(),
+                MimeMessageBuilder.bodyPartBuilder()
+                    .data(ICS_3.getBytes(Charsets.UTF_8))
+                    .filename("test.txt")
+                    .disposition("attachment")
+                    .build())
+            .setSubject("test")
+            .build();
         
         Mail mail = FakeMail.builder()
-              .mimeMessage(message)
+              .mimeMessage(messageWithThreeICSAttached)
               .sender(new MailAddress(FROM))
               .recipient(new MailAddress(RECIPIENT))
               .build();
@@ -485,18 +465,4 @@ public class ICSAttachmentWorkflowTest {
         }
     }
 
-
-    private MimeBodyPart createAttachmentBodyPart(byte[] body, String 
fileName) throws MessagingException, UnsupportedEncodingException {
-        MimeBodyPart part = createBodyPart(body);
-        part.setDisposition("attachment");
-        part.setFileName(fileName);
-        return part;
-    }
-
-    private MimeBodyPart createBodyPart(byte[] body) throws 
MessagingException, UnsupportedEncodingException {
-        return new MimeBodyPart(new ByteArrayInputStream(
-                Bytes.concat("Content-Transfer-Encoding: 8bit\r\nContent-Type: 
application/octet-stream; charset=utf-8\r\n\r\n".getBytes(Charsets.UTF_8),
-                        body)));
-    }
-
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/b1b46312/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
----------------------------------------------------------------------
diff --git 
a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
 
b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
index 919c8c8..202c6a1 100644
--- 
a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
+++ 
b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
@@ -21,15 +21,7 @@ package org.apache.james.transport.mailets;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
-import java.io.ByteArrayInputStream;
-import java.io.UnsupportedEncodingException;
-import java.util.Properties;
-
-import javax.mail.MessagingException;
-import javax.mail.Session;
-import javax.mail.internet.MimeBodyPart;
 import javax.mail.internet.MimeMessage;
-import javax.mail.internet.MimeMultipart;
 
 import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailets.TemporaryJamesServer;
@@ -42,6 +34,7 @@ import org.apache.james.mailets.utils.SMTPMessageSender;
 import org.apache.mailet.Mail;
 import org.apache.mailet.MailAddress;
 import org.apache.mailet.base.test.FakeMail;
+import org.apache.mailet.base.test.MimeMessageBuilder;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
@@ -135,20 +128,24 @@ public class StripAttachmentTest {
      */
     @Test
     public void 
stripAttachmentShouldPutAttachmentsInMailAttributeWhenConfiguredForIt() throws 
Exception {
-        MimeMessage message = new MimeMessage(Session
-                .getDefaultInstance(new Properties()));
-        
-        MimeMultipart multiPart = new MimeMultipart();
-        MimeBodyPart part = new MimeBodyPart();
-        part.setText("simple text");
-        multiPart.addBodyPart(part);
-        multiPart.addBodyPart(createAttachmentBodyPart("Not matching 
attachment", "not_matching.tmp"));
-        multiPart.addBodyPart(createAttachmentBodyPart("Matching attachment", 
"temp.zip"));
-        
-        message.setSubject("test");
-        message.setContent(multiPart);
-        message.saveChanges();
-        
+        MimeMessage message = MimeMessageBuilder.mimeMessageBuilder()
+            .setMultipartWithBodyParts(
+                MimeMessageBuilder.bodyPartBuilder()
+                    .data("simple text")
+                    .build(),
+                MimeMessageBuilder.bodyPartBuilder()
+                    .data("Not matching attachment")
+                    .filename("not_matching.tmp")
+                    .disposition("attachment")
+                    .build(),
+                MimeMessageBuilder.bodyPartBuilder()
+                    .data("Matching attachment")
+                    .filename("temp.zip")
+                    .disposition("attachment")
+                    .build())
+            .setSubject("test")
+            .build();
+
         Mail mail = FakeMail.builder()
               .mimeMessage(message)
               .sender(new MailAddress(FROM))
@@ -164,17 +161,4 @@ public class StripAttachmentTest {
             assertThat(processedMessage).contains("Matching attachment");
         }
     }
-
-    private MimeBodyPart createAttachmentBodyPart(String body, String 
fileName) throws MessagingException, UnsupportedEncodingException {
-        MimeBodyPart part = createBodyPart(body);
-        part.setDisposition("attachment");
-        part.setFileName(fileName);
-        return part;
-    }
-
-    private MimeBodyPart createBodyPart(String body) throws 
MessagingException, UnsupportedEncodingException {
-        return new MimeBodyPart(new ByteArrayInputStream(
-                ("Content-Transfer-Encoding: 8bit\r\nContent-Type: 
application/octet-stream; charset=utf-8\r\n\r\n"
-                        + body).getBytes("UTF-8")));
-    }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to