JAMES-1670 ToRecipientFolder should match our coding conventions
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/55d5fd07 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/55d5fd07 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/55d5fd07 Branch: refs/heads/master Commit: 55d5fd07e84b8c0f17f700a2d87dcd5f5290139d Parents: 26983cc Author: Benoit Tellier <btell...@apache.org> Authored: Tue Feb 16 13:05:31 2016 +0700 Committer: Benoit Tellier <btell...@linagora.com> Committed: Tue Mar 1 11:05:32 2016 +0700 ---------------------------------------------------------------------- .../transport/mailets/ToRecipientFolder.java | 16 +- .../mailets/delivery/RecipientFolderTest.java | 197 ------------------- .../mailets/delivery/ToRecipientFolderTest.java | 191 ++++++++++++++++++ 3 files changed, 195 insertions(+), 209 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/55d5fd07/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/ToRecipientFolder.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/ToRecipientFolder.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/ToRecipientFolder.java index 7671b1a..563e4c2 100644 --- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/ToRecipientFolder.java +++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/ToRecipientFolder.java @@ -53,14 +53,12 @@ import com.google.common.collect.Iterators; */ public class ToRecipientFolder extends GenericMailet { - public static final String FOLDER = "folder"; - public static final String CONSUME = "consume"; + public static final String FOLDER_PARAMETER = "folder"; + public static final String CONSUME_PARAMETER = "consume"; private MailboxManager mailboxManager; private SieveRepository sieveRepository; private UsersRepository usersRepository; - private String folder; - private boolean consume; @Inject public void setMailboxManager(@Named("mailboxmanager")MailboxManager mailboxManager) { @@ -88,18 +86,13 @@ public class ToRecipientFolder extends GenericMailet { public void service(Mail mail) throws MessagingException { if (!mail.getState().equals(Mail.GHOST)) { sieveMailet.service(mail); - if (consume) { - mail.setState(Mail.GHOST); - } } } @Override public void init() throws MessagingException { super.init(); - this.folder = getInitParameter(FOLDER, "INBOX"); - this.consume = getInitParameter(CONSUME, false); - sieveMailet = new SieveMailet(usersRepository, mailboxManager, sieveRepository, this.folder); + sieveMailet = new SieveMailet(usersRepository, mailboxManager, sieveRepository, getInitParameter(FOLDER_PARAMETER, "INBOX")); sieveMailet.init(new MailetConfig() { @Override @@ -112,7 +105,6 @@ public class ToRecipientFolder extends GenericMailet { return getMailetConfig().getInitParameter(name); } } - @Override public Iterator<String> getInitParameterNames() { @@ -131,8 +123,8 @@ public class ToRecipientFolder extends GenericMailet { } }); - // Override the default value of "quiet" sieveMailet.setQuiet(getInitParameter("quiet", true)); + sieveMailet.setConsume(getInitParameter(CONSUME_PARAMETER, false)); } @Override http://git-wip-us.apache.org/repos/asf/james-project/blob/55d5fd07/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/RecipientFolderTest.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/RecipientFolderTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/RecipientFolderTest.java deleted file mode 100644 index 6adcb7c..0000000 --- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/RecipientFolderTest.java +++ /dev/null @@ -1,197 +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 com.google.common.collect.Lists; -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.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.mockito.invocation.InvocationOnMock; -import org.mockito.stubbing.Answer; -import org.slf4j.Logger; - -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 java.io.IOException; -import java.io.InputStream; -import java.util.Arrays; -import java.util.Date; -import java.util.Properties; -import javax.mail.internet.ParseException; -import org.apache.james.transport.mailets.ToProcessor; -import org.apache.james.transport.mailets.ToRecipientFolder; -import org.apache.mailet.Mailet; -import org.apache.mailet.base.test.FakeMailContext; -import org.junit.Assert; - -public class RecipientFolderTest { - - private UsersRepository usersRepository; - private MailboxManager mailboxManager; - private SieveRepository sieveRepository; - private ToRecipientFolder recipientFolder; - private FakeMailetConfig mailetConfig; - - private String folder = null; - - private String consume = null; - - private void setFolder(String folder) { - this.folder = folder; - } - - private void setConsume(String consume) { - this.consume = consume; - } - - @Before - public void setUp() throws Exception { - sieveRepository = mock(SieveRepository.class); - usersRepository = mock(UsersRepository.class); - mailboxManager = mock(MailboxManager.class); - - mailetConfig = new FakeMailetConfig("RecipientFolderTest", - new FakeMailContext()); - - recipientFolder = new ToRecipientFolder(); - recipientFolder.setMailboxManager(mailboxManager); - recipientFolder.setUsersRepository(usersRepository); - recipientFolder.setSieveRepository(sieveRepository); - - setFolder("Junk"); - setConsume("true"); - - if (folder != null) { - mailetConfig.setProperty("folder", folder); - } - if (consume != null) { - mailetConfig.setProperty("consume", consume); - } - recipientFolder.init(mailetConfig); - - } - - @Test - public void initParameterTesting() throws Exception { - - Mail mail = createMail(); - recipientFolder.service(mail); - Assert.assertEquals("Junk", recipientFolder.getInitParameter("folder")); - } - - // test if ToRecipientFolder works - @Test - public void ToRecipientFolderConsumeTest() throws Exception { - - Mail mail = createMail(); - recipientFolder.service(mail); - - Assert.assertEquals(Boolean.valueOf(consume), mail.getState().equals(Mail.GHOST)); - } - - @Test - public void mailShouldBeWellReceivedByDefaultToUserWhenvirtualHostingIsTurnedOn() throws Exception { - - when(usersRepository.supportVirtualHosting()).thenAnswer(new Answer<Boolean>() { - @Override - public Boolean answer(InvocationOnMock invocationOnMock) throws Throwable { - return true; - } - }); - recipientTest(); - } - - private void recipientTest() throws Exception { - - MailboxPath junkbox = new MailboxPath("#private", "recei...@domain.com", "Junk"); - final MessageManager messageManager = mock(MessageManager.class); - when(mailboxManager.getMailbox(eq(junkbox), any(MailboxSession.class))).thenAnswer(new Answer<MessageManager>() { - @Override - public MessageManager answer(InvocationOnMock invocationOnMock) throws Throwable { - return messageManager; - } - }); - final MailboxSession session = mock(MailboxSession.class); - when(session.getPathDelimiter()).thenAnswer(new Answer<Character>() { - @Override - public Character answer(InvocationOnMock invocationOnMock) throws Throwable { - return '.'; - } - }); - when(mailboxManager.createSystemSession(any(String.class), any(Logger.class))).thenAnswer(new Answer<MailboxSession>() { - @Override - public MailboxSession answer(InvocationOnMock invocationOnMock) throws Throwable { - return session; - } - }); - - Mail mail = createMail(); - - recipientFolder.init(mailetConfig); - recipientFolder.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("sen...@any.com")); - message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress("recei...@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(); - Mail mail = new FakeMail(message); - mail.setState(Mail.DEFAULT); - mail.setRecipients(Lists.newArrayList(new MailAddress("recei...@domain.com"))); - return mail; - } - -} http://git-wip-us.apache.org/repos/asf/james-project/blob/55d5fd07/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..a8cd1f6 --- /dev/null +++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/ToRecipientFolderTest.java @@ -0,0 +1,191 @@ +/**************************************************************** + * 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.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; + +import com.google.common.collect.Lists; + +public class ToRecipientFolderTest { + + public static final String USER = "recei...@domain.com"; + public static final MailboxPath INBOX = new MailboxPath("#private", USER, "INBOX"); + public static final MailboxPath JUNK = new MailboxPath("#private", "receiver", "Junk"); + public static final MailboxPath JUNK_VIRTUAL_HOSTING = new MailboxPath("#private", USER, "Junk"); + private UsersRepository usersRepository; + private MailboxManager mailboxManager; + private ToRecipientFolder recipientFolder; + private FakeMailetConfig mailetConfig; + + @Before + public void setUp() throws Exception { + usersRepository = mock(UsersRepository.class); + mailboxManager = mock(MailboxManager.class); + + mailetConfig = new FakeMailetConfig("RecipientFolderTest", new FakeMailContext()); + + recipientFolder = new ToRecipientFolder(); + recipientFolder.setMailboxManager(mailboxManager); + recipientFolder.setUsersRepository(usersRepository); + recipientFolder.setSieveRepository(mock(SieveRepository.class)); + } + + @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 { + MessageManager messageManager = mock(MessageManager.class); + MailboxSession session = mock(MailboxSession.class); + + when(usersRepository.supportVirtualHosting()).thenReturn(true); + when(mailboxManager.getMailbox(eq(JUNK_VIRTUAL_HOSTING), any(MailboxSession.class))).thenReturn(messageManager); + when(session.getPathDelimiter()).thenReturn('.'); + when(mailboxManager.createSystemSession(any(String.class), any(Logger.class))).thenReturn(session); + + 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 { + MessageManager messageManager = mock(MessageManager.class); + MailboxSession session = mock(MailboxSession.class); + + when(usersRepository.supportVirtualHosting()).thenReturn(true); + when(mailboxManager.getMailbox(eq(INBOX), any(MailboxSession.class))).thenReturn(messageManager); + when(session.getPathDelimiter()).thenReturn('.'); + when(mailboxManager.createSystemSession(any(String.class), any(Logger.class))).thenReturn(session); + + 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 { + MessageManager messageManager = mock(MessageManager.class); + MailboxSession session = mock(MailboxSession.class); + + when(usersRepository.supportVirtualHosting()).thenReturn(false); + when(mailboxManager.getMailbox(eq(JUNK), any(MailboxSession.class))).thenReturn(messageManager); + when(session.getPathDelimiter()).thenReturn('.'); + when(mailboxManager.createSystemSession(any(String.class), any(Logger.class))).thenReturn(session); + + 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("sen...@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(); + Mail mail = new FakeMail(message); + mail.setState(Mail.DEFAULT); + mail.setRecipients(Lists.newArrayList(new MailAddress(USER))); + return mail; + } + +} --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org