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 2017/01/11 09:25:54 UTC
[06/50] [abbrv] james-project git commit: MAILET-115 Extract
replaceInternetAddresses from AbstractRedirect to SpecialAddressesUtils
MAILET-115 Extract replaceInternetAddresses from AbstractRedirect to SpecialAddressesUtils
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/b94bc281
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/b94bc281
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/b94bc281
Branch: refs/heads/master
Commit: b94bc281287202784bb63b6d763cc10b517cbd09
Parents: d010021
Author: Antoine Duprat <ad...@apache.org>
Authored: Thu Nov 3 16:07:59 2016 +0100
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Wed Jan 11 10:03:28 2017 +0700
----------------------------------------------------------------------
.../mailets/redirect/AbstractRedirect.java | 113 +-------
.../transport/util/SpecialAddressesUtils.java | 111 +++++++
.../mailets/redirect/AbstractRedirectTest.java | 287 -------------------
.../util/SpecialAddressesUtilsTest.java | 201 +++++++++++++
4 files changed, 313 insertions(+), 399 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/b94bc281/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/AbstractRedirect.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/AbstractRedirect.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/AbstractRedirect.java
index a3cdced..4f646e1 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/AbstractRedirect.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/AbstractRedirect.java
@@ -49,7 +49,6 @@ import org.apache.mailet.base.RFC2822Headers;
import com.google.common.base.Strings;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
/**
* <p>
@@ -261,7 +260,7 @@ public abstract class AbstractRedirect extends GenericMailet {
if (containsOnlyUnalteredOrTo(apparentlyTo)) {
return null;
}
- Collection<InternetAddress> addresses = replaceInternetAddresses(originalMail, ImmutableList.copyOf(apparentlyTo));
+ Collection<InternetAddress> addresses = SpecialAddressesUtils.from(this).replaceInternetAddresses(originalMail, ImmutableList.copyOf(apparentlyTo));
return addresses.toArray(new InternetAddress[addresses.size()]);
}
@@ -841,114 +840,4 @@ public abstract class AbstractRedirect extends GenericMailet {
|| mail.getSender() == null
|| !getMailetContext().getMailServers(mail.getSender().getDomain()).isEmpty();
}
-
- /**
- * Returns a new Collection built over <i>list</i> replacing special
- * addresses with real <code>InternetAddress</code>-es.<br>
- * Manages <code>SpecialAddress.SENDER</code>,
- * <code>SpecialAddress.REVERSE_PATH</code>,
- * <code>SpecialAddress.FROM</code>, <code>SpecialAddress.REPLY_TO</code>,
- * <code>SpecialAddress.RECIPIENTS</code>, <code>SpecialAddress.TO</code>,
- * <code>SpecialAddress.NULL</code> and
- * <code>SpecialAddress.UNALTERED</code>.<br>
- * <code>SpecialAddress.RECIPIENTS</code> is made equivalent to
- * <code>SpecialAddress.TO</code>.<br>
- * <code>SpecialAddress.FROM</code> uses the From header if available,
- * otherwise the Sender header if available, otherwise the return-path.<br>
- * <code>SpecialAddress.REPLY_TO</code> uses the ReplyTo header if
- * available, otherwise the From header if available, otherwise the Sender
- * header if available, otherwise the return-path.<br>
- * <code>SpecialAddress.UNALTERED</code> is ignored.<br>
- * Any other address is not replaced.<br>
- */
- protected Collection<InternetAddress> replaceInternetAddresses(Mail mail, Collection<InternetAddress> list) throws MessagingException {
- ImmutableSet.Builder<InternetAddress> builder = ImmutableSet.builder();
- for (InternetAddress internetAddress : list) {
- MailAddress mailAddress = new MailAddress(internetAddress);
- if (!SpecialAddress.isSpecialAddress(mailAddress)) {
- builder.add(internetAddress);
- continue;
- }
-
- SpecialAddressKind specialAddressKind = SpecialAddressKind.forValue(mailAddress.getLocalPart());
- if (specialAddressKind == null) {
- builder.add(mailAddress.toInternetAddress());
- continue;
- }
-
- switch (specialAddressKind) {
- case SENDER:
- MailAddress sender = mail.getSender();
- if (sender != null) {
- builder.add(sender.toInternetAddress());
- }
- break;
- case REVERSE_PATH:
- MailAddress reversePath = mail.getSender();
- if (reversePath != null) {
- builder.add(reversePath.toInternetAddress());
- }
- break;
- case FROM:
- try {
- InternetAddress[] fromArray = (InternetAddress[]) mail.getMessage().getFrom();
- builder.addAll(allOrSender(mail, fromArray));
- } catch (MessagingException me) {
- log("Unable to parse the \"FROM\" header in the original message; ignoring.");
- }
- break;
- case REPLY_TO:
- try {
- InternetAddress[] replyToArray = (InternetAddress[]) mail.getMessage().getReplyTo();
- builder.addAll(allOrSender(mail, replyToArray));
- } catch (MessagingException me) {
- log("Unable to parse the \"REPLY_TO\" header in the original message; ignoring.");
- }
- break;
- case TO:
- case RECIPIENTS:
- builder.addAll(toHeaders(mail));
- break;
- case NULL:
- case UNALTERED:
- break;
- case DELETE:
- builder.add(internetAddress);
- break;
- }
- }
- return builder.build();
- }
-
- private ImmutableSet<InternetAddress> allOrSender(Mail mail, InternetAddress[] addresses) {
- if (addresses != null) {
- return ImmutableSet.copyOf(addresses);
- } else {
- MailAddress reversePath = mail.getSender();
- if (reversePath != null) {
- return ImmutableSet.of(reversePath.toInternetAddress());
- }
- }
- return ImmutableSet.of();
- }
-
- private ImmutableSet<InternetAddress> toHeaders(Mail mail) {
- try {
- String[] toHeaders = mail.getMessage().getHeader(RFC2822Headers.TO);
- if (toHeaders != null) {
- for (String toHeader : toHeaders) {
- try {
- InternetAddress[] originalToInternetAddresses = InternetAddress.parse(toHeader, false);
- return ImmutableSet.copyOf(originalToInternetAddresses);
- } catch (MessagingException ae) {
- log("Unable to parse a \"TO\" header address in the original message: " + toHeader + "; ignoring.");
- }
- }
- }
- return ImmutableSet.of();
- } catch (MessagingException ae) {
- log("Unable to parse the \"TO\" header in the original message; ignoring.");
- return ImmutableSet.of();
- }
- }
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/b94bc281/server/mailet/mailets/src/main/java/org/apache/james/transport/util/SpecialAddressesUtils.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/util/SpecialAddressesUtils.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/util/SpecialAddressesUtils.java
index 6d8131a..0fd9c7d 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/util/SpecialAddressesUtils.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/util/SpecialAddressesUtils.java
@@ -30,6 +30,7 @@ import org.apache.james.transport.mailets.redirect.SpecialAddressKind;
import org.apache.mailet.Mail;
import org.apache.mailet.MailAddress;
import org.apache.mailet.base.GenericMailet;
+import org.apache.mailet.base.RFC2822Headers;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
@@ -142,4 +143,114 @@ public class SpecialAddressesUtils {
}
return builder.build();
}
+
+ /**
+ * Returns a new Collection built over <i>list</i> replacing special
+ * addresses with real <code>InternetAddress</code>-es.<br>
+ * Manages <code>SpecialAddress.SENDER</code>,
+ * <code>SpecialAddress.REVERSE_PATH</code>,
+ * <code>SpecialAddress.FROM</code>, <code>SpecialAddress.REPLY_TO</code>,
+ * <code>SpecialAddress.RECIPIENTS</code>, <code>SpecialAddress.TO</code>,
+ * <code>SpecialAddress.NULL</code> and
+ * <code>SpecialAddress.UNALTERED</code>.<br>
+ * <code>SpecialAddress.RECIPIENTS</code> is made equivalent to
+ * <code>SpecialAddress.TO</code>.<br>
+ * <code>SpecialAddress.FROM</code> uses the From header if available,
+ * otherwise the Sender header if available, otherwise the return-path.<br>
+ * <code>SpecialAddress.REPLY_TO</code> uses the ReplyTo header if
+ * available, otherwise the From header if available, otherwise the Sender
+ * header if available, otherwise the return-path.<br>
+ * <code>SpecialAddress.UNALTERED</code> is ignored.<br>
+ * Any other address is not replaced.<br>
+ */
+ public List<InternetAddress> replaceInternetAddresses(Mail mailWithReplacementAddresses, List<InternetAddress> internetAddresses) throws MessagingException {
+ ImmutableList.Builder<InternetAddress> builder = ImmutableList.builder();
+ for (InternetAddress internetAddress : internetAddresses) {
+ MailAddress mailAddress = new MailAddress(internetAddress);
+ if (!SpecialAddress.isSpecialAddress(mailAddress)) {
+ builder.add(internetAddress);
+ continue;
+ }
+
+ SpecialAddressKind specialAddressKind = SpecialAddressKind.forValue(mailAddress.getLocalPart());
+ if (specialAddressKind == null) {
+ builder.add(mailAddress.toInternetAddress());
+ continue;
+ }
+
+ switch (specialAddressKind) {
+ case SENDER:
+ MailAddress sender = mailWithReplacementAddresses.getSender();
+ if (sender != null) {
+ builder.add(sender.toInternetAddress());
+ }
+ break;
+ case REVERSE_PATH:
+ MailAddress reversePath = mailWithReplacementAddresses.getSender();
+ if (reversePath != null) {
+ builder.add(reversePath.toInternetAddress());
+ }
+ break;
+ case FROM:
+ try {
+ InternetAddress[] fromArray = (InternetAddress[]) mailWithReplacementAddresses.getMessage().getFrom();
+ builder.addAll(allOrSender(mailWithReplacementAddresses, fromArray));
+ } catch (MessagingException me) {
+ genericMailet.log("Unable to parse the \"FROM\" header in the original message; ignoring.");
+ }
+ break;
+ case REPLY_TO:
+ try {
+ InternetAddress[] replyToArray = (InternetAddress[]) mailWithReplacementAddresses.getMessage().getReplyTo();
+ builder.addAll(allOrSender(mailWithReplacementAddresses, replyToArray));
+ } catch (MessagingException me) {
+ genericMailet.log("Unable to parse the \"REPLY_TO\" header in the original message; ignoring.");
+ }
+ break;
+ case TO:
+ case RECIPIENTS:
+ builder.addAll(toHeaders(mailWithReplacementAddresses));
+ break;
+ case NULL:
+ case UNALTERED:
+ break;
+ case DELETE:
+ builder.add(internetAddress);
+ break;
+ }
+ }
+ return builder.build();
+ }
+
+ private ImmutableSet<InternetAddress> allOrSender(Mail mail, InternetAddress[] addresses) {
+ if (addresses != null) {
+ return ImmutableSet.copyOf(addresses);
+ } else {
+ MailAddress reversePath = mail.getSender();
+ if (reversePath != null) {
+ return ImmutableSet.of(reversePath.toInternetAddress());
+ }
+ }
+ return ImmutableSet.of();
+ }
+
+ private ImmutableSet<InternetAddress> toHeaders(Mail mail) {
+ try {
+ String[] toHeaders = mail.getMessage().getHeader(RFC2822Headers.TO);
+ if (toHeaders != null) {
+ for (String toHeader : toHeaders) {
+ try {
+ InternetAddress[] originalToInternetAddresses = InternetAddress.parse(toHeader, false);
+ return ImmutableSet.copyOf(originalToInternetAddresses);
+ } catch (MessagingException ae) {
+ genericMailet.log("Unable to parse a \"TO\" header address in the original message: " + toHeader + "; ignoring.");
+ }
+ }
+ }
+ return ImmutableSet.of();
+ } catch (MessagingException ae) {
+ genericMailet.log("Unable to parse the \"TO\" header in the original message; ignoring.");
+ return ImmutableSet.of();
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/b94bc281/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/redirect/AbstractRedirectTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/redirect/AbstractRedirectTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/redirect/AbstractRedirectTest.java
deleted file mode 100644
index c7069e4..0000000
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/redirect/AbstractRedirectTest.java
+++ /dev/null
@@ -1,287 +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.redirect;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-import java.util.Collection;
-import java.util.Properties;
-
-import javax.mail.MessagingException;
-import javax.mail.Session;
-import javax.mail.internet.InternetAddress;
-import javax.mail.internet.MimeMessage;
-
-import org.apache.mailet.Mail;
-import org.apache.mailet.MailAddress;
-import org.apache.mailet.base.MailAddressFixture;
-import org.apache.mailet.base.RFC2822Headers;
-import org.apache.mailet.base.test.FakeMail;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.google.common.collect.ImmutableList;
-
-public class AbstractRedirectTest {
-
- private TesteeRedirect testee;
-
- @Before
- public void setup() {
- testee = new TesteeRedirect();
- }
-
- private class TesteeRedirect extends AbstractRedirect {
-
- @Override
- protected String[] getAllowedInitParameters() {
- return null;
- }
-
- @Override
- protected InitParameters getInitParameters() {
- return RedirectMailetInitParameters.from(this);
- }
-
- @Override
- protected String getMessage(Mail originalMail) throws MessagingException {
- return getInitParameters().getMessage();
- }
-
- @Override
- protected InternetAddress[] getTo() throws MessagingException {
- return null;
- }
-
- @Override
- protected MailAddress getReplyTo() throws MessagingException {
- return null;
- }
-
- @Override
- protected MailAddress getReversePath(Mail originalMail) throws MessagingException {
- return null;
- }
-
- @Override
- protected void setSubjectPrefix(Mail newMail, String subjectPrefix, Mail originalMail) throws MessagingException {
- }
- }
-
- @Test
- public void replaceInternetAddressesShouldReturnEmptyWhenEmptyList() throws Exception {
- FakeMail mail = FakeMail.builder()
- .build();
-
- Collection<InternetAddress> addresses = testee.replaceInternetAddresses(mail, ImmutableList.<InternetAddress> of());
-
- assertThat(addresses).isEmpty();
- }
-
- @Test
- public void replaceInternetAddressesShouldReturnSameContentWhenAddressesDoesntMatchAddressMarkerDomain() throws Exception {
- FakeMail mail = FakeMail.builder()
- .build();
-
- InternetAddress internetAddress = new InternetAddress("user@addres.marker");
- InternetAddress internetAddress2 = new InternetAddress("user2@address.mar");
- ImmutableList<InternetAddress> list = ImmutableList.of(internetAddress, internetAddress2);
-
- Collection<InternetAddress> addresses = testee.replaceInternetAddresses(mail, list);
-
- assertThat(addresses).containsOnly(internetAddress, internetAddress2);
- }
-
- @Test
- public void replaceInternetAddressesShouldReturnSenderWhenAddressesMatchSender() throws Exception {
- MailAddress sender = MailAddressFixture.ANY_AT_JAMES;
- FakeMail mail = FakeMail.builder()
- .sender(sender)
- .build();
-
- Collection<InternetAddress> addresses = testee.replaceInternetAddresses(mail, ImmutableList.of(SpecialAddress.SENDER.toInternetAddress()));
-
- assertThat(addresses).containsOnly(sender.toInternetAddress());
- }
-
- @Test
- public void replaceInternetAddressesShouldReturnFromWhenAddressesMatchFrom() throws Exception {
- MailAddress from = MailAddressFixture.ANY_AT_JAMES;
- MailAddress from2 = MailAddressFixture.OTHER_AT_JAMES;
- MimeMessage message = new MimeMessage(Session.getDefaultInstance(new Properties()));
- message.addFrom(new InternetAddress[] { from.toInternetAddress(), from2.toInternetAddress() });
- FakeMail mail = FakeMail.from(message);
-
- Collection<InternetAddress> addresses = testee.replaceInternetAddresses(mail, ImmutableList.of(SpecialAddress.FROM.toInternetAddress()));
-
- assertThat(addresses).containsOnly(from.toInternetAddress(), from2.toInternetAddress());
- }
-
- @Test
- public void replaceInternetAddressesShouldReturnSenderWhenAddressesMatchFromAndNoFrom() throws Exception {
- MailAddress sender = MailAddressFixture.ANY_AT_JAMES;
- FakeMail mail = FakeMail.builder()
- .mimeMessage(new MimeMessage(Session.getDefaultInstance(new Properties())))
- .sender(sender)
- .build();
-
- Collection<InternetAddress> addresses = testee.replaceInternetAddresses(mail, ImmutableList.of(SpecialAddress.FROM.toInternetAddress()));
-
- assertThat(addresses).containsOnly(sender.toInternetAddress());
- }
-
- @Test
- public void replaceInternetAddressesShouldReturnEmptyWhenAddressesMatchSenderAndSenderIsNull() throws Exception {
- FakeMail mail = FakeMail.builder()
- .build();
-
- Collection<InternetAddress> addresses = testee.replaceInternetAddresses(mail, ImmutableList.of(SpecialAddress.SENDER.toInternetAddress()));
-
- assertThat(addresses).isEmpty();
- }
-
- @Test
- public void replaceInternetAddressesShouldReturnEmptyWhenAddressesMatchReplyToAndReplyToIsNull() throws Exception {
- MimeMessage message = new MimeMessage(Session.getDefaultInstance(new Properties()));
- FakeMail mail = FakeMail.from(message);
-
- Collection<InternetAddress> addresses = testee.replaceInternetAddresses(mail, ImmutableList.of(SpecialAddress.REPLY_TO.toInternetAddress()));
-
- assertThat(addresses).isEmpty();
- }
-
- @Test
- public void replaceInternetAddressesShouldReturnReplyToWhenAddressesMatchReplyTo() throws Exception {
- MimeMessage message = new MimeMessage(Session.getDefaultInstance(new Properties()));
- message.setReplyTo(InternetAddress.parse(MailAddressFixture.ANY_AT_JAMES.toString() + ", " + MailAddressFixture.OTHER_AT_JAMES.toString()));
- FakeMail mail = FakeMail.from(message);
-
- MailAddress expectedReplyTo = MailAddressFixture.ANY_AT_JAMES;
- MailAddress expectedReplyTo2 = MailAddressFixture.OTHER_AT_JAMES;
-
- Collection<InternetAddress> addresses = testee.replaceInternetAddresses(mail, ImmutableList.of(SpecialAddress.REPLY_TO.toInternetAddress()));
-
- assertThat(addresses).containsOnly(expectedReplyTo.toInternetAddress(), expectedReplyTo2.toInternetAddress());
- }
-
- @Test
- public void replaceInternetAddressesShouldReturnSenderWhenAddressesMatchReplyToAndNoReplyTo() throws Exception {
- MailAddress sender = MailAddressFixture.ANY_AT_JAMES;
- FakeMail mail = FakeMail.builder()
- .sender(sender)
- .mimeMessage(new MimeMessage(Session.getDefaultInstance(new Properties())))
- .build();
-
- Collection<InternetAddress> addresses = testee.replaceInternetAddresses(mail, ImmutableList.of(SpecialAddress.REPLY_TO.toInternetAddress()));
-
- assertThat(addresses).containsOnly(sender.toInternetAddress());
- }
-
- @Test
- public void replaceInternetAddressesShouldReturnSenderWhenAddressesMatchReversePath() throws Exception {
- MailAddress sender = MailAddressFixture.ANY_AT_JAMES;
- FakeMail mail = FakeMail.builder()
- .sender(sender)
- .build();
-
- Collection<InternetAddress> addresses = testee.replaceInternetAddresses(mail, ImmutableList.of(SpecialAddress.REVERSE_PATH.toInternetAddress()));
-
- assertThat(addresses).containsOnly(sender.toInternetAddress());
- }
-
- @Test
- public void replaceInternetAddressesShouldReturnEmptyWhenAddressesMatchReversePathAndNoSender() throws Exception {
- FakeMail mail = FakeMail.builder()
- .build();
-
- Collection<InternetAddress> addresses = testee.replaceInternetAddresses(mail, ImmutableList.of(SpecialAddress.REVERSE_PATH.toInternetAddress()));
-
- assertThat(addresses).isEmpty();
- }
-
- @Test
- public void replaceInternetAddressesShouldReturnToWhenAddressesMatchRecipients() throws Exception {
- MailAddress to = MailAddressFixture.ANY_AT_JAMES;
- MailAddress to2 = MailAddressFixture.OTHER_AT_JAMES;
- MimeMessage message = new MimeMessage(Session.getDefaultInstance(new Properties()));
- message.addHeader(RFC2822Headers.TO, MailAddressFixture.ANY_AT_JAMES.toString() + ", " + MailAddressFixture.OTHER_AT_JAMES.toString());
- FakeMail mail = FakeMail.from(message);
-
- Collection<InternetAddress> addresses = testee.replaceInternetAddresses(mail, ImmutableList.of(SpecialAddress.RECIPIENTS.toInternetAddress()));
-
- assertThat(addresses).containsOnly(to.toInternetAddress(), to2.toInternetAddress());
- }
-
- @Test
- public void replaceInternetAddressesShouldReturnToWhenAddressesMatchTo() throws Exception {
- MailAddress to = MailAddressFixture.ANY_AT_JAMES;
- MailAddress to2 = MailAddressFixture.OTHER_AT_JAMES;
- MimeMessage message = new MimeMessage(Session.getDefaultInstance(new Properties()));
- message.addHeader(RFC2822Headers.TO, MailAddressFixture.ANY_AT_JAMES.toString() + ", " + MailAddressFixture.OTHER_AT_JAMES);
- FakeMail mail = FakeMail.from(message);
-
- Collection<InternetAddress> addresses = testee.replaceInternetAddresses(mail, ImmutableList.of(SpecialAddress.TO.toInternetAddress()));
-
- assertThat(addresses).containsOnly(to.toInternetAddress(), to2.toInternetAddress());
- }
-
- @Test
- public void replaceInternetAddressesShouldReturnEmptyWhenAddressesMatchUnaltered() throws Exception {
- FakeMail mail = FakeMail.builder()
- .build();
-
- Collection<InternetAddress> addresses = testee.replaceInternetAddresses(mail, ImmutableList.of(SpecialAddress.UNALTERED.toInternetAddress()));
-
- assertThat(addresses).isEmpty();
- }
-
- @Test
- public void replaceInternetAddressesShouldReturnEmptyWhenAddressesMatchNull() throws Exception {
- FakeMail mail = FakeMail.builder()
- .build();
-
- Collection<InternetAddress> addresses = testee.replaceInternetAddresses(mail, ImmutableList.of(SpecialAddress.NULL.toInternetAddress()));
-
- assertThat(addresses).isEmpty();
- }
-
- @Test
- public void replaceInternetAddressesShouldReturnSameAddressWhenAddressesDoesntMatch() throws Exception {
- FakeMail mail = FakeMail.builder()
- .build();
-
- MailAddress address = new MailAddress("user", "address.marker");
- MailAddress address2 = new MailAddress("user2", "address.marker");
- Collection<InternetAddress> addresses = testee.replaceInternetAddresses(mail, ImmutableList.of(address.toInternetAddress(), address2.toInternetAddress()));
-
- assertThat(addresses).containsOnly(address.toInternetAddress(), address2.toInternetAddress());
- }
-
- @Test
- public void replaceInternetAddressesShouldReturnSameListWhenAddressesMatchDelete() throws Exception {
- FakeMail mail = FakeMail.builder()
- .build();
-
- Collection<InternetAddress> addresses = testee.replaceInternetAddresses(mail, ImmutableList.of(SpecialAddress.DELETE.toInternetAddress()));
-
- InternetAddress expected = new InternetAddress("delete@address.marker");
- assertThat(addresses).containsOnly(expected);
- }
-}
http://git-wip-us.apache.org/repos/asf/james-project/blob/b94bc281/server/mailet/mailets/src/test/java/org/apache/james/transport/util/SpecialAddressesUtilsTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/util/SpecialAddressesUtilsTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/util/SpecialAddressesUtilsTest.java
index b55dd46..a68dd8f 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/util/SpecialAddressesUtilsTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/util/SpecialAddressesUtilsTest.java
@@ -33,6 +33,7 @@ import org.apache.mailet.Mail;
import org.apache.mailet.MailAddress;
import org.apache.mailet.base.GenericMailet;
import org.apache.mailet.base.MailAddressFixture;
+import org.apache.mailet.base.RFC2822Headers;
import org.apache.mailet.base.test.FakeMail;
import org.junit.Before;
import org.junit.Test;
@@ -238,4 +239,204 @@ public class SpecialAddressesUtilsTest {
MailAddress expected = new MailAddress("delete", "address.marker");
assertThat(addresses).containsOnly(expected);
}
+
+ @Test
+ public void replaceInternetAddressesShouldReturnEmptyWhenEmptyList() throws Exception {
+ FakeMail mail = FakeMail.builder()
+ .build();
+
+ Collection<InternetAddress> addresses = testee.replaceInternetAddresses(mail, ImmutableList.<InternetAddress> of());
+
+ assertThat(addresses).isEmpty();
+ }
+
+ @Test
+ public void replaceInternetAddressesShouldReturnSameContentWhenAddressesDoesntMatchAddressMarkerDomain() throws Exception {
+ FakeMail mail = FakeMail.builder()
+ .build();
+
+ InternetAddress internetAddress = new InternetAddress("user@addres.marker");
+ InternetAddress internetAddress2 = new InternetAddress("user2@address.mar");
+ ImmutableList<InternetAddress> list = ImmutableList.of(internetAddress, internetAddress2);
+
+ Collection<InternetAddress> addresses = testee.replaceInternetAddresses(mail, list);
+
+ assertThat(addresses).containsOnly(internetAddress, internetAddress2);
+ }
+
+ @Test
+ public void replaceInternetAddressesShouldReturnSenderWhenAddressesMatchSender() throws Exception {
+ MailAddress sender = MailAddressFixture.ANY_AT_JAMES;
+ FakeMail mail = FakeMail.builder()
+ .sender(sender)
+ .build();
+
+ Collection<InternetAddress> addresses = testee.replaceInternetAddresses(mail, ImmutableList.of(SpecialAddress.SENDER.toInternetAddress()));
+
+ assertThat(addresses).containsOnly(sender.toInternetAddress());
+ }
+
+ @Test
+ public void replaceInternetAddressesShouldReturnFromWhenAddressesMatchFrom() throws Exception {
+ MailAddress from = MailAddressFixture.ANY_AT_JAMES;
+ MailAddress from2 = MailAddressFixture.OTHER_AT_JAMES;
+ MimeMessage message = new MimeMessage(Session.getDefaultInstance(new Properties()));
+ message.addFrom(new InternetAddress[] { from.toInternetAddress(), from2.toInternetAddress() });
+ FakeMail mail = FakeMail.from(message);
+
+ Collection<InternetAddress> addresses = testee.replaceInternetAddresses(mail, ImmutableList.of(SpecialAddress.FROM.toInternetAddress()));
+
+ assertThat(addresses).containsOnly(from.toInternetAddress(), from2.toInternetAddress());
+ }
+
+ @Test
+ public void replaceInternetAddressesShouldReturnSenderWhenAddressesMatchFromAndNoFrom() throws Exception {
+ MailAddress sender = MailAddressFixture.ANY_AT_JAMES;
+ FakeMail mail = FakeMail.builder()
+ .mimeMessage(new MimeMessage(Session.getDefaultInstance(new Properties())))
+ .sender(sender)
+ .build();
+
+ Collection<InternetAddress> addresses = testee.replaceInternetAddresses(mail, ImmutableList.of(SpecialAddress.FROM.toInternetAddress()));
+
+ assertThat(addresses).containsOnly(sender.toInternetAddress());
+ }
+
+ @Test
+ public void replaceInternetAddressesShouldReturnEmptyWhenAddressesMatchSenderAndSenderIsNull() throws Exception {
+ FakeMail mail = FakeMail.builder()
+ .build();
+
+ Collection<InternetAddress> addresses = testee.replaceInternetAddresses(mail, ImmutableList.of(SpecialAddress.SENDER.toInternetAddress()));
+
+ assertThat(addresses).isEmpty();
+ }
+
+ @Test
+ public void replaceInternetAddressesShouldReturnEmptyWhenAddressesMatchReplyToAndReplyToIsNull() throws Exception {
+ MimeMessage message = new MimeMessage(Session.getDefaultInstance(new Properties()));
+ FakeMail mail = FakeMail.from(message);
+
+ Collection<InternetAddress> addresses = testee.replaceInternetAddresses(mail, ImmutableList.of(SpecialAddress.REPLY_TO.toInternetAddress()));
+
+ assertThat(addresses).isEmpty();
+ }
+
+ @Test
+ public void replaceInternetAddressesShouldReturnReplyToWhenAddressesMatchReplyTo() throws Exception {
+ MimeMessage message = new MimeMessage(Session.getDefaultInstance(new Properties()));
+ message.setReplyTo(InternetAddress.parse(MailAddressFixture.ANY_AT_JAMES.toString() + ", " + MailAddressFixture.OTHER_AT_JAMES.toString()));
+ FakeMail mail = FakeMail.from(message);
+
+ MailAddress expectedReplyTo = MailAddressFixture.ANY_AT_JAMES;
+ MailAddress expectedReplyTo2 = MailAddressFixture.OTHER_AT_JAMES;
+
+ Collection<InternetAddress> addresses = testee.replaceInternetAddresses(mail, ImmutableList.of(SpecialAddress.REPLY_TO.toInternetAddress()));
+
+ assertThat(addresses).containsOnly(expectedReplyTo.toInternetAddress(), expectedReplyTo2.toInternetAddress());
+ }
+
+ @Test
+ public void replaceInternetAddressesShouldReturnSenderWhenAddressesMatchReplyToAndNoReplyTo() throws Exception {
+ MailAddress sender = MailAddressFixture.ANY_AT_JAMES;
+ FakeMail mail = FakeMail.builder()
+ .sender(sender)
+ .mimeMessage(new MimeMessage(Session.getDefaultInstance(new Properties())))
+ .build();
+
+ Collection<InternetAddress> addresses = testee.replaceInternetAddresses(mail, ImmutableList.of(SpecialAddress.REPLY_TO.toInternetAddress()));
+
+ assertThat(addresses).containsOnly(sender.toInternetAddress());
+ }
+
+ @Test
+ public void replaceInternetAddressesShouldReturnSenderWhenAddressesMatchReversePath() throws Exception {
+ MailAddress sender = MailAddressFixture.ANY_AT_JAMES;
+ FakeMail mail = FakeMail.builder()
+ .sender(sender)
+ .build();
+
+ Collection<InternetAddress> addresses = testee.replaceInternetAddresses(mail, ImmutableList.of(SpecialAddress.REVERSE_PATH.toInternetAddress()));
+
+ assertThat(addresses).containsOnly(sender.toInternetAddress());
+ }
+
+ @Test
+ public void replaceInternetAddressesShouldReturnEmptyWhenAddressesMatchReversePathAndNoSender() throws Exception {
+ FakeMail mail = FakeMail.builder()
+ .build();
+
+ Collection<InternetAddress> addresses = testee.replaceInternetAddresses(mail, ImmutableList.of(SpecialAddress.REVERSE_PATH.toInternetAddress()));
+
+ assertThat(addresses).isEmpty();
+ }
+
+ @Test
+ public void replaceInternetAddressesShouldReturnToWhenAddressesMatchRecipients() throws Exception {
+ MailAddress to = MailAddressFixture.ANY_AT_JAMES;
+ MailAddress to2 = MailAddressFixture.OTHER_AT_JAMES;
+ MimeMessage message = new MimeMessage(Session.getDefaultInstance(new Properties()));
+ message.addHeader(RFC2822Headers.TO, MailAddressFixture.ANY_AT_JAMES.toString() + ", " + MailAddressFixture.OTHER_AT_JAMES.toString());
+ FakeMail mail = FakeMail.from(message);
+
+ Collection<InternetAddress> addresses = testee.replaceInternetAddresses(mail, ImmutableList.of(SpecialAddress.RECIPIENTS.toInternetAddress()));
+
+ assertThat(addresses).containsOnly(to.toInternetAddress(), to2.toInternetAddress());
+ }
+
+ @Test
+ public void replaceInternetAddressesShouldReturnToWhenAddressesMatchTo() throws Exception {
+ MailAddress to = MailAddressFixture.ANY_AT_JAMES;
+ MailAddress to2 = MailAddressFixture.OTHER_AT_JAMES;
+ MimeMessage message = new MimeMessage(Session.getDefaultInstance(new Properties()));
+ message.addHeader(RFC2822Headers.TO, MailAddressFixture.ANY_AT_JAMES.toString() + ", " + MailAddressFixture.OTHER_AT_JAMES);
+ FakeMail mail = FakeMail.from(message);
+
+ Collection<InternetAddress> addresses = testee.replaceInternetAddresses(mail, ImmutableList.of(SpecialAddress.TO.toInternetAddress()));
+
+ assertThat(addresses).containsOnly(to.toInternetAddress(), to2.toInternetAddress());
+ }
+
+ @Test
+ public void replaceInternetAddressesShouldReturnEmptyWhenAddressesMatchUnaltered() throws Exception {
+ FakeMail mail = FakeMail.builder()
+ .build();
+
+ Collection<InternetAddress> addresses = testee.replaceInternetAddresses(mail, ImmutableList.of(SpecialAddress.UNALTERED.toInternetAddress()));
+
+ assertThat(addresses).isEmpty();
+ }
+
+ @Test
+ public void replaceInternetAddressesShouldReturnEmptyWhenAddressesMatchNull() throws Exception {
+ FakeMail mail = FakeMail.builder()
+ .build();
+
+ Collection<InternetAddress> addresses = testee.replaceInternetAddresses(mail, ImmutableList.of(SpecialAddress.NULL.toInternetAddress()));
+
+ assertThat(addresses).isEmpty();
+ }
+
+ @Test
+ public void replaceInternetAddressesShouldReturnSameAddressWhenAddressesDoesntMatch() throws Exception {
+ FakeMail mail = FakeMail.builder()
+ .build();
+
+ MailAddress address = new MailAddress("user", "address.marker");
+ MailAddress address2 = new MailAddress("user2", "address.marker");
+ Collection<InternetAddress> addresses = testee.replaceInternetAddresses(mail, ImmutableList.of(address.toInternetAddress(), address2.toInternetAddress()));
+
+ assertThat(addresses).containsOnly(address.toInternetAddress(), address2.toInternetAddress());
+ }
+
+ @Test
+ public void replaceInternetAddressesShouldReturnSameListWhenAddressesMatchDelete() throws Exception {
+ FakeMail mail = FakeMail.builder()
+ .build();
+
+ Collection<InternetAddress> addresses = testee.replaceInternetAddresses(mail, ImmutableList.of(SpecialAddress.DELETE.toInternetAddress()));
+
+ InternetAddress expected = new InternetAddress("delete@address.marker");
+ assertThat(addresses).containsOnly(expected);
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org