Skip to content

Commit

Permalink
MAILET-115 Manage every attributes in FakeMail.Builder
Browse files Browse the repository at this point in the history
  • Loading branch information
aduprat authored and Antoine Duprat committed Sep 29, 2016
1 parent a8fe12f commit b345818
Show file tree
Hide file tree
Showing 34 changed files with 456 additions and 308 deletions.
Expand Up @@ -38,211 +38,229 @@ public class AutomaticallySentMailDetectorImplTest {

@Test
public void ownerIsAMailingListPrefix() throws Exception {
FakeMail fakeMail = new FakeMail();
fakeMail.setSender(new MailAddress("owner-list@any.com"));
FakeMail fakeMail = FakeMail.builder()
.sender(new MailAddress("owner-list@any.com"))
.build();

assertThat(new AutomaticallySentMailDetectorImpl().isMailingList(fakeMail)).isTrue();
}

@Test
public void requestIsAMailingListPrefix() throws Exception {
FakeMail fakeMail = new FakeMail();
fakeMail.setSender(new MailAddress("list-request@any.com"));
FakeMail fakeMail = FakeMail.builder()
.sender(new MailAddress("list-request@any.com"))
.build();

assertThat(new AutomaticallySentMailDetectorImpl().isMailingList(fakeMail)).isTrue();
}

@Test
public void mailerDaemonIsReserved() throws Exception {
FakeMail fakeMail = new FakeMail();
fakeMail.setSender(new MailAddress("MAILER-DAEMON@any.com"));
FakeMail fakeMail = FakeMail.builder()
.sender(new MailAddress("MAILER-DAEMON@any.com"))
.build();

assertThat(new AutomaticallySentMailDetectorImpl().isMailingList(fakeMail)).isTrue();
}

@Test
public void listservIsReserved() throws Exception {
FakeMail fakeMail = new FakeMail();
fakeMail.setSender(new MailAddress("LISTSERV@any.com"));
FakeMail fakeMail = FakeMail.builder()
.sender(new MailAddress("LISTSERV@any.com"))
.build();

assertThat(new AutomaticallySentMailDetectorImpl().isMailingList(fakeMail)).isTrue();
}

@Test
public void majordomoIsReserved() throws Exception {
FakeMail fakeMail = new FakeMail();
fakeMail.setSender(new MailAddress("majordomo@any.com"));
FakeMail fakeMail = FakeMail.builder()
.sender(new MailAddress("majordomo@any.com"))
.build();

assertThat(new AutomaticallySentMailDetectorImpl().isMailingList(fakeMail)).isTrue();
}

@Test
public void listIdShouldBeDetected() throws Exception {
FakeMail fakeMail = new FakeMail();
fakeMail.setSender(new MailAddress("any@any.com"));
MimeMessage message = new MimeMessage(Session.getDefaultInstance(new Properties()));
message.setHeader("List-Id", "any");
fakeMail.setMessage(message);
FakeMail fakeMail = FakeMail.builder()
.sender(new MailAddress("any@any.com"))
.mimeMessage(message)
.build();

assertThat(new AutomaticallySentMailDetectorImpl().isMailingList(fakeMail)).isTrue();
}

@Test
public void listHelpShouldBeDetected() throws Exception {
FakeMail fakeMail = new FakeMail();
fakeMail.setSender(new MailAddress("any@any.com"));
MimeMessage message = new MimeMessage(Session.getDefaultInstance(new Properties()));
message.setHeader("List-Help", "any");
fakeMail.setMessage(message);
FakeMail fakeMail = FakeMail.builder()
.sender(new MailAddress("any@any.com"))
.mimeMessage(message)
.build();

assertThat(new AutomaticallySentMailDetectorImpl().isMailingList(fakeMail)).isTrue();
}

@Test
public void listSubscribeShouldBeDetected() throws Exception {
FakeMail fakeMail = new FakeMail();
fakeMail.setSender(new MailAddress("any@any.com"));
MimeMessage message = new MimeMessage(Session.getDefaultInstance(new Properties()));
message.setHeader("List-Subscribe", "any");
fakeMail.setMessage(message);
FakeMail fakeMail = FakeMail.builder()
.sender(new MailAddress("any@any.com"))
.mimeMessage(message)
.build();

assertThat(new AutomaticallySentMailDetectorImpl().isMailingList(fakeMail)).isTrue();
}

@Test
public void listUnsubscribeShouldBeDetected() throws Exception {
FakeMail fakeMail = new FakeMail();
fakeMail.setSender(new MailAddress("any@any.com"));
MimeMessage message = new MimeMessage(Session.getDefaultInstance(new Properties()));
message.setHeader("List-Unsubscribe", "any");
fakeMail.setMessage(message);
FakeMail fakeMail = FakeMail.builder()
.sender(new MailAddress("any@any.com"))
.mimeMessage(message)
.build();

assertThat(new AutomaticallySentMailDetectorImpl().isMailingList(fakeMail)).isTrue();
}

@Test
public void listPostShouldBeDetected() throws Exception {
FakeMail fakeMail = new FakeMail();
fakeMail.setSender(new MailAddress("any@any.com"));
MimeMessage message = new MimeMessage(Session.getDefaultInstance(new Properties()));
message.setHeader("List-Post", "any");
fakeMail.setMessage(message);
FakeMail fakeMail = FakeMail.builder()
.sender(new MailAddress("any@any.com"))
.mimeMessage(message)
.build();

assertThat(new AutomaticallySentMailDetectorImpl().isMailingList(fakeMail)).isTrue();
}

@Test
public void listOwnerShouldBeDetected() throws Exception {
FakeMail fakeMail = new FakeMail();
fakeMail.setSender(new MailAddress("any@any.com"));
MimeMessage message = new MimeMessage(Session.getDefaultInstance(new Properties()));
message.setHeader("List-Owner", "any");
fakeMail.setMessage(message);
FakeMail fakeMail = FakeMail.builder()
.sender(new MailAddress("any@any.com"))
.mimeMessage(message)
.build();

assertThat(new AutomaticallySentMailDetectorImpl().isMailingList(fakeMail)).isTrue();
}

@Test
public void listArchiveShouldBeDetected() throws Exception {
FakeMail fakeMail = new FakeMail();
fakeMail.setSender(new MailAddress("any@any.com"));
MimeMessage message = new MimeMessage(Session.getDefaultInstance(new Properties()));
message.setHeader("List-Archive", "any");
fakeMail.setMessage(message);
FakeMail fakeMail = FakeMail.builder()
.sender(new MailAddress("any@any.com"))
.mimeMessage(message)
.build();

assertThat(new AutomaticallySentMailDetectorImpl().isMailingList(fakeMail)).isTrue();
}

@Test
public void normalMailShouldNotBeIdentifiedAsMailingList() throws Exception {
FakeMail fakeMail = new FakeMail();
fakeMail.setSender(new MailAddress("any@any.com"));
fakeMail.setMessage(new MimeMessage(Session.getDefaultInstance(new Properties())));
FakeMail fakeMail = FakeMail.builder()
.sender(new MailAddress("any@any.com"))
.mimeMessage(new MimeMessage(Session.getDefaultInstance(new Properties())))
.build();

assertThat(new AutomaticallySentMailDetectorImpl().isMailingList(fakeMail)).isFalse();
}

@Test
public void isAutoSubmittedShouldNotMatchNonAutoSubmittedMails() throws Exception {
FakeMail fakeMail = new FakeMail();
fakeMail.setMessage(new MimeMessage(Session.getDefaultInstance(new Properties())));
FakeMail fakeMail = FakeMail.builder()
.mimeMessage(new MimeMessage(Session.getDefaultInstance(new Properties())))
.build();

assertThat(new AutomaticallySentMailDetectorImpl().isAutoSubmitted(fakeMail)).isFalse();
}

@Test
public void isAutoSubmittedShouldBeDetected() throws Exception {
FakeMail fakeMail = new FakeMail();
fakeMail.setSender(new MailAddress("any@any.com"));
MimeMessage message = new MimeMessage(Session.getDefaultInstance(new Properties()));
message.setHeader("Auto-Submitted", "auto-replied");
fakeMail.setMessage(message);
FakeMail fakeMail = FakeMail.builder()
.sender(new MailAddress("any@any.com"))
.mimeMessage(message)
.build();

assertThat(new AutomaticallySentMailDetectorImpl().isAutoSubmitted(fakeMail)).isTrue();
}

@Test
public void isMdnSentAutomaticallyShouldBeDetected() throws Exception {
FakeMail fakeMail = new FakeMail();
fakeMail.setSender(new MailAddress("any@any.com"));
MimeMessage message = new MimeMessage(Session.getDefaultInstance(new Properties()));
MimeMultipart multipart = new MimeMultipart();
MimeBodyPart scriptPart = new MimeBodyPart();
scriptPart.setDataHandler(
new DataHandler(
new ByteArrayDataSource(
"Disposition: MDN-sent-automatically",
"message/disposition-notification;")
));
new DataHandler(
new ByteArrayDataSource(
"Disposition: MDN-sent-automatically",
"message/disposition-notification;")
));
scriptPart.setHeader("Content-Type", "message/disposition-notification");
multipart.addBodyPart(scriptPart);
message.setContent(multipart);

fakeMail.setMessage(message);

FakeMail fakeMail = FakeMail.builder()
.sender(new MailAddress("any@any.com"))
.mimeMessage(message)
.build();

assertThat(new AutomaticallySentMailDetectorImpl().isMdnSentAutomatically(fakeMail)).isTrue();
}

