You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2017/01/24 01:26:17 UTC
[03/10] james-project git commit: MAILET-149 Use MimeMessageBuilder
for mailet integration tests
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 <bt...@linagora.com>
Authored: Fri Jan 20 10:29:55 2017 +0700
Committer: Antoine Duprat <ad...@linagora.com>
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: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org