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]

Reply via email to