@Test
public void isMdnSentAutomaticallyShouldNotFilterManuallySentMdn() throws Exception {
FakeMail fakeMail = new FakeMail();
fakeMail.setSender(new MailAddress("any@any.com"));
MimeMessage message = new MimeMessage(Session.getDefaultInstance(new Properties()));
MimeMultipart multipart = new MimeMultipart();
MimeBodyPart scriptPart = new MimeBodyPart();
scriptPart.setDataHandler(
new DataHandler(
new ByteArrayDataSource(
"Disposition: MDN-sent-manually",
"message/disposition-notification; charset=UTF-8")
));
new DataHandler(
new ByteArrayDataSource(
"Disposition: MDN-sent-manually",
"message/disposition-notification; charset=UTF-8")
));
scriptPart.setHeader("Content-Type", "message/disposition-notification");
multipart.addBodyPart(scriptPart);
message.setContent(multipart);

fakeMail.setMessage(message);

FakeMail fakeMail = FakeMail.builder()
.sender(new MailAddress("any@any.com"))
.mimeMessage(message)
.build();

assertThat(new AutomaticallySentMailDetectorImpl().isMdnSentAutomatically(fakeMail)).isFalse();
}

@Test
public void isMdnSentAutomaticallyShouldManageItsMimeType() throws Exception {
FakeMail fakeMail = new FakeMail();
fakeMail.setSender(new MailAddress("any@any.com"));
MimeMessage message = new MimeMessage(Session.getDefaultInstance(new Properties()));
MimeMultipart multipart = new MimeMultipart();
MimeBodyPart scriptPart = new MimeBodyPart();
scriptPart.setDataHandler(
new DataHandler(
new ByteArrayDataSource(
"Disposition: MDN-sent-automatically",
"text/plain")
));
new DataHandler(
new ByteArrayDataSource(
"Disposition: MDN-sent-automatically",
"text/plain")
));
scriptPart.setHeader("Content-Type", "text/plain");
multipart.addBodyPart(scriptPart);
message.setContent(multipart);

fakeMail.setMessage(message);

FakeMail fakeMail = FakeMail.builder()
.sender(new MailAddress("any@any.com"))
.mimeMessage(message)
.build();

assertThat(new AutomaticallySentMailDetectorImpl().isMdnSentAutomatically(fakeMail)).isFalse();
}
Expand Down
Expand Up @@ -19,18 +19,20 @@

package org.apache.mailet.base;

import org.apache.mailet.Mail;
import org.apache.mailet.MailAddress;
import org.apache.mailet.base.test.FakeMail;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import org.junit.Test;

import javax.mail.MessagingException;
import java.util.Arrays;
import java.util.Collection;

import javax.mail.MessagingException;

import org.apache.mailet.Mail;
import org.apache.mailet.MailAddress;
import org.apache.mailet.base.test.FakeMail;
import org.junit.Test;

public class MatcherInverterTest {

@Test
Expand All @@ -41,8 +43,9 @@ public Collection<MailAddress> match(Mail mail) throws MessagingException {
return null;
}
});
FakeMail mail = new FakeMail();
mail.setRecipients(Arrays.asList(new MailAddress("user", "domain")));
FakeMail mail = FakeMail.builder()
.recipient(new MailAddress("user", "domain"))
.build();

assertNotNull("Should match all recipients", inverter.match(mail));
}
Expand All @@ -58,8 +61,9 @@ public Collection<MailAddress> match(Mail mail) throws MessagingException {
return mail.getRecipients();
}
});
FakeMail mail = new FakeMail();
mail.setRecipients(Arrays.asList(address1, address2));
FakeMail mail = FakeMail.builder()
.recipients(address1, address2)
.build();

assertNull("Should match all recipients", inverter.match(mail));
}
Expand All @@ -75,8 +79,9 @@ public Collection<MailAddress> match(Mail mail) throws MessagingException {
return Arrays.asList(address1);
}
});
FakeMail mail = new FakeMail();
mail.setRecipients(Arrays.asList(address1, address2));
FakeMail mail = FakeMail.builder()
.recipients(address1, address2)
.build();

assertEquals("Should match one recipient", address2.toString(), inverter.match(mail).iterator().next().toString());
}
Expand Down

0 comments on commit b345818

Please sign in to comment.