You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ro...@apache.org on 2016/11/23 13:50:15 UTC
[12/46] james-project git commit: JAMES-1854 Use parametrized tests
for mailets
JAMES-1854 Use parametrized tests for mailets
So that :
- SieveLocalDelivery and LocalDelivery pass the same subset of tests
- Idem for ToRecipientFolder and SieveToRecipientFolder
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/164d9248
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/164d9248
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/164d9248
Branch: refs/heads/master
Commit: 164d92487e422e87eeef82b4c854b231e7ab04dd
Parents: 2490351
Author: Benoit Tellier <bt...@linagora.com>
Authored: Mon Oct 31 11:23:15 2016 +0100
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Fri Nov 18 18:46:46 2016 +0700
----------------------------------------------------------------------
.../mailets/delivery/LocalDeliveryTest.java | 217 ++++++++++++++++
.../delivery/SieveLocalDeliveryTest.java | 153 -----------
.../delivery/SieveToRecipientFolderTest.java | 189 --------------
.../mailets/delivery/ToRecipientFolderTest.java | 251 +++++++++++++++++++
4 files changed, 468 insertions(+), 342 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/164d9248/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/LocalDeliveryTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/LocalDeliveryTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/LocalDeliveryTest.java
new file mode 100644
index 0000000..748d8d0
--- /dev/null
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/LocalDeliveryTest.java
@@ -0,0 +1,217 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+
+package org.apache.james.transport.mailets.delivery;
+
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+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;
+
+import javax.activation.DataHandler;
+import javax.mail.Flags;
+import javax.mail.MessagingException;
+import javax.mail.Session;
+import javax.mail.internet.InternetAddress;
+import javax.mail.internet.MimeBodyPart;
+import javax.mail.internet.MimeMessage;
+import javax.mail.internet.MimeMultipart;
+import javax.mail.util.ByteArrayDataSource;
+
+import org.apache.james.domainlist.api.DomainList;
+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.rrt.api.RecipientRewriteTable;
+import org.apache.james.sieverepository.api.SieveRepository;
+import org.apache.james.sieverepository.api.exception.ScriptNotFoundException;
+import org.apache.james.transport.mailets.LocalDelivery;
+import org.apache.james.transport.mailets.SieveLocalDelivery;
+import org.apache.james.user.api.UsersRepository;
+import org.apache.mailet.Mail;
+import org.apache.mailet.MailAddress;
+import org.apache.mailet.Mailet;
+import org.apache.mailet.base.test.FakeMail;
+import org.apache.mailet.base.test.FakeMailetConfig;
+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 LocalDeliveryTest {
+
+ public static class Parameter {
+ private final UsersRepository usersRepository;
+ private final MailboxManager mailboxManager;
+ private final SieveRepository sieveRepository;
+ private final Mailet mailet;
+ private final MailboxSession.User user;
+
+ public Parameter(UsersRepository usersRepository, MailboxManager mailboxManager, SieveRepository sieveRepository,
+ Mailet 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;
+ }
+
+ public Mailet getMailet() {
+ return mailet;
+ }
+
+ public MailboxSession.User getUser() {
+ return user;
+ }
+ }
+
+ @Parameterized.Parameters
+ public static Collection<Object[]> getLocalDeliveryClasses() {
+ SieveRepository sieveRepository = mock(SieveRepository.class);
+ UsersRepository usersRepository = mock(UsersRepository.class);
+ MailboxManager mailboxManager = mock(MailboxManager.class);
+ RecipientRewriteTable recipientRewriteTable = mock(RecipientRewriteTable.class);
+ DomainList domainList = mock(DomainList.class);
+
+ SieveLocalDelivery sieveLocalDelivery = new SieveLocalDelivery();
+ sieveLocalDelivery.setDomainList(domainList);
+ sieveLocalDelivery.setMailboxManager(mailboxManager);
+ sieveLocalDelivery.setRrt(recipientRewriteTable);
+ sieveLocalDelivery.setUsersRepository(usersRepository);
+ sieveLocalDelivery.setSieveRepository(sieveRepository);
+
+ LocalDelivery localDelivery = new LocalDelivery();
+ localDelivery.setDomainList(domainList);
+ localDelivery.setRrt(recipientRewriteTable);
+ localDelivery.setMailboxManager(mailboxManager);
+ localDelivery.setUsersRepository(usersRepository);
+
+ MailboxSession.User user = mock(MailboxSession.User.class);
+ MailboxSession session = mock(MailboxSession.class);
+ when(session.getPathDelimiter()).thenReturn('.');
+ try {
+ when(mailboxManager.createSystemSession(any(String.class), any(Logger.class))).thenReturn(session);
+ } catch (MailboxException e) {
+ throw Throwables.propagate(e);
+ }
+ when(session.getUser()).thenReturn(user);
+
+ return ImmutableList.of(
+ new Object[]{new Parameter(usersRepository, mailboxManager, sieveRepository, sieveLocalDelivery, user)},
+ new Object[]{new Parameter(usersRepository, mailboxManager, sieveRepository, localDelivery, user)}
+ );
+ }
+
+ @Parameterized.Parameter
+ public Parameter parameter;
+
+ @Test
+ public void mailShouldBeWellDeliveredByDefaultToUserWhenVirtualHostingIsTurnedOn() throws Exception {
+ // Given
+ String username = "receiver@domain.com";
+ MailboxPath inbox = new MailboxPath("#private", username, "INBOX");
+ MessageManager messageManager = mock(MessageManager.class);
+
+ when(parameter.getUsersRepository().supportVirtualHosting()).thenReturn(true);
+ doThrow(new ScriptNotFoundException()).when(parameter.getSieveRepository()).getActive(username);
+ when(parameter.getMailboxManager().getMailbox(eq(inbox), any(MailboxSession.class))).thenReturn(messageManager);
+ when(parameter.getUser().getUserName()).thenReturn(username);
+
+ // When
+ Mail mail = createMail();
+ parameter.getMailet().init(new FakeMailetConfig());
+ parameter.getMailet().service(mail);
+
+ // Then
+ verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+ }
+
+ @Test
+ public void mailShouldBeWellDeliveredByDefaultToUserWhenVirtualHostingIsTurnedOff() throws Exception {
+ // Given
+ String username = "receiver";
+ MailboxPath inbox = new MailboxPath("#private", username, "INBOX");
+ MessageManager messageManager = mock(MessageManager.class);
+ when(parameter.getUsersRepository().supportVirtualHosting()).thenReturn(false);
+ doThrow(new ScriptNotFoundException()).when(parameter.getSieveRepository()).getActive(username);
+ when(parameter.getMailboxManager().getMailbox(eq(inbox), any(MailboxSession.class))).thenReturn(messageManager);
+ when(parameter.getUser().getUserName()).thenReturn(username);
+
+ // When
+ Mail mail = createMail();
+ parameter.getMailet().init(new FakeMailetConfig());
+ parameter.getMailet().service(mail);
+
+ // Then
+ verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+ }
+
+ private Mail createMail() throws MessagingException, IOException {
+ MimeMessage message = new MimeMessage(Session.getDefaultInstance(new Properties()));
+ message.setSubject("Subject");
+ message.setSender(new InternetAddress("sender@any.com"));
+ message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress("receiver@domain.com"));
+ MimeMultipart multipart = new MimeMultipart();
+ MimeBodyPart scriptPart = new MimeBodyPart();
+ scriptPart.setDataHandler(
+ new DataHandler(
+ new ByteArrayDataSource(
+ "toto",
+ "application/sieve; charset=UTF-8")
+ ));
+ scriptPart.setDisposition(MimeBodyPart.ATTACHMENT);
+ scriptPart.setHeader("Content-Type", "application/sieve; charset=UTF-8");
+ scriptPart.setFileName("file.txt");
+ multipart.addBodyPart(scriptPart);
+ message.setContent(multipart);
+ message.saveChanges();
+ return FakeMail.builder()
+ .mimeMessage(message)
+ .state(Mail.DEFAULT)
+ .recipient(new MailAddress("receiver@domain.com"))
+ .build();
+ }
+
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/james-project/blob/164d9248/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveLocalDeliveryTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveLocalDeliveryTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveLocalDeliveryTest.java
deleted file mode 100644
index 3b081ab..0000000
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveLocalDeliveryTest.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one *
- * or more contributor license agreements. See the NOTICE file *
- * distributed with this work for additional information *
- * regarding copyright ownership. The ASF licenses this file *
- * to you under the Apache License, Version 2.0 (the *
- * "License"); you may not use this file except in compliance *
- * with the License. You may obtain a copy of the License at *
- * *
- * http://www.apache.org/licenses/LICENSE-2.0 *
- * *
- * Unless required by applicable law or agreed to in writing, *
- * software distributed under the License is distributed on an *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
- * KIND, either express or implied. See the License for the *
- * specific language governing permissions and limitations *
- * under the License. *
- ****************************************************************/
-
-package org.apache.james.transport.mailets.delivery;
-
-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.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;
-import javax.mail.internet.MimeBodyPart;
-import javax.mail.internet.MimeMessage;
-import javax.mail.internet.MimeMultipart;
-import javax.mail.util.ByteArrayDataSource;
-
-import org.apache.james.domainlist.api.DomainList;
-import org.apache.james.mailbox.MailboxManager;
-import org.apache.james.mailbox.MailboxSession;
-import org.apache.james.mailbox.MessageManager;
-import org.apache.james.mailbox.model.MailboxPath;
-import org.apache.james.rrt.api.RecipientRewriteTable;
-import org.apache.james.sieverepository.api.SieveRepository;
-import org.apache.james.sieverepository.api.exception.ScriptNotFoundException;
-import org.apache.james.transport.mailets.SieveLocalDelivery;
-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.FakeMailetConfig;
-import org.junit.Before;
-import org.junit.Test;
-import org.slf4j.Logger;
-
-public class SieveLocalDeliveryTest {
-
- private UsersRepository usersRepository;
- private MailboxManager mailboxManager;
- private SieveRepository sieveRepository;
- private SieveLocalDelivery sieveLocalDelivery;
- private MailboxSession.User user;
-
- @Before
- public void setUp() throws Exception {
- sieveRepository = mock(SieveRepository.class);
- usersRepository = mock(UsersRepository.class);
- mailboxManager = mock(MailboxManager.class);
- RecipientRewriteTable recipientRewriteTable = mock(RecipientRewriteTable.class);
- DomainList domainList = mock(DomainList.class);
- user = mock(MailboxSession.User.class);
- MailboxSession session = mock(MailboxSession.class);
-
- sieveLocalDelivery = new SieveLocalDelivery();
- sieveLocalDelivery.setDomainList(domainList);
- sieveLocalDelivery.setMailboxManager(mailboxManager);
- sieveLocalDelivery.setRrt(recipientRewriteTable);
- sieveLocalDelivery.setUsersRepository(usersRepository);
- sieveLocalDelivery.setSieveRepository(sieveRepository);
-
- when(session.getPathDelimiter()).thenReturn('.');
- when(mailboxManager.createSystemSession(any(String.class), any(Logger.class))).thenReturn(session);
- when(session.getUser()).thenReturn(user);
- }
-
- @Test
- public void mailShouldBeWellDeliveredByDefaultToUserWhenVirtualHostingIsTurnedOn() throws Exception {
- when(usersRepository.supportVirtualHosting()).thenReturn(true);
- String username = "receiver@domain.com";
- when(sieveRepository.getActive(username)).thenThrow(new ScriptNotFoundException());
- MailboxPath inbox = new MailboxPath("#private", username, "INBOX");
- MessageManager messageManager = mock(MessageManager.class);
- when(mailboxManager.getMailbox(eq(inbox), any(MailboxSession.class))).thenReturn(messageManager);
- when(user.getUserName()).thenReturn(username);
-
- Mail mail = createMail();
-
- sieveLocalDelivery.init(new FakeMailetConfig());
- sieveLocalDelivery.service(mail);
-
- verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
- }
-
- @Test
- public void mailShouldBeWellDeliveredByDefaultToUserWhenVirtualHostingIsTurnedOff() throws Exception {
- when(usersRepository.supportVirtualHosting()).thenReturn(false);
- String username = "receiver";
- when(sieveRepository.getActive(username)).thenThrow(new ScriptNotFoundException());
- MailboxPath inbox = new MailboxPath("#private", username, "INBOX");
- final MessageManager messageManager = mock(MessageManager.class);
- when(mailboxManager.getMailbox(eq(inbox), any(MailboxSession.class))).thenReturn(messageManager);
- when(user.getUserName()).thenReturn(username);
-
- Mail mail = createMail();
-
- sieveLocalDelivery.init(new FakeMailetConfig());
- sieveLocalDelivery.service(mail);
-
- verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
- }
-
- private Mail createMail() throws MessagingException, IOException {
- MimeMessage message = new MimeMessage(Session.getDefaultInstance(new Properties()));
- message.setSubject("Subject");
- message.setSender(new InternetAddress("sender@any.com"));
- message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress("receiver@domain.com"));
- MimeMultipart multipart = new MimeMultipart();
- MimeBodyPart scriptPart = new MimeBodyPart();
- scriptPart.setDataHandler(
- new DataHandler(
- new ByteArrayDataSource(
- "toto",
- "application/sieve; charset=UTF-8")
- ));
- scriptPart.setDisposition(MimeBodyPart.ATTACHMENT);
- scriptPart.setHeader("Content-Type", "application/sieve; charset=UTF-8");
- scriptPart.setFileName("file.txt");
- multipart.addBodyPart(scriptPart);
- message.setContent(multipart);
- message.saveChanges();
- return FakeMail.builder()
- .mimeMessage(message)
- .state(Mail.DEFAULT)
- .recipient(new MailAddress("receiver@domain.com"))
- .build();
- }
-
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/james-project/blob/164d9248/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveToRecipientFolderTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveToRecipientFolderTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveToRecipientFolderTest.java
deleted file mode 100644
index dbc7537..0000000
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveToRecipientFolderTest.java
+++ /dev/null
@@ -1,189 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one *
- * or more contributor license agreements. See the NOTICE file *
- * distributed with this work for additional information *
- * regarding copyright ownership. The ASF licenses this file *
- * to you under the Apache License, Version 2.0 (the *
- * "License"); you may not use this file except in compliance *
- * with the License. You may obtain a copy of the License at *
- * *
- * http://www.apache.org/licenses/LICENSE-2.0 *
- * *
- * Unless required by applicable law or agreed to in writing, *
- * software distributed under the License is distributed on an *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
- * KIND, either express or implied. See the License for the *
- * specific language governing permissions and limitations *
- * under the License. *
- ****************************************************************/
-
-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.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;
-import javax.mail.internet.MimeBodyPart;
-import javax.mail.internet.MimeMessage;
-import javax.mail.internet.MimeMultipart;
-import javax.mail.util.ByteArrayDataSource;
-
-import org.apache.james.mailbox.MailboxManager;
-import org.apache.james.mailbox.MailboxSession;
-import org.apache.james.mailbox.MessageManager;
-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.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.slf4j.Logger;
-
-public class SieveToRecipientFolderTest {
-
- public static final String USER_LOCAL_PART = "receiver";
- public static final String USER = USER_LOCAL_PART + "@domain.com";
- 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 UsersRepository usersRepository;
- private MailboxManager mailboxManager;
- private SieveToRecipientFolder recipientFolder;
- private FakeMailetConfig mailetConfig;
- private MailboxSession.User user;
- private MessageManager messageManager;
-
- @Before
- public void setUp() throws Exception {
- usersRepository = mock(UsersRepository.class);
- mailboxManager = mock(MailboxManager.class);
-
- mailetConfig = new FakeMailetConfig("RecipientFolderTest", FakeMailContext.defaultContext());
-
- recipientFolder = new SieveToRecipientFolder();
- recipientFolder.setMailboxManager(mailboxManager);
- recipientFolder.setUsersRepository(usersRepository);
- recipientFolder.setSieveRepository(mock(SieveRepository.class));
-
- messageManager = mock(MessageManager.class);
- MailboxSession session = mock(MailboxSession.class);
- when(session.getPathDelimiter()).thenReturn('.');
- when(mailboxManager.createSystemSession(any(String.class), any(Logger.class))).thenReturn(session);
- user = mock(MailboxSession.User.class);
- when(session.getUser()).thenReturn(user);
- }
-
- @Test
- public void initParameterTesting() throws Exception {
- mailetConfig.setProperty(ToRecipientFolder.FOLDER_PARAMETER, "Junk");
- recipientFolder.init(mailetConfig);
-
- Assert.assertEquals("Junk", recipientFolder.getInitParameter(ToRecipientFolder.FOLDER_PARAMETER));
- }
-
- @Test
- public void consumeOptionShouldGhostTheMail() throws Exception {
- mailetConfig.setProperty(ToRecipientFolder.CONSUME_PARAMETER, "true");
- recipientFolder.init(mailetConfig);
-
- Mail mail = createMail();
- recipientFolder.service(mail);
-
- assertThat(mail.getState()).isEqualTo(Mail.GHOST);
- }
-
- @Test
- public void consumeOptionShouldNotGhostTheMailByDefault() throws Exception {
- recipientFolder.init(mailetConfig);
-
- Mail mail = createMail();
- recipientFolder.service(mail);
-
- assertThat(mail.getState()).isEqualTo(Mail.DEFAULT);
- }
-
- @Test
- public void folderParameterShouldIndicateDestinationFolder() throws Exception {
- when(usersRepository.supportVirtualHosting()).thenReturn(true);
- when(mailboxManager.getMailbox(eq(JUNK_VIRTUAL_HOSTING), any(MailboxSession.class))).thenReturn(messageManager);
- when(user.getUserName()).thenReturn(USER);
-
- mailetConfig.setProperty(ToRecipientFolder.FOLDER_PARAMETER, "Junk");
- recipientFolder.init(mailetConfig);
- recipientFolder.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(usersRepository.supportVirtualHosting()).thenReturn(true);
- when(mailboxManager.getMailbox(eq(INBOX), any(MailboxSession.class))).thenReturn(messageManager);
- when(user.getUserName()).thenReturn(USER);
-
- recipientFolder.init(mailetConfig);
- recipientFolder.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(usersRepository.supportVirtualHosting()).thenReturn(false);
- when(mailboxManager.getMailbox(eq(JUNK), any(MailboxSession.class))).thenReturn(messageManager);
- when(user.getUserName()).thenReturn(USER_LOCAL_PART);
-
- mailetConfig.setProperty(ToRecipientFolder.FOLDER_PARAMETER, "Junk");
- recipientFolder.init(mailetConfig);
- recipientFolder.service(createMail());
-
- verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
- }
-
- private Mail createMail() throws MessagingException, IOException {
- MimeMessage message = new MimeMessage(Session.getDefaultInstance(new Properties()));
- message.setSubject("Subject");
- message.setSender(new InternetAddress("sender@any.com"));
- message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(USER));
- MimeMultipart multipart = new MimeMultipart();
- MimeBodyPart scriptPart = new MimeBodyPart();
- scriptPart.setDataHandler(
- new DataHandler(
- new ByteArrayDataSource(
- "toto",
- "application/sieve; charset=UTF-8")
- ));
- scriptPart.setDisposition(MimeBodyPart.ATTACHMENT);
- scriptPart.setHeader("Content-Type", "application/sieve; charset=UTF-8");
- scriptPart.setFileName("file.txt");
- multipart.addBodyPart(scriptPart);
- message.setContent(multipart);
- message.saveChanges();
- return FakeMail.builder()
- .mimeMessage(message)
- .state(Mail.DEFAULT)
- .recipient(new MailAddress(USER))
- .build();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/james-project/blob/164d9248/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
new file mode 100644
index 0000000..e1db93b
--- /dev/null
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/ToRecipientFolderTest.java
@@ -0,0 +1,251 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+
+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.when;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Collection;
+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;
+import javax.mail.internet.MimeBodyPart;
+import javax.mail.internet.MimeMessage;
+import javax.mail.internet.MimeMultipart;
+import javax.mail.util.ByteArrayDataSource;
+
+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.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";
+ public static final String USER = USER_LOCAL_PART + "@domain.com";
+ 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;
+ }
+
+ public GenericMailet getMailet() {
+ return mailet;
+ }
+
+ public MailboxSession.User getUser() {
+ return user;
+ }
+ }
+
+ @Parameterized.Parameters
+ public static Collection<Object[]> getLocalDeliveryClasses() {
+ SieveRepository sieveRepository = mock(SieveRepository.class);
+ UsersRepository usersRepository = mock(UsersRepository.class);
+ MailboxManager mailboxManager = mock(MailboxManager.class);
+
+ SieveToRecipientFolder sieveToRecipientFolder = new SieveToRecipientFolder();
+ sieveToRecipientFolder.setMailboxManager(mailboxManager);
+ sieveToRecipientFolder.setUsersRepository(usersRepository);
+ sieveToRecipientFolder.setSieveRepository(sieveRepository);
+
+ ToRecipientFolder toRecipientFolder = new ToRecipientFolder();
+ toRecipientFolder.setMailboxManager(mailboxManager);
+ toRecipientFolder.setUsersRepository(usersRepository);
+
+ MailboxSession.User user = mock(MailboxSession.User.class);
+ MailboxSession session = mock(MailboxSession.class);
+ when(session.getPathDelimiter()).thenReturn('.');
+ try {
+ when(mailboxManager.createSystemSession(any(String.class), any(Logger.class))).thenReturn(session);
+ } catch (MailboxException e) {
+ 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.defaultContext());
+ messageManager = mock(MessageManager.class);
+ }
+
+ @Test
+ public void initParameterTesting() throws Exception {
+ mailetConfig.setProperty(ToRecipientFolder.FOLDER_PARAMETER, "Junk");
+ parameter.getMailet().init(mailetConfig);
+
+ Assert.assertEquals("Junk", parameter.getMailet().getInitParameter(ToRecipientFolder.FOLDER_PARAMETER));
+ }
+
+ @Test
+ public void consumeOptionShouldGhostTheMail() throws Exception {
+ mailetConfig.setProperty(ToRecipientFolder.CONSUME_PARAMETER, "true");
+ parameter.getMailet().init(mailetConfig);
+
+ Mail mail = createMail();
+ parameter.getMailet().service(mail);
+
+ assertThat(mail.getState()).isEqualTo(Mail.GHOST);
+ }
+
+ @Test
+ public void consumeOptionShouldNotGhostTheMailByDefault() throws Exception {
+ parameter.getMailet().init(mailetConfig);
+
+ Mail mail = createMail();
+ parameter.getMailet().service(mail);
+
+ assertThat(mail.getState()).isEqualTo(Mail.DEFAULT);
+ }
+
+ @Test
+ public void folderParameterShouldIndicateDestinationFolder() throws Exception {
+ when(parameter.getUsersRepository().supportVirtualHosting()).thenReturn(true);
+ when(parameter.getMailboxManager().getMailbox(eq(JUNK_VIRTUAL_HOSTING), any(MailboxSession.class))).thenReturn(messageManager);
+ when(parameter.getUser().getUserName()).thenReturn(USER);
+
+ mailetConfig.setProperty(ToRecipientFolder.FOLDER_PARAMETER, "Junk");
+ parameter.getMailet().init(mailetConfig);
+ parameter.getMailet().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.getMailboxManager().getMailbox(eq(INBOX), any(MailboxSession.class))).thenReturn(messageManager);
+ when(parameter.getUser().getUserName()).thenReturn(USER);
+
+ parameter.getMailet().init(mailetConfig);
+ parameter.getMailet().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.getMailboxManager().getMailbox(eq(JUNK), any(MailboxSession.class))).thenReturn(messageManager);
+ when(parameter.getUser().getUserName()).thenReturn(USER_LOCAL_PART);
+
+ mailetConfig.setProperty(ToRecipientFolder.FOLDER_PARAMETER, "Junk");
+ parameter.getMailet().init(mailetConfig);
+ parameter.getMailet().service(createMail());
+
+ verify(messageManager).appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), eq(true), any(Flags.class));
+ }
+
+ private Mail createMail() throws MessagingException, IOException {
+ MimeMessage message = new MimeMessage(Session.getDefaultInstance(new Properties()));
+ message.setSubject("Subject");
+ message.setSender(new InternetAddress("sender@any.com"));
+ message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(USER));
+ MimeMultipart multipart = new MimeMultipart();
+ MimeBodyPart scriptPart = new MimeBodyPart();
+ scriptPart.setDataHandler(
+ new DataHandler(
+ new ByteArrayDataSource(
+ "toto",
+ "application/sieve; charset=UTF-8")
+ ));
+ scriptPart.setDisposition(MimeBodyPart.ATTACHMENT);
+ scriptPart.setHeader("Content-Type", "application/sieve; charset=UTF-8");
+ scriptPart.setFileName("file.txt");
+ multipart.addBodyPart(scriptPart);
+ message.setContent(multipart);
+ message.saveChanges();
+ return FakeMail.builder()
+ .mimeMessage(message)
+ .state(Mail.DEFAULT)
+ .recipient(new MailAddress(USER))
+ .build();
+ }
+
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org