JAMES-2139 Add IT so that group does not support external address
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/81bf0a3c Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/81bf0a3c Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/81bf0a3c Branch: refs/heads/master Commit: 81bf0a3c8c009b49a8c9bb4effd7a9af391b6469 Parents: d42ec7f Author: quynhn <qngu...@linagora.com> Authored: Tue Sep 12 16:11:01 2017 +0700 Committer: Antoine Duprat <adup...@linagora.com> Committed: Wed Sep 13 10:23:34 2017 +0200 ---------------------------------------------------------------------- server/mailet/integration-testing/pom.xml | 6 ++ .../transport/mailets/GroupMappingTest.java | 79 +++++++++++++++++++- .../src/test/resources/domainlist.xml | 4 +- 3 files changed, 85 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/81bf0a3c/server/mailet/integration-testing/pom.xml ---------------------------------------------------------------------- diff --git a/server/mailet/integration-testing/pom.xml b/server/mailet/integration-testing/pom.xml index 147b510..02858f8 100644 --- a/server/mailet/integration-testing/pom.xml +++ b/server/mailet/integration-testing/pom.xml @@ -55,6 +55,12 @@ </dependency> <dependency> <groupId>${project.groupId}</groupId> + <artifactId>james-server-dnsservice-api</artifactId> + <type>test-jar</type> + <scope>test</scope> + </dependency> + <dependency> + <groupId>${project.groupId}</groupId> <artifactId>james-server-guice-common</artifactId> <type>test-jar</type> <scope>test</scope> http://git-wip-us.apache.org/repos/asf/james-project/blob/81bf0a3c/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/GroupMappingTest.java ---------------------------------------------------------------------- diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/GroupMappingTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/GroupMappingTest.java index f391fff..db99d55 100644 --- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/GroupMappingTest.java +++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/GroupMappingTest.java @@ -19,14 +19,19 @@ package org.apache.james.transport.mailets; +import static com.jayway.restassured.RestAssured.with; import static org.assertj.core.api.Assertions.assertThat; import static org.hamcrest.Matchers.equalTo; +import static org.hamcrest.Matchers.isEmptyOrNullString; +import java.net.InetAddress; import java.util.concurrent.TimeUnit; import javax.mail.internet.MimeMessage; import org.apache.james.core.MailAddress; +import org.apache.james.dnsservice.api.DNSService; +import org.apache.james.dnsservice.api.InMemoryDNSService; import org.apache.james.mailbox.model.MailboxConstants; import org.apache.james.mailets.TemporaryJamesServer; import org.apache.james.mailets.configuration.CommonProcessors; @@ -35,6 +40,7 @@ import org.apache.james.mailets.configuration.MailetContainer; import org.apache.james.mailets.configuration.ProcessorConfiguration; import org.apache.james.modules.MailboxProbeImpl; import org.apache.james.probe.DataProbe; +import org.apache.james.util.streams.SwarmGenericContainer; import org.apache.james.utils.DataProbeImpl; import org.apache.james.utils.IMAPMessageReader; import org.apache.james.utils.SMTPMessageSender; @@ -79,13 +85,45 @@ public class GroupMappingTest { private RequestSpecification restApiRequest; @Rule + public final SwarmGenericContainer fakeSmtp = new SwarmGenericContainer("weave/rest-smtp-sink:latest") + .withExposedPorts(25); + + private final InMemoryDNSService inMemoryDNSService = new InMemoryDNSService(); + @Rule public TemporaryFolder temporaryFolder = new TemporaryFolder(); + + private InetAddress containerIp; @Before public void setup() throws Exception { + + containerIp = InetAddress.getByName(fakeSmtp.getContainerIp()); + inMemoryDNSService.registerRecord("yopmail.com", containerIp, "yopmail.com"); + MailetContainer mailetContainer = MailetContainer.builder() .postmaster("postmaster@" + DOMAIN1) .threads(5) - .addProcessor(CommonProcessors.root()) + .addProcessor(ProcessorConfiguration.builder() + .state("root") + .enableJmx(true) + .addMailet(MailetConfiguration.builder() + .match("All") + .clazz("PostmasterAlias") + .build()) + .addMailet(MailetConfiguration.builder() + .match("RelayLimit=30") + .clazz("Null") + .build()) + .addMailet(MailetConfiguration.builder() + .match("SMTPAuthSuccessful") + .clazz("ToProcessor") + .addProperty("processor", "transport") + .build()) + .addMailet(MailetConfiguration.builder() + .match("All") + .clazz("ToProcessor") + .addProperty("processor", "transport") + .build()) + .build()) .addProcessor(CommonProcessors.error()) .addProcessor(ProcessorConfiguration.transport() .enableJmx(true) @@ -120,7 +158,8 @@ public class GroupMappingTest { .build()) .build(); - jamesServer = new TemporaryJamesServer(temporaryFolder, mailetContainer); + jamesServer = new TemporaryJamesServer(temporaryFolder, mailetContainer, (binder) -> binder.bind(DNSService.class).toInstance(inMemoryDNSService)); + Duration slowPacedPollInterval = Duration.FIVE_HUNDRED_MILLISECONDS; calmlyAwait = Awaitility.with().pollInterval(slowPacedPollInterval).and().with().pollDelay(slowPacedPollInterval).await(); @@ -388,4 +427,40 @@ public class GroupMappingTest { calmlyAwait.atMost(Duration.ONE_MINUTE).until(() -> imapMessageReader.userReceivedMessage(USER_DOMAIN2, PASSWORD)); } } + + @Test + public void externalGroupMemberAreNotSupported() throws Exception { + String externalMail = "r...@yopmail.com"; + restApiRequest.put(GroupsRoutes.ROOT_PATH + "/" + GROUP_ON_DOMAIN1 + "/" + externalMail); + + Mail mail = FakeMail.builder() + .mimeMessage(message) + .sender(new MailAddress(SENDER)) + .recipient(new MailAddress(GROUP_ON_DOMAIN1)) + .build(); + + try (SMTPMessageSender messageSender = SMTPMessageSender.noAuthentication(LOCALHOST_IP, SMTP_PORT, DOMAIN1);) { + messageSender.sendMessage(mail); + calmlyAwait.atMost(Duration.ONE_MINUTE).until(messageSender::messageHasBeenSent); + + calmlyAwait.atMost(1, TimeUnit.MINUTES) + .until(() -> { + try { + with() + .baseUri("http://" + containerIp.getHostAddress()) + .port(80) + .get("/api/email") + .then() + .statusCode(200) + .body("[0].from", equalTo(SENDER)) + .body("[0].to[0]", equalTo(externalMail)) + .body("[0].text", equalTo(MESSAGE_CONTENT)); + + return true; + } catch(AssertionError e) { + return false; + } + }); + } + } } http://git-wip-us.apache.org/repos/asf/james-project/blob/81bf0a3c/server/mailet/integration-testing/src/test/resources/domainlist.xml ---------------------------------------------------------------------- diff --git a/server/mailet/integration-testing/src/test/resources/domainlist.xml b/server/mailet/integration-testing/src/test/resources/domainlist.xml index d9040c0..fc3d912 100644 --- a/server/mailet/integration-testing/src/test/resources/domainlist.xml +++ b/server/mailet/integration-testing/src/test/resources/domainlist.xml @@ -21,7 +21,7 @@ <!-- See http://james.apache.org/server/3/config.html for usage --> <domainlist> - <autodetect>true</autodetect> - <autodetectIP>true</autodetectIP> + <autodetect>false</autodetect> + <autodetectIP>false</autodetectIP> <defaultDomain>localhost</defaultDomain> </domainlist> --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org