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]
