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 bt...@apache.org on 2016/03/01 12:28:59 UTC
[1/3] james-project git commit: JAMES-1670 ToRecipientFolder mailet
should use init parameters
Repository: james-project
Updated Branches:
refs/heads/master 091e632dd -> ca25b8226
JAMES-1670 ToRecipientFolder mailet should use init parameters
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/b3417590
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/b3417590
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/b3417590
Branch: refs/heads/master
Commit: b34175900777a9378b7aaf1a9f407ce5c3535491
Parents: 091e632
Author: akaplan <ak...@192.168.1.26>
Authored: Thu Jan 28 20:45:40 2016 +0200
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Tue Mar 1 18:27:34 2016 +0700
----------------------------------------------------------------------
.../transport/mailets/ToRecipientFolder.java | 14 +-
.../mailets/delivery/RecipientFolderTest.java | 197 +++++++++++++++++++
server/src/site/xdoc/dev-provided-mailets.xml | 20 ++
3 files changed, 228 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/b3417590/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 4e227e0..8e51172 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
@@ -56,6 +56,9 @@ public class ToRecipientFolder extends GenericMailet {
private MailboxManager mailboxManager;
private SieveRepository sieveRepository;
private UsersRepository usersRepository;
+
+ private String folder;
+ private boolean consume;
@Inject
public void setMailboxManager(@Named("mailboxmanager")MailboxManager mailboxManager) {
@@ -63,8 +66,8 @@ public class ToRecipientFolder extends GenericMailet {
}
@Inject
- public void setSetUsersRepository(SieveRepository setUsersRepository) {
- this.sieveRepository = setUsersRepository;
+ public void setSieveRepository(SieveRepository sieveRepository) {
+ this.sieveRepository = sieveRepository;
}
@Inject
@@ -83,13 +86,18 @@ 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();
- sieveMailet = new SieveMailet(usersRepository, mailboxManager, sieveRepository, "INBOX");
+ this.folder = getInitParameter("folder", "INBOX");
+ this.consume = getInitParameter("consume", false);
+ sieveMailet = new SieveMailet(usersRepository, mailboxManager, sieveRepository, this.folder);
sieveMailet.init(new MailetConfig() {
@Override
http://git-wip-us.apache.org/repos/asf/james-project/blob/b3417590/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
new file mode 100644
index 0000000..6adcb7c
--- /dev/null
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/RecipientFolderTest.java
@@ -0,0 +1,197 @@
+/**
+ * **************************************************************
+ * 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", "receiver@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("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();
+ Mail mail = new FakeMail(message);
+ mail.setState(Mail.DEFAULT);
+ mail.setRecipients(Lists.newArrayList(new MailAddress("receiver@domain.com")));
+ return mail;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/james-project/blob/b3417590/server/src/site/xdoc/dev-provided-mailets.xml
----------------------------------------------------------------------
diff --git a/server/src/site/xdoc/dev-provided-mailets.xml b/server/src/site/xdoc/dev-provided-mailets.xml
index 87a9acc..ac1ad54 100644
--- a/server/src/site/xdoc/dev-provided-mailets.xml
+++ b/server/src/site/xdoc/dev-provided-mailets.xml
@@ -578,6 +578,26 @@ Default is to not add a header.</li>
</p>
</subsection>
+<subsection name="ToRecipientFolder">
+ <p>
+ Description: Place a copy of the mail message in a folder of the recipient. It receives a Mail from the Queue and
+ takes care to deliver the message to a defined folder of the recipient(s).
+ </p>
+
+ <p>Parameters:
+ <ul>
+ <li><strong>folder</strong> (required) - The folder name of the Recipient mailbox in which the mail will be copied.</li>
+ <li><strong>consume</strong> (optional) - flag true or false: will tell is the mail will be further processed by the upcoming processor mailets, or not</li>
+ </ul>
+ </p>
+
+<source>
+<mailet match="RecipientIsLocal" class="ToRecipientFolder">
+ <folder>Junk</folder>
+ <consume>false</consume>
+</mailet>
+</source>
+
<subsection name="ToRepository">
<p>Places a copy of the message in the specified repository.</p>
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[3/3] james-project git commit: JAMES-1670 ToRecipientFolder should
match our coding conventions
Posted by bt...@apache.org.
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/ca25b822
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/ca25b822
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/ca25b822
Branch: refs/heads/master
Commit: ca25b8226fcc26b945e59a51c8bfa6aadefe7ec9
Parents: 7c6a6b6
Author: Benoit Tellier <bt...@apache.org>
Authored: Tue Feb 16 13:05:31 2016 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Tue Mar 1 18:27:52 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/ca25b822/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/ca25b822/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", "receiver@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("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();
- Mail mail = new FakeMail(message);
- mail.setState(Mail.DEFAULT);
- mail.setRecipients(Lists.newArrayList(new MailAddress("receiver@domain.com")));
- return mail;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/james-project/blob/ca25b822/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 = "receiver@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("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();
+ Mail mail = new FakeMail(message);
+ mail.setState(Mail.DEFAULT);
+ mail.setRecipients(Lists.newArrayList(new MailAddress(USER)));
+ return mail;
+ }
+
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[2/3] james-project git commit: JAMES-1670 Extract ToRecipientFolder
Init Parameters names as constants
Posted by bt...@apache.org.
JAMES-1670 Extract ToRecipientFolder Init Parameters names as constants
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/7c6a6b6c
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/7c6a6b6c
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/7c6a6b6c
Branch: refs/heads/master
Commit: 7c6a6b6c42957f646ad8e4c4e70e48b494301cb2
Parents: b341759
Author: Benoit Tellier <bt...@apache.org>
Authored: Tue Feb 16 11:23:08 2016 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Tue Mar 1 18:27:41 2016 +0700
----------------------------------------------------------------------
.../apache/james/transport/mailets/ToRecipientFolder.java | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/7c6a6b6c/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 8e51172..7671b1a 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,10 +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";
+
private MailboxManager mailboxManager;
private SieveRepository sieveRepository;
private UsersRepository usersRepository;
-
private String folder;
private boolean consume;
@@ -95,8 +97,8 @@ public class ToRecipientFolder extends GenericMailet {
@Override
public void init() throws MessagingException {
super.init();
- this.folder = getInitParameter("folder", "INBOX");
- this.consume = getInitParameter("consume", false);
+ this.folder = getInitParameter(FOLDER, "INBOX");
+ this.consume = getInitParameter(CONSUME, false);
sieveMailet = new SieveMailet(usersRepository, mailboxManager, sieveRepository, this.folder);
sieveMailet.init(new MailetConfig() {
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org