http://git-wip-us.apache.org/repos/asf/james-project/blob/71accd66/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveIntegrationTest.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveIntegrationTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveIntegrationTest.java index c3071cc..481b5d5 100644 --- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveIntegrationTest.java +++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveIntegrationTest.java @@ -20,21 +20,13 @@ package org.apache.james.transport.mailets.delivery; import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.Matchers.any; -import static org.mockito.Matchers.eq; import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.verifyNoMoreInteractions; -import static org.mockito.Mockito.verifyZeroInteractions; import static org.mockito.Mockito.when; import java.io.IOException; -import java.io.InputStream; -import java.util.Date; import java.util.Properties; import javax.activation.DataHandler; -import javax.mail.Flags; import javax.mail.MessagingException; import javax.mail.Session; import javax.mail.internet.InternetAddress; @@ -43,21 +35,16 @@ import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; import javax.mail.util.ByteArrayDataSource; -import org.apache.commons.logging.Log; -import org.apache.james.mailbox.MailboxManager; -import org.apache.james.mailbox.MailboxSession; -import org.apache.james.mailbox.MessageManager; -import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.model.MailboxPath; import org.apache.james.sieverepository.api.exception.ScriptNotFoundException; +import org.apache.james.transport.mailets.Sieve; import org.apache.james.transport.mailets.jsieve.ResourceLocator; -import org.apache.james.transport.mailets.jsieve.delivery.SieveMailStore; -import org.apache.james.transport.mailets.jsieve.delivery.SievePoster; import org.apache.james.user.api.UsersRepository; import org.apache.mailet.Mail; import org.apache.mailet.MailAddress; import org.apache.mailet.base.test.FakeMail; import org.apache.mailet.base.test.FakeMailContext; +import org.apache.mailet.base.test.FakeMailetConfig; import org.joda.time.DateTime; import org.joda.time.format.DateTimeFormat; import org.joda.time.format.DateTimeFormatter; @@ -65,11 +52,10 @@ import org.junit.Before; import org.junit.Test; import org.slf4j.Logger; -import com.google.common.collect.Lists; - public class SieveIntegrationTest { - public static final String RECEIVER_DOMAIN_COM = "[email protected]"; + public static final String LOCAL_PART = "receiver"; + public static final String RECEIVER_DOMAIN_COM = LOCAL_PART + "@domain.com"; class Header { String name; @@ -86,33 +72,23 @@ public class SieveIntegrationTest { public static final DateTime DATE_DEFAULT = formatter.parseDateTime("2016-01-14 00:00:00"); public static final DateTime DATE_NEW = formatter.parseDateTime("2016-01-18 00:00:00"); public static final DateTime DATE_OLD = formatter.parseDateTime("2011-01-18 00:00:00"); - public static final MailboxPath NOT_SELECTED_MAILBOX = new MailboxPath("#private", "receiver", "INBOX.not.selected"); - public static final MailboxPath SELECTED_MAILBOX = new MailboxPath("#private", "receiver", "INBOX.select"); - public static final MailboxPath INBOX = new MailboxPath("#private", "receiver", "INBOX"); + public static final MailboxPath NOT_SELECTED_MAILBOX = new MailboxPath("#private", LOCAL_PART, "INBOX.not.selected"); + public static final MailboxPath SELECTED_MAILBOX = new MailboxPath("#private", LOCAL_PART, "INBOX.select"); + public static final MailboxPath INBOX = new MailboxPath("#private", LOCAL_PART, "INBOX"); - private MailStore testee; + private Sieve testee; private UsersRepository usersRepository; - private MailboxManager mailboxManager; private ResourceLocator resourceLocator; private FakeMailContext fakeMailContext; - private MailAddress sender; @Before public void setUp() throws Exception { resourceLocator = mock(ResourceLocator.class); usersRepository = mock(UsersRepository.class); - mailboxManager = mock(MailboxManager.class); - fakeMailContext = FakeMailContext.defaultContext(); - sender = new MailAddress("sender@any"); - - testee = SieveMailStore.builder() - .resourceLocator(resourceLocator) - .usersRepository(usersRepository) - .folder("INBOX") - .sievePoster(new SievePoster(new MailboxAppender(mailboxManager, mock(Logger.class)), "INBOX", usersRepository)) - .log(mock(Log.class)) - .mailetContext(fakeMailContext) - .build(); + fakeMailContext = FakeMailContext.builder().logger(mock(Logger.class)).build(); + + testee = new Sieve(usersRepository, resourceLocator); + testee.init(new FakeMailetConfig("Sieve", fakeMailContext)); } @Test @@ -120,11 +96,11 @@ public class SieveIntegrationTest { when(usersRepository.supportVirtualHosting()).thenReturn(true); when(usersRepository.getUser(new MailAddress(RECEIVER_DOMAIN_COM))).thenReturn(RECEIVER_DOMAIN_COM); when(resourceLocator.get(RECEIVER_DOMAIN_COM)).thenThrow(new ScriptNotFoundException()); - final MessageManager messageManager = prepareMessageManagerOn(new MailboxPath("#private", RECEIVER_DOMAIN_COM, "INBOX")); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), createMail()); + FakeMail mail = createMail(); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + RECEIVER_DOMAIN_COM)).isEqualTo("/INBOX"); } @Test @@ -132,319 +108,309 @@ public class SieveIntegrationTest { when(usersRepository.supportVirtualHosting()).thenReturn(false); when(usersRepository.getUser(new MailAddress("receiver@localhost"))).thenReturn("receiver"); when(resourceLocator.get("receiver")).thenThrow(new ScriptNotFoundException()); - final MessageManager messageManager = prepareMessageManagerOn(INBOX); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), createMail()); + FakeMail mail = createMail(); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo("/INBOX"); } @Test public void keepScriptShouldWork() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/keep.script"); - final MessageManager messageManager = prepareMessageManagerOn(INBOX); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), createMail()); + FakeMail mail = createMail(); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo("/INBOX"); } @Test public void discardScriptShouldWork() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/discard.script"); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), createMail()); + FakeMail mail = createMail(); + testee.service(mail); - verifyNoMoreInteractions(mailboxManager); + + assertThat(mail.getRecipients()).isEmpty(); } @Test public void fileintoScriptShouldWork() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/fileinto.script"); - final MessageManager messageManager = prepareMessageManagerOn(new MailboxPath("#private", "receiver", "INBOX.any")); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), createMail()); + FakeMail mail = createMail(); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo("/INBOX/any"); } @Test public void allOfAllFalseScriptShouldWork() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/allofAllFalse.script"); - final MessageManager messageManager = prepareMessageManagerOn(NOT_SELECTED_MAILBOX); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), createMail()); + FakeMail mail = createMail(); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(NOT_SELECTED_MAILBOX.getName())); } @Test public void allOfOneFalseScriptShouldWork() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/allofOneFalse.script"); - final MessageManager messageManager = prepareMessageManagerOn(NOT_SELECTED_MAILBOX); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), createMail()); + FakeMail mail = createMail(); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(NOT_SELECTED_MAILBOX.getName())); } @Test public void allOfAllTrueScriptShouldWork() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/allofAllTrue.script"); - final MessageManager messageManager = prepareMessageManagerOn(SELECTED_MAILBOX); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), createMail()); + FakeMail mail = createMail(); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(SELECTED_MAILBOX.getName())); } @Test public void anyOfAllFalseScriptShouldWork() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/anyofAllFalse.script"); - final MessageManager messageManager = prepareMessageManagerOn(NOT_SELECTED_MAILBOX); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), createMail()); + FakeMail mail = createMail(); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(NOT_SELECTED_MAILBOX.getName())); } @Test public void falseScriptShouldWork() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/false.script"); - final MessageManager messageManager = prepareMessageManagerOn(NOT_SELECTED_MAILBOX); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), createMail()); + FakeMail mail = createMail(); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(NOT_SELECTED_MAILBOX.getName())); } @Test public void trueScriptShouldWork() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/true.script"); - final MessageManager messageManager = prepareMessageManagerOn(SELECTED_MAILBOX); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), createMail()); + FakeMail mail = createMail(); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(SELECTED_MAILBOX.getName())); } @Test public void notFalseScriptShouldWork() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/notFalse.script"); - final MessageManager messageManager = prepareMessageManagerOn(SELECTED_MAILBOX); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), createMail()); + FakeMail mail = createMail(); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(SELECTED_MAILBOX.getName())); } @Test public void notTrueScriptShouldWork() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/notTrue.script"); - final MessageManager messageManager = prepareMessageManagerOn(NOT_SELECTED_MAILBOX); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), createMail()); + FakeMail mail = createMail(); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(NOT_SELECTED_MAILBOX.getName())); } @Test public void anyOfOneFalseScriptShouldWork() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/anyofOneFalse.script"); - final MessageManager messageManager = prepareMessageManagerOn(SELECTED_MAILBOX); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), createMail()); + FakeMail mail = createMail(); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(SELECTED_MAILBOX.getName())); } @Test public void anyOfAllTrueScriptShouldWork() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/anyofAllTrue.script"); - final MessageManager messageManager = prepareMessageManagerOn(SELECTED_MAILBOX); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), createMail()); + FakeMail mail = createMail(); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(SELECTED_MAILBOX.getName())); } @Test public void stopScriptShouldWork() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/stop.script"); - final MessageManager messageManager = prepareMessageManagerOn(INBOX); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), createMail()); + FakeMail mail = createMail(); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(INBOX.getName())); } @Test public void headerScriptShouldWorkIfHeaderIsAbsent() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/header.script"); - final MessageManager messageManager = prepareMessageManagerOn(NOT_SELECTED_MAILBOX); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), createMail()); + FakeMail mail = createMail(); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(NOT_SELECTED_MAILBOX.getName())); } @Test public void headerScriptShouldWorkIfHeaderIsPresent() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/header.script"); - final MessageManager messageManager = prepareMessageManagerOn(SELECTED_MAILBOX); FakeMail mail = createMailWithSubject("JAMES-1620 revolution"); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), mail); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(SELECTED_MAILBOX.getName())); } @Test public void sizeOverScriptShouldWorkIfUnderLimit() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/sizeOver.script"); - final MessageManager messageManager = prepareMessageManagerOn(NOT_SELECTED_MAILBOX); FakeMail mail = createMail(); mail.setMessageSize(100); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), mail); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(NOT_SELECTED_MAILBOX.getName())); } @Test public void sizeUnderScriptShouldWorkIfUnderLimit() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/sizeUnder.script"); - final MessageManager messageManager = prepareMessageManagerOn(SELECTED_MAILBOX); FakeMail mail = createMail(); mail.setMessageSize(100); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), mail); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(SELECTED_MAILBOX.getName())); } @Test public void sizeOverScriptShouldWorkIfOverLimit() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/sizeOver.script"); - final MessageManager messageManager = prepareMessageManagerOn(SELECTED_MAILBOX); FakeMail mail = createMail(); mail.setMessageSize(1000); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), mail); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(SELECTED_MAILBOX.getName())); } @Test public void sizeUnderScriptShouldWorkIfOverLimit() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/sizeUnder.script"); - final MessageManager messageManager = prepareMessageManagerOn(NOT_SELECTED_MAILBOX); FakeMail mail = createMail(); mail.setMessageSize(1000); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), mail); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(NOT_SELECTED_MAILBOX.getName())); } @Test public void addressLocalPartShouldWork() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressLocalPart.script"); - final MessageManager messageManager = prepareMessageManagerOn(SELECTED_MAILBOX); FakeMail mail = createMailWithSubjectAndHeaders("Default", new Header("Cc", "[email protected]")); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), mail); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(SELECTED_MAILBOX.getName())); } @Test public void addressLocalPartShouldOnlyMatchLocalPart() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressLocalPart.script"); - final MessageManager messageManager = prepareMessageManagerOn(NOT_SELECTED_MAILBOX); FakeMail mail = createMailWithSubjectAndHeaders("Default", new Header("Cc", "[email protected]")); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), mail); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(NOT_SELECTED_MAILBOX.getName())); } @Test public void addressDomainShouldWork() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressDomain.script"); - final MessageManager messageManager = prepareMessageManagerOn(SELECTED_MAILBOX); FakeMail mail = createMailWithSubjectAndHeaders("Default", new Header("Cc", "[email protected]")); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), mail); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(SELECTED_MAILBOX.getName())); } @Test public void addressDomainShouldOnlyMatchLocalPart() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressDomain.script"); - final MessageManager messageManager = prepareMessageManagerOn(NOT_SELECTED_MAILBOX); FakeMail mail = createMailWithSubjectAndHeaders("Default", new Header("Cc", "[email protected]")); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), mail); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(NOT_SELECTED_MAILBOX.getName())); } @Test public void addressBccAllShouldNotMatchOtherHeaders() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllBcc.script"); - final MessageManager messageManager = prepareMessageManagerOn(NOT_SELECTED_MAILBOX); FakeMail mail = createMailWithSubjectAndHeaders("Default", new Header("Cc", "[email protected]")); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), mail); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(NOT_SELECTED_MAILBOX.getName())); } @Test public void addressBccAllShouldMatchSpecifiedAddress() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllBcc.script"); - final MessageManager messageManager = prepareMessageManagerOn(SELECTED_MAILBOX); FakeMail mail = createMailWithSubjectAndHeaders("Default", new Header("Bcc", "[email protected]")); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), mail); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(SELECTED_MAILBOX.getName())); } @Test public void addressBccAllShouldNotMatchOtherAddress() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllBcc.script"); - final MessageManager messageManager = prepareMessageManagerOn(NOT_SELECTED_MAILBOX); FakeMail mail = createMailWithSubjectAndHeaders("Default", new Header("Bcc", "[email protected]")); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), mail); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(NOT_SELECTED_MAILBOX.getName())); } @Test public void addressBccAllShouldNotMatchOtherDomain() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllBcc.script"); - final MessageManager messageManager = prepareMessageManagerOn(NOT_SELECTED_MAILBOX); FakeMail mail = createMailWithSubjectAndHeaders("Default", new Header("Bcc", "[email protected]")); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), mail); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(NOT_SELECTED_MAILBOX.getName())); } @Test public void redirectShouldWork() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/redirect.script"); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), createMail()); + FakeMail mail = createMail(); + testee.service(mail); - verifyZeroInteractions(mailboxManager); + assertThat(mail.getRecipients()).isEmpty(); FakeMailContext.SentMail expectedSentMail = FakeMailContext.sentMailBuilder() .sender(new MailAddress("[email protected]")) .recipient(new MailAddress("[email protected]")) @@ -456,397 +422,378 @@ public class SieveIntegrationTest { @Test public void addressCcAllShouldNotMatchOtherHeaders() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllCc.script"); - final MessageManager messageManager = prepareMessageManagerOn(NOT_SELECTED_MAILBOX); FakeMail mail = createMailWithSubjectAndHeaders("Default", new Header("Resend-From", "[email protected]")); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), mail); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(NOT_SELECTED_MAILBOX.getName())); } @Test public void addressCcAllShouldMatchSpecifiedAddress() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllCc.script"); - final MessageManager messageManager = prepareMessageManagerOn(SELECTED_MAILBOX); FakeMail mail = createMailWithSubjectAndHeaders("Default", new Header("Cc", "[email protected]")); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), mail); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(SELECTED_MAILBOX.getName())); } @Test public void addressCcAllShouldNotMatchOtherAddress() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllCc.script"); - final MessageManager messageManager = prepareMessageManagerOn(NOT_SELECTED_MAILBOX); FakeMail mail = createMailWithSubjectAndHeaders("Default", new Header("Cc", "[email protected]")); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), mail); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(NOT_SELECTED_MAILBOX.getName())); } @Test public void addressCcAllShouldNotMatchOtherDomain() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllCc.script"); - final MessageManager messageManager = prepareMessageManagerOn(NOT_SELECTED_MAILBOX); FakeMail mail = createMailWithSubjectAndHeaders("Default", new Header("Cc", "[email protected]")); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), mail); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(NOT_SELECTED_MAILBOX.getName())); } @Test public void addressFromAllShouldNotMatchOtherHeaders() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllFrom.script"); - final MessageManager messageManager = prepareMessageManagerOn(NOT_SELECTED_MAILBOX); FakeMail mail = createMailWithSubjectAndHeaders("Default", new Header("Cc", "[email protected]")); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), mail); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(NOT_SELECTED_MAILBOX.getName())); } @Test public void addressFromAllShouldMatchSpecifiedAddress() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllFrom.script"); - final MessageManager messageManager = prepareMessageManagerOn(SELECTED_MAILBOX); FakeMail mail = createMailWithSubjectAndHeaders("Default", new Header("From", "[email protected]")); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), mail); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(SELECTED_MAILBOX.getName())); } @Test public void addressFromAllShouldNotMatchOtherAddress() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllFrom.script"); - final MessageManager messageManager = prepareMessageManagerOn(NOT_SELECTED_MAILBOX); FakeMail mail = createMailWithSubjectAndHeaders("Default", new Header("From", "[email protected]")); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), mail); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(NOT_SELECTED_MAILBOX.getName())); } @Test public void addressFromAllShouldNotMatchOtherDomain() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllFrom.script"); - final MessageManager messageManager = prepareMessageManagerOn(NOT_SELECTED_MAILBOX); FakeMail mail = createMailWithSubjectAndHeaders("Default", new Header("From", "[email protected]")); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), mail); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(NOT_SELECTED_MAILBOX.getName())); } @Test public void addressToAllShouldNotMatchOtherHeaders() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllTo.script"); - final MessageManager messageManager = prepareMessageManagerOn(NOT_SELECTED_MAILBOX); FakeMail mail = createMailWithSubjectAndHeaders("Default", new Header("Resent-To", "[email protected]")); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), mail); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(NOT_SELECTED_MAILBOX.getName())); } @Test public void addressToAllShouldMatchSpecifiedAddress() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllTo.script"); - final MessageManager messageManager = prepareMessageManagerOn(SELECTED_MAILBOX); FakeMail mail = createMailWithSubjectAndHeaders("Default", new Header("To", "[email protected]")); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), mail); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(SELECTED_MAILBOX.getName())); } @Test public void addressToAllShouldNotMatchOtherAddress() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllTo.script"); - final MessageManager messageManager = prepareMessageManagerOn(NOT_SELECTED_MAILBOX); FakeMail mail = createMailWithSubjectAndHeaders("Default", new Header("To", "[email protected]")); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), mail); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(NOT_SELECTED_MAILBOX.getName())); } @Test public void addressToAllShouldNotMatchOtherDomain() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllTo.script"); - final MessageManager messageManager = prepareMessageManagerOn(NOT_SELECTED_MAILBOX); FakeMail mail = createMailWithSubjectAndHeaders("Default", new Header("To", "[email protected]")); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), mail); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(NOT_SELECTED_MAILBOX.getName())); } @Test public void addressSenderAllShouldNotMatchOtherHeaders() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllSender.script"); - final MessageManager messageManager = prepareMessageManagerOn(NOT_SELECTED_MAILBOX); FakeMail mail = createMailWithSubjectAndHeaders("Default", new Header("To", "[email protected]")); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), mail); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(NOT_SELECTED_MAILBOX.getName())); } @Test public void addressSenderAllShouldMatchSpecifiedAddress() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllSender.script"); - final MessageManager messageManager = prepareMessageManagerOn(SELECTED_MAILBOX); FakeMail mail = createMailWithSubjectAndHeaders("Default", new Header("Sender", "[email protected]")); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), mail); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(SELECTED_MAILBOX.getName())); } @Test public void addressSenderAllShouldNotMatchOtherAddress() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllSender.script"); - final MessageManager messageManager = prepareMessageManagerOn(NOT_SELECTED_MAILBOX); FakeMail mail = createMailWithSubjectAndHeaders("Default", new Header("Sender", "[email protected]")); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), mail); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(NOT_SELECTED_MAILBOX.getName())); } @Test public void addressSenderAllShouldNotMatchOtherDomain() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllSender.script"); - final MessageManager messageManager = prepareMessageManagerOn(NOT_SELECTED_MAILBOX); FakeMail mail = createMailWithSubjectAndHeaders("Default", new Header("Sender", "[email protected]")); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), mail); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(NOT_SELECTED_MAILBOX.getName())); } @Test public void addressResent_FromAllShouldNotMatchOtherHeaders() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllResend-From.script"); - final MessageManager messageManager = prepareMessageManagerOn(NOT_SELECTED_MAILBOX); FakeMail mail = createMailWithSubjectAndHeaders("Default", new Header("From", "[email protected]")); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), mail); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(NOT_SELECTED_MAILBOX.getName())); } @Test public void addressResent_FromAllShouldMatchSpecifiedAddress() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllResend-From.script"); - final MessageManager messageManager = prepareMessageManagerOn(SELECTED_MAILBOX); FakeMail mail = createMailWithSubjectAndHeaders("Default", new Header("Resend-From", "[email protected]")); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), mail); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(SELECTED_MAILBOX.getName())); } @Test public void addressResent_FromAllShouldNotMatchOtherAddress() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllResend-From.script"); - final MessageManager messageManager = prepareMessageManagerOn(NOT_SELECTED_MAILBOX); FakeMail mail = createMailWithSubjectAndHeaders("Default", new Header("Resend-From", "[email protected]")); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), mail); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(NOT_SELECTED_MAILBOX.getName())); } @Test public void addressResent_FromAllShouldNotMatchOtherDomain() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllResend-From.script"); - final MessageManager messageManager = prepareMessageManagerOn(NOT_SELECTED_MAILBOX); FakeMail mail = createMailWithSubjectAndHeaders("Default", new Header("Resend-From", "[email protected]")); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), mail); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(NOT_SELECTED_MAILBOX.getName())); } @Test public void addressResent_ToAllShouldNotMatchOtherHeaders() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllResend-To.script"); - final MessageManager messageManager = prepareMessageManagerOn(NOT_SELECTED_MAILBOX); FakeMail mail = createMailWithSubjectAndHeaders("Default", new Header("To", "[email protected]")); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), mail); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(NOT_SELECTED_MAILBOX.getName())); } @Test public void addressResent_ToAllShouldMatchSpecifiedAddress() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllResend-To.script"); - final MessageManager messageManager = prepareMessageManagerOn(SELECTED_MAILBOX); FakeMail mail = createMailWithSubjectAndHeaders("Default", new Header("Resend-To", "[email protected]")); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), mail); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(SELECTED_MAILBOX.getName())); } @Test public void addressResent_ToAllShouldNotMatchOtherAddress() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllResend-To.script"); - final MessageManager messageManager = prepareMessageManagerOn(NOT_SELECTED_MAILBOX); FakeMail mail = createMailWithSubjectAndHeaders("Default", new Header("Resend-To", "[email protected]")); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), mail); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(NOT_SELECTED_MAILBOX.getName())); } @Test public void addressResent_ToAllShouldNotMatchOtherDomain() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/addressAllResend-To.script"); - final MessageManager messageManager = prepareMessageManagerOn(NOT_SELECTED_MAILBOX); FakeMail mail = createMailWithSubjectAndHeaders("Default", new Header("Resend-To", "[email protected]")); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), mail); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(NOT_SELECTED_MAILBOX.getName())); } @Test public void envelopeFromShouldWork() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/envelopeFrom.script"); - final MessageManager messageManager = prepareMessageManagerOn(SELECTED_MAILBOX); FakeMail mail = createMailWithSubjectAndHeaders("Default", new Header("From", "[email protected]")); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), mail); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(SELECTED_MAILBOX.getName())); } @Test public void envelopeFromShouldNotMatchOtherAddress() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/envelopeFromOtherSender.script"); - final MessageManager messageManager = prepareMessageManagerOn(NOT_SELECTED_MAILBOX); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), createMail()); + FakeMail mail = createMail(); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(NOT_SELECTED_MAILBOX.getName())); } @Test public void envelopeToShouldWork() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/envelopeTo.script"); - final MessageManager messageManager = prepareMessageManagerOn(SELECTED_MAILBOX); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), createMail()); + FakeMail mail = createMail(); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(SELECTED_MAILBOX.getName())); } @Test public void envelopeToShouldNotMatchOtherAddress() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/envelopeToOtherReceiver.script"); - final MessageManager messageManager = prepareMessageManagerOn(NOT_SELECTED_MAILBOX); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), createMail()); + FakeMail mail = createMail(); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(NOT_SELECTED_MAILBOX.getName())); } @Test public void bodyRawShouldNotMatchNotContainedData() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/bodyRawInvalid.script"); - final MessageManager messageManager = prepareMessageManagerOn(NOT_SELECTED_MAILBOX); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), createMail()); + FakeMail mail = createMail(); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(NOT_SELECTED_MAILBOX.getName())); } @Test public void bodyRawShouldMatchContent() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/bodyRawMatch.script"); - final MessageManager messageManager = prepareMessageManagerOn(SELECTED_MAILBOX); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), createMail()); + FakeMail mail = createMail(); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(SELECTED_MAILBOX.getName())); } @Test public void bodyContentShouldMatchContent() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/bodyContentMatch.script"); - final MessageManager messageManager = prepareMessageManagerOn(SELECTED_MAILBOX); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), createMail()); + FakeMail mail = createMail(); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(SELECTED_MAILBOX.getName())); } @Test public void bodyContentShouldNotMatchNotContainedData() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/bodyContentInvalid.script"); - final MessageManager messageManager = prepareMessageManagerOn(NOT_SELECTED_MAILBOX); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), createMail()); + FakeMail mail = createMail(); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(NOT_SELECTED_MAILBOX.getName())); } @Test public void bodyContentShouldNotMatchWhenWrongContentType() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/bodyContentWrongContentType.script"); - final MessageManager messageManager = prepareMessageManagerOn(NOT_SELECTED_MAILBOX); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), createMail()); + FakeMail mail = createMail(); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(NOT_SELECTED_MAILBOX.getName())); } @Test public void bodyTextShouldNotMatchNotContainedData() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/bodyTextInvalid.script"); - final MessageManager messageManager = prepareMessageManagerOn(NOT_SELECTED_MAILBOX); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), createMail()); + FakeMail mail = createMail(); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(NOT_SELECTED_MAILBOX.getName())); } @Test public void bodyTextShouldMatchContent() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/bodyTextMatch.script"); - final MessageManager messageManager = prepareMessageManagerOn(SELECTED_MAILBOX); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), createMail()); + FakeMail mail = createMail(); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(SELECTED_MAILBOX.getName())); } @Test - public void doubleVacationShouldNotBeExecuted() throws Exception { + public void doubleVacationShouldNotBeExecutedAndReceiverShouldHaveANotificationAboutSieveError() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/doubleVacation.script"); - MessageManager messageManager = prepareMessageManagerOn(INBOX); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), createMail()); + FakeMail mail = createMail(); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); - assertThat(fakeMailContext.getSentMails()).isEmpty(); + // Notification of script interpretation failure + assertThat(fakeMailContext.getSentMails()).containsExactly(FakeMailContext.sentMailBuilder() + .recipient(new MailAddress(RECEIVER_DOMAIN_COM)) + .sender(new MailAddress(RECEIVER_DOMAIN_COM)) + .build()); + // No action taken + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isNull(); } @Test public void vacationShouldWork() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/vacationReason.script"); - MessageManager messageManager = prepareMessageManagerOn(INBOX); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), createMail()); + FakeMail mail = createMail(); + testee.service(mail); + + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(INBOX.getName())); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); FakeMailContext.SentMail expectedSentMail = FakeMailContext.sentMailBuilder() .sender(new MailAddress(RECEIVER_DOMAIN_COM)) .recipient(new MailAddress("[email protected]")) @@ -857,57 +804,56 @@ public class SieveIntegrationTest { @Test public void vacationShouldNotSendNotificationToMailingLists() throws Exception { prepareTestUsingScript("org/apache/james/transport/mailets/delivery/vacationReason.script"); - MessageManager messageManager = prepareMessageManagerOn(INBOX); Mail mail = createMail(); mail.getMessage().addHeader("List-Id", "0123456789"); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), mail); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(INBOX.getName())); assertThat(fakeMailContext.getSentMails()).isEmpty(); } @Test public void vacationShouldNotGenerateNotificationIfTooOld() throws Exception { prepareTestUsingScriptAndDates("org/apache/james/transport/mailets/delivery/vacationReason.script", DATE_OLD, DATE_NEW); - MessageManager messageManager = prepareMessageManagerOn(INBOX); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), createMail()); + FakeMail mail = createMail(); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(INBOX.getName())); assertThat(fakeMailContext.getSentMails()).isEmpty(); } @Test public void vacationShouldNotCancelFileIntoActionIfNotExecuted() throws Exception { prepareTestUsingScriptAndDates("org/apache/james/transport/mailets/delivery/vacationReasonAndFileInto.script", DATE_OLD, DATE_NEW); - MessageManager messageManager = prepareMessageManagerOn(SELECTED_MAILBOX); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), createMail()); + FakeMail mail = createMail(); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(SELECTED_MAILBOX.getName())); assertThat(fakeMailContext.getSentMails()).isEmpty(); } @Test public void vacationDaysParameterShouldFilterTooOldDates() throws Exception { prepareTestUsingScriptAndDates("org/apache/james/transport/mailets/delivery/vacationDaysReason.script", DATE_DEFAULT, DATE_NEW); - MessageManager messageManager = prepareMessageManagerOn(INBOX); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), createMail()); + FakeMail mail = createMail(); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(INBOX.getName())); assertThat(fakeMailContext.getSentMails()).isEmpty(); } @Test public void vacationDaysParameterShouldKeepDatesInRange() throws Exception { prepareTestUsingScriptAndDates("org/apache/james/transport/mailets/delivery/vacationDaysReason.script", DATE_CLOSE, DATE_NEW); - MessageManager messageManager = prepareMessageManagerOn(INBOX); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), createMail()); + FakeMail mail = createMail(); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(INBOX.getName())); FakeMailContext.SentMail expectedSentMail = FakeMailContext.sentMailBuilder() .sender(new MailAddress(RECEIVER_DOMAIN_COM)) .recipient(new MailAddress("[email protected]")) @@ -918,11 +864,11 @@ public class SieveIntegrationTest { @Test public void vacationShouldNotCancelFileIntoActionIfExecuted() throws Exception { prepareTestUsingScriptAndDates("org/apache/james/transport/mailets/delivery/vacationReasonAndFileInto.script", DATE_DEFAULT, DATE_NEW); - MessageManager messageManager = prepareMessageManagerOn(SELECTED_MAILBOX); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), createMail()); + FakeMail mail = createMail(); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(SELECTED_MAILBOX.getName())); FakeMailContext.SentMail expectedSentMail = FakeMailContext.sentMailBuilder() .sender(new MailAddress(RECEIVER_DOMAIN_COM)) .recipient(new MailAddress("[email protected]")) @@ -933,11 +879,11 @@ public class SieveIntegrationTest { @Test public void vacationFromSubjectShouldWork() throws Exception { prepareTestUsingScriptAndDates("org/apache/james/transport/mailets/delivery/vacationSubjectFromReason.script", DATE_DEFAULT, DATE_NEW); - MessageManager messageManager = prepareMessageManagerOn(INBOX); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), createMail()); + FakeMail mail = createMail(); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(INBOX.getName())); FakeMailContext.SentMail expectedSentMail = FakeMailContext.sentMailBuilder() .sender(new MailAddress("[email protected]")) .recipient(new MailAddress("[email protected]")) @@ -948,11 +894,11 @@ public class SieveIntegrationTest { @Test public void vacationDaysAddressesShouldWork() throws Exception { prepareTestUsingScriptAndDates("org/apache/james/transport/mailets/delivery/vacationDaysAddressesReason.script", DATE_CLOSE, DATE_NEW); - MessageManager messageManager = prepareMessageManagerOn(INBOX); - testee.storeMail(new MailAddress(RECEIVER_DOMAIN_COM), createMail()); + FakeMail mail = createMail(); + testee.service(mail); - verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); + assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + LOCAL_PART)).isEqualTo(expressMailboxNameWithSlash(INBOX.getName())); FakeMailContext.SentMail expectedSentMail = FakeMailContext.sentMailBuilder() .sender(new MailAddress(RECEIVER_DOMAIN_COM)) .recipient(new MailAddress("[email protected]")) @@ -966,24 +912,13 @@ public class SieveIntegrationTest { private void prepareTestUsingScriptAndDates(String script, DateTime scriptCreationDate, DateTime scriptExecutionDate) throws Exception { when(usersRepository.supportVirtualHosting()).thenReturn(false); - when(usersRepository.getUser(new MailAddress("receiver@localhost"))).thenReturn("receiver"); - when(resourceLocator.get("//receiver@localhost/sieve")).thenReturn(new ResourceLocator.UserSieveInformation(scriptCreationDate, + when(usersRepository.getUser(new MailAddress(LOCAL_PART + "@localhost"))).thenReturn(LOCAL_PART); + when(usersRepository.getUser(new MailAddress(LOCAL_PART + "@domain.com"))).thenReturn(LOCAL_PART); + when(resourceLocator.get("//" + LOCAL_PART + "@localhost/sieve")).thenReturn(new ResourceLocator.UserSieveInformation(scriptCreationDate, scriptExecutionDate, ClassLoader.getSystemResourceAsStream(script))); } - private MessageManager prepareMessageManagerOn(MailboxPath mailboxPath) throws MailboxException { - final MessageManager messageManager = mock(MessageManager.class); - when(mailboxManager.getMailbox(eq(mailboxPath), any(MailboxSession.class))).thenReturn(messageManager); - final MailboxSession session = mock(MailboxSession.class); - when(session.getPathDelimiter()).thenReturn('.'); - when(mailboxManager.createSystemSession(any(String.class), any(Logger.class))).thenReturn(session); - MailboxSession.User user = mock(MailboxSession.User.class); - when(session.getUser()).thenReturn(user); - when(user.getUserName()).thenReturn(mailboxPath.getUser()); - return messageManager; - } - private FakeMail createMail() throws MessagingException, IOException { return createMailWithSubject("Subject"); } @@ -1021,4 +956,8 @@ public class SieveIntegrationTest { .sender(new MailAddress("[email protected]")) .build(); } + + private String expressMailboxNameWithSlash(String name) { + return '/' + name.replace('.', '/'); + } }
http://git-wip-us.apache.org/repos/asf/james-project/blob/71accd66/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SimpleMailStoreTest.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SimpleMailStoreTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SimpleMailStoreTest.java index 74a00c6..bd43c80 100644 --- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SimpleMailStoreTest.java +++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SimpleMailStoreTest.java @@ -85,7 +85,7 @@ public class SimpleMailStoreTest { FakeMail mail = FakeMail.builder() .mimeMessage(mimeMessage) .build(); - testee.storeMail(sender, recipient, mail); + testee.storeMail(recipient, mail); verify(mailboxAppender).append(any(MimeMessage.class), eq(recipient.asString()), eq(FOLDER)); } @@ -98,7 +98,7 @@ public class SimpleMailStoreTest { FakeMail mail = FakeMail.builder() .mimeMessage(mimeMessage) .build(); - testee.storeMail(sender, recipient, mail); + testee.storeMail(recipient, mail); verify(mailboxAppender).append(any(MimeMessage.class), eq(recipient.getLocalPart()), eq(FOLDER)); } @@ -111,7 +111,7 @@ public class SimpleMailStoreTest { FakeMail mail = FakeMail.builder() .mimeMessage(mimeMessage) .build(); - testee.storeMail(sender, recipient, mail); + testee.storeMail(recipient, mail); verify(mailboxAppender).append(any(MimeMessage.class), eq(recipient.toString()), eq(FOLDER)); } http://git-wip-us.apache.org/repos/asf/james-project/blob/71accd66/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/ToRecipientFolderTest.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/ToRecipientFolderTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/ToRecipientFolderTest.java index edbf3c0..cf299d8 100644 --- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/ToRecipientFolderTest.java +++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/ToRecipientFolderTest.java @@ -28,7 +28,6 @@ import static org.mockito.Mockito.when; import java.io.IOException; import java.io.InputStream; -import java.util.Collection; import java.util.Date; import java.util.Properties; @@ -47,27 +46,20 @@ import org.apache.james.mailbox.MailboxSession; import org.apache.james.mailbox.MessageManager; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.model.MailboxPath; -import org.apache.james.sieverepository.api.SieveRepository; -import org.apache.james.transport.mailets.SieveToRecipientFolder; import org.apache.james.transport.mailets.ToRecipientFolder; import org.apache.james.user.api.UsersRepository; import org.apache.mailet.Mail; import org.apache.mailet.MailAddress; -import org.apache.mailet.base.GenericMailet; import org.apache.mailet.base.test.FakeMail; import org.apache.mailet.base.test.FakeMailContext; import org.apache.mailet.base.test.FakeMailetConfig; import org.junit.Assert; import org.junit.Before; import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; import org.slf4j.Logger; import com.google.common.base.Throwables; -import com.google.common.collect.ImmutableList; -@RunWith(Parameterized.class) public class ToRecipientFolderTest { public static final String USER_LOCAL_PART = "receiver"; @@ -75,56 +67,27 @@ public class ToRecipientFolderTest { public static final MailboxPath INBOX = new MailboxPath("#private", USER, "INBOX"); public static final MailboxPath JUNK = new MailboxPath("#private", USER_LOCAL_PART, "Junk"); public static final MailboxPath JUNK_VIRTUAL_HOSTING = new MailboxPath("#private", USER, "Junk"); - private MessageManager messageManager; - - public static class Parameter { - private final UsersRepository usersRepository; - private final MailboxManager mailboxManager; - private final SieveRepository sieveRepository; - private final GenericMailet mailet; - private final MailboxSession.User user; - - public Parameter(UsersRepository usersRepository, MailboxManager mailboxManager, SieveRepository sieveRepository, - GenericMailet mailet, MailboxSession.User user) { - this.usersRepository = usersRepository; - this.mailboxManager = mailboxManager; - this.sieveRepository = sieveRepository; - this.mailet = mailet; - this.user = user; - } - - public UsersRepository getUsersRepository() { - return usersRepository; - } - - public MailboxManager getMailboxManager() { - return mailboxManager; - } - public SieveRepository getSieveRepository() { - return sieveRepository; - } + private MessageManager messageManager; + private UsersRepository usersRepository; + private MailboxManager mailboxManager; + private ToRecipientFolder testee; + private MailboxSession.User user; - public GenericMailet getMailet() { - return mailet; - } - public MailboxSession.User getUser() { - return user; - } - } + private FakeMailetConfig mailetConfig; - @Parameterized.Parameters - public static Collection<Object[]> getLocalDeliveryClasses() { - SieveRepository sieveRepository = mock(SieveRepository.class); - UsersRepository usersRepository = mock(UsersRepository.class); - MailboxManager mailboxManager = mock(MailboxManager.class); + @Before + public void setUp() throws Exception { + mailetConfig = new FakeMailetConfig("RecipientFolderTest", FakeMailContext.builder().logger(mock(Logger.class)).build()); + messageManager = mock(MessageManager.class); + usersRepository = mock(UsersRepository.class); + mailboxManager = mock(MailboxManager.class); + user = mock(MailboxSession.User.class); - SieveToRecipientFolder sieveToRecipientFolder = new SieveToRecipientFolder(mailboxManager, sieveRepository, usersRepository); - ToRecipientFolder toRecipientFolder = new ToRecipientFolder(mailboxManager, usersRepository); + testee = new ToRecipientFolder(mailboxManager, usersRepository); - MailboxSession.User user = mock(MailboxSession.User.class); MailboxSession session = mock(MailboxSession.class); when(session.getPathDelimiter()).thenReturn('.'); try { @@ -133,90 +96,75 @@ public class ToRecipientFolderTest { throw Throwables.propagate(e); } when(session.getUser()).thenReturn(user); - - return ImmutableList.of( - new Object[]{new Parameter(usersRepository, mailboxManager, sieveRepository, sieveToRecipientFolder, user)}, - new Object[]{new Parameter(usersRepository, mailboxManager, sieveRepository, toRecipientFolder, user)} - ); - } - - @Parameterized.Parameter - public Parameter parameter; - private FakeMailetConfig mailetConfig; - - @Before - public void setUp() throws Exception { - mailetConfig = new FakeMailetConfig("RecipientFolderTest", FakeMailContext.builder().logger(mock(Logger.class)).build()); - messageManager = mock(MessageManager.class); } @Test public void initParameterTesting() throws Exception { mailetConfig.setProperty(ToRecipientFolder.FOLDER_PARAMETER, "Junk"); - parameter.getMailet().init(mailetConfig); + testee.init(mailetConfig); - Assert.assertEquals("Junk", parameter.getMailet().getInitParameter(ToRecipientFolder.FOLDER_PARAMETER)); + Assert.assertEquals("Junk", testee.getInitParameter(ToRecipientFolder.FOLDER_PARAMETER)); } @Test public void consumeOptionShouldGhostTheMail() throws Exception { mailetConfig.setProperty(ToRecipientFolder.CONSUME_PARAMETER, "true"); - parameter.getMailet().init(mailetConfig); + testee.init(mailetConfig); Mail mail = createMail(); - parameter.getMailet().service(mail); + testee.service(mail); assertThat(mail.getState()).isEqualTo(Mail.GHOST); } @Test public void consumeOptionShouldNotGhostTheMailByDefault() throws Exception { - parameter.getMailet().init(mailetConfig); + testee.init(mailetConfig); Mail mail = createMail(); - parameter.getMailet().service(mail); + testee.service(mail); assertThat(mail.getState()).isEqualTo(Mail.DEFAULT); } @Test public void folderParameterShouldIndicateDestinationFolder() throws Exception { - when(parameter.getUsersRepository().supportVirtualHosting()).thenReturn(true); - when(parameter.getUsersRepository().getUser(new MailAddress(USER))).thenReturn(USER); - when(parameter.getMailboxManager().getMailbox(eq(JUNK_VIRTUAL_HOSTING), any(MailboxSession.class))).thenReturn(messageManager); - when(parameter.getUser().getUserName()).thenReturn(USER); + when(usersRepository.supportVirtualHosting()).thenReturn(true); + when(usersRepository.getUser(new MailAddress(USER))).thenReturn(USER); + when(mailboxManager.getMailbox(eq(JUNK_VIRTUAL_HOSTING), any(MailboxSession.class))).thenReturn(messageManager); + when(user.getUserName()).thenReturn(USER); mailetConfig.setProperty(ToRecipientFolder.FOLDER_PARAMETER, "Junk"); - parameter.getMailet().init(mailetConfig); - parameter.getMailet().service(createMail()); + testee.init(mailetConfig); + testee.service(createMail()); verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); } @Test public void folderParameterShouldBeInboxByDefault() throws Exception { - when(parameter.getUsersRepository().supportVirtualHosting()).thenReturn(true); - when(parameter.getUsersRepository().getUser(new MailAddress(USER))).thenReturn(USER); - when(parameter.getMailboxManager().getMailbox(eq(INBOX), any(MailboxSession.class))).thenReturn(messageManager); - when(parameter.getUser().getUserName()).thenReturn(USER); + when(usersRepository.supportVirtualHosting()).thenReturn(true); + when(usersRepository.getUser(new MailAddress(USER))).thenReturn(USER); + when(mailboxManager.getMailbox(eq(INBOX), any(MailboxSession.class))).thenReturn(messageManager); + when(user.getUserName()).thenReturn(USER); - parameter.getMailet().init(mailetConfig); - parameter.getMailet().service(createMail()); + testee.init(mailetConfig); + testee.service(createMail()); verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); } @Test public void folderParameterShouldWorkWhenVirtualHostingIsTurnedOff() throws Exception { - when(parameter.getUsersRepository().supportVirtualHosting()).thenReturn(false); - when(parameter.getUsersRepository().getUser(new MailAddress(USER_LOCAL_PART + "@localhost"))).thenReturn(USER_LOCAL_PART); - when(parameter.getUsersRepository().getUser(new MailAddress(USER))).thenReturn(USER_LOCAL_PART); - when(parameter.getMailboxManager().getMailbox(eq(JUNK), any(MailboxSession.class))).thenReturn(messageManager); - when(parameter.getUser().getUserName()).thenReturn(USER_LOCAL_PART); + when(usersRepository.supportVirtualHosting()).thenReturn(false); + when(usersRepository.getUser(new MailAddress(USER_LOCAL_PART + "@localhost"))).thenReturn(USER_LOCAL_PART); + when(usersRepository.getUser(new MailAddress(USER))).thenReturn(USER_LOCAL_PART); + when(mailboxManager.getMailbox(eq(JUNK), any(MailboxSession.class))).thenReturn(messageManager); + when(user.getUserName()).thenReturn(USER_LOCAL_PART); mailetConfig.setProperty(ToRecipientFolder.FOLDER_PARAMETER, "Junk"); - parameter.getMailet().init(mailetConfig); - parameter.getMailet().service(createMail()); + testee.init(mailetConfig); + testee.service(createMail()); verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class)); } http://git-wip-us.apache.org/repos/asf/james-project/blob/71accd66/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/resources/mailetcontainer.xml ---------------------------------------------------------------------- diff --git a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/resources/mailetcontainer.xml b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/resources/mailetcontainer.xml index 0bef357..28bdcee 100644 --- a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/resources/mailetcontainer.xml +++ b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/resources/mailetcontainer.xml @@ -54,6 +54,7 @@ <name>bcc</name> </mailet> <mailet match="RecipientIsLocal" class="org.apache.james.jmap.mailet.VacationMailet"/> + <mailet match="RecipientIsLocal" class="Sieve"/> <mailet match="RecipientIsLocal" class="LocalDelivery"/> <mailet match="HostIsLocal" class="ToProcessor"> <processor>local-address-error</processor> http://git-wip-us.apache.org/repos/asf/james-project/blob/71accd66/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/src/test/resources/mailetcontainer.xml ---------------------------------------------------------------------- diff --git a/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/src/test/resources/mailetcontainer.xml b/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/src/test/resources/mailetcontainer.xml index 0bef357..28bdcee 100644 --- a/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/src/test/resources/mailetcontainer.xml +++ b/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/src/test/resources/mailetcontainer.xml @@ -54,6 +54,7 @@ <name>bcc</name> </mailet> <mailet match="RecipientIsLocal" class="org.apache.james.jmap.mailet.VacationMailet"/> + <mailet match="RecipientIsLocal" class="Sieve"/> <mailet match="RecipientIsLocal" class="LocalDelivery"/> <mailet match="HostIsLocal" class="ToProcessor"> <processor>local-address-error</processor> http://git-wip-us.apache.org/repos/asf/james-project/blob/71accd66/server/protocols/webadmin-integration-test/src/test/resources/mailetcontainer.xml ---------------------------------------------------------------------- diff --git a/server/protocols/webadmin-integration-test/src/test/resources/mailetcontainer.xml b/server/protocols/webadmin-integration-test/src/test/resources/mailetcontainer.xml index b265f93..f1ea4af 100644 --- a/server/protocols/webadmin-integration-test/src/test/resources/mailetcontainer.xml +++ b/server/protocols/webadmin-integration-test/src/test/resources/mailetcontainer.xml @@ -56,6 +56,7 @@ </mailet> <mailet match="All" class="RecipientRewriteTable" /> <mailet match="RecipientIsLocal" class="org.apache.james.jmap.mailet.VacationMailet"/> + <mailet match="RecipientIsLocal" class="Sieve"/> <mailet match="RecipientIsLocal" class="LocalDelivery"/> <mailet match="HostIsLocal" class="ToProcessor"> <processor>local-address-error</processor> --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
