JAMES-2157 Add a test when at least one mime type matches
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/d6bf83ef Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/d6bf83ef Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/d6bf83ef Branch: refs/heads/master Commit: d6bf83ef69ee11f6df5ee00df1b162a38cccf73f Parents: 43386fd Author: benwa <[email protected]> Authored: Fri Oct 6 10:47:16 2017 +0700 Committer: benwa <[email protected]> Committed: Fri Oct 6 10:47:16 2017 +0700 ---------------------------------------------------------------------- .../mailet/base/test/MimeMessageBuilder.java | 10 +- .../transport/matchers/HasMimeTypeTest.java | 105 +++++++++++++------ 2 files changed, 83 insertions(+), 32 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/d6bf83ef/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 745e331..91dafc9 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 @@ -28,6 +28,7 @@ import java.util.List; import java.util.Optional; import java.util.Properties; import java.util.function.Function; + import javax.activation.DataHandler; import javax.mail.BodyPart; import javax.mail.Message; @@ -208,6 +209,7 @@ public class MimeMessageBuilder { } private Optional<String> text = Optional.empty(); + private Optional<String> textContentType = Optional.empty(); private Optional<String> subject = Optional.empty(); private Optional<InternetAddress> sender = Optional.empty(); private Optional<MimeMultipart> content = Optional.empty(); @@ -222,6 +224,12 @@ public class MimeMessageBuilder { return this; } + public MimeMessageBuilder setText(String text, String contentType) { + this.text = Optional.of(text); + this.textContentType = Optional.of(contentType); + return this; + } + public MimeMessageBuilder addToRecipient(String text) throws AddressException { this.to.add(new InternetAddress(text)); return this; @@ -331,7 +339,7 @@ public class MimeMessageBuilder { Preconditions.checkState(!(text.isPresent() && content.isPresent()), "Can not get at the same time a text and a content"); MimeMessage mimeMessage = new MimeMessage(Session.getInstance(new Properties())); if (text.isPresent()) { - mimeMessage.setContent(text.get(), "text/plain"); + mimeMessage.setContent(text.get(), textContentType.orElse("text/plain")); } if (content.isPresent()) { mimeMessage.setContent(content.get()); http://git-wip-us.apache.org/repos/asf/james-project/blob/d6bf83ef/mailet/standard/src/test/java/org/apache/james/transport/matchers/HasMimeTypeTest.java ---------------------------------------------------------------------- diff --git a/mailet/standard/src/test/java/org/apache/james/transport/matchers/HasMimeTypeTest.java b/mailet/standard/src/test/java/org/apache/james/transport/matchers/HasMimeTypeTest.java index 23dd533..70a80b2 100644 --- a/mailet/standard/src/test/java/org/apache/james/transport/matchers/HasMimeTypeTest.java +++ b/mailet/standard/src/test/java/org/apache/james/transport/matchers/HasMimeTypeTest.java @@ -20,19 +20,17 @@ package org.apache.james.transport.matchers; import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.Assert.assertEquals; + +import javax.mail.internet.MimeMessage; import org.apache.james.core.MailAddress; +import org.apache.mailet.Mail; import org.apache.mailet.base.test.FakeMail; import org.apache.mailet.base.test.FakeMatcherConfig; import org.apache.mailet.base.test.MimeMessageBuilder; import org.junit.Before; import org.junit.Test; -import javax.mail.MessagingException; -import javax.mail.internet.MimeMessage; -import java.util.Collections; - public class HasMimeTypeTest { private static final String RECIPIENT = "[email protected]"; @@ -41,53 +39,98 @@ public class HasMimeTypeTest { private static final String NON_MATCHING_MIME_TYPES = "text/plain, application/zip"; private HasMimeType matcher; - private FakeMail mail; @Before public void setUp() throws Exception { matcher = new HasMimeType(); - MimeMessage message = MimeMessageBuilder.mimeMessageBuilder() - .setMultipartWithBodyParts( - MimeMessageBuilder.bodyPartBuilder() - .data("simple text") - .disposition("text") - .build(), - MimeMessageBuilder.bodyPartBuilder() - .filename("text_file.txt") - .disposition("attachment") - .build(), - MimeMessageBuilder.bodyPartBuilder() - .type("application/zip") - .filename("zip_file.zip") - .disposition("attachment") - .build()) - .setSubject("test") - .build(); - - mail = FakeMail.builder() - .mimeMessage(message) - .sender(new MailAddress(FROM)) - .recipient(new MailAddress(RECIPIENT)) - .build(); } @Test - public void hasMimeType() throws MessagingException { + public void hasMimeType() throws Exception { matcher.init(FakeMatcherConfig.builder() .matcherName("HasMimeType") .condition(MIME_TYPES) .build()); + MimeMessage message = MimeMessageBuilder.mimeMessageBuilder() + .setMultipartWithBodyParts( + MimeMessageBuilder.bodyPartBuilder() + .data("simple text") + .disposition("text") + .build(), + MimeMessageBuilder.bodyPartBuilder() + .filename("text_file.txt") + .disposition("attachment") + .build(), + MimeMessageBuilder.bodyPartBuilder() + .type("application/zip") + .filename("zip_file.zip") + .disposition("attachment") + .build()) + .setSubject("test") + .build(); + + Mail mail = FakeMail.builder() + .mimeMessage(message) + .sender(new MailAddress(FROM)) + .recipient(new MailAddress(RECIPIENT)) + .build(); + assertThat(matcher.match(mail)).containsAll(mail.getRecipients()); } @Test - public void doesNotHaveMimeType() throws MessagingException{ + public void doesNotHaveMimeType() throws Exception { matcher.init(FakeMatcherConfig.builder() .matcherName("HasMimeType") .condition(NON_MATCHING_MIME_TYPES) .build()); + MimeMessage message = MimeMessageBuilder.mimeMessageBuilder() + .setMultipartWithBodyParts( + MimeMessageBuilder.bodyPartBuilder() + .data("simple text") + .disposition("text") + .build(), + MimeMessageBuilder.bodyPartBuilder() + .filename("text_file.txt") + .disposition("attachment") + .build(), + MimeMessageBuilder.bodyPartBuilder() + .type("application/zip") + .filename("zip_file.zip") + .disposition("attachment") + .build()) + .setSubject("test") + .build(); + + Mail mail = FakeMail.builder() + .mimeMessage(message) + .sender(new MailAddress(FROM)) + .recipient(new MailAddress(RECIPIENT)) + .build(); + assertThat(matcher.match(mail)).isEmpty(); } + + @Test + public void matchShouldReturnRecipientsWhenAtLeastOneMimeTypeMatch() throws Exception { + matcher.init(FakeMatcherConfig.builder() + .matcherName("HasMimeType") + .condition("text/md, text/html") + .build()); + + MimeMessage message = MimeMessageBuilder.mimeMessageBuilder() + .setText("content <b>in</b> <i>HTML</i>", "text/html") + .setSubject("test") + .build(); + + Mail mail = FakeMail.builder() + .mimeMessage(message) + .sender(new MailAddress(FROM)) + .recipient(new MailAddress(RECIPIENT)) + .build(); + + assertThat(matcher.match(mail)).containsExactlyElementsOf(mail.getRecipients()); + } } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
