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