JAMES-2267 Make InMemorySmtp slightly easier to work with Also, a SMTP gateway allows to get ride of it.
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/c6532c8f Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/c6532c8f Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/c6532c8f Branch: refs/heads/master Commit: c6532c8fb762ef63c9970b259964e022aab20349 Parents: 5f65878 Author: benwa <[email protected]> Authored: Thu Dec 21 11:11:31 2017 +0700 Committer: benwa <[email protected]> Committed: Fri Jan 5 09:33:52 2018 +0700 ---------------------------------------------------------------------- .../apache/james/mpt/smtp/ForwardSmtpTest.java | 5 +---- .../james/dnsservice/api/InMemoryDNSService.java | 6 ++++++ .../GatewayRemoteDeliveryIntegrationTest.java | 19 +++++-------------- .../transport/mailets/GroupMappingTest.java | 15 +++------------ .../james/jmap/VacationRelayIntegrationTest.java | 5 +---- 5 files changed, 16 insertions(+), 34 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/c6532c8f/mpt/impl/smtp/core/src/main/java/org/apache/james/mpt/smtp/ForwardSmtpTest.java ---------------------------------------------------------------------- diff --git a/mpt/impl/smtp/core/src/main/java/org/apache/james/mpt/smtp/ForwardSmtpTest.java b/mpt/impl/smtp/core/src/main/java/org/apache/james/mpt/smtp/ForwardSmtpTest.java index 12e41fb..bcfdd5d 100644 --- a/mpt/impl/smtp/core/src/main/java/org/apache/james/mpt/smtp/ForwardSmtpTest.java +++ b/mpt/impl/smtp/core/src/main/java/org/apache/james/mpt/smtp/ForwardSmtpTest.java @@ -22,7 +22,6 @@ import static com.jayway.awaitility.Duration.FIVE_HUNDRED_MILLISECONDS; import static com.jayway.awaitility.Duration.ONE_MINUTE; import static org.hamcrest.Matchers.equalTo; -import java.net.InetAddress; import java.util.Locale; import org.apache.james.mpt.script.SimpleScriptedTestProtocol; @@ -70,11 +69,9 @@ public abstract class ForwardSmtpTest { scriptedTest = new SimpleScriptedTestProtocol("/org/apache/james/smtp/scripts/", hostSystem) .withLocale(Locale.US) .withUser(USER_AT_DOMAIN, PASSWORD); - - InetAddress containerIp = InetAddress.getByName(fakeSmtp.getContainerIp()); hostSystem.getInMemoryDnsService() - .registerRecord("yopmail.com", containerIp, "yopmail.com"); + .registerMxRecord("yopmail.com", fakeSmtp.getContainerIp()); hostSystem.addAddressMapping(USER, DOMAIN, "[email protected]"); RestAssured.requestSpecification = FakeSmtpHelper.requestSpecification(fakeSmtp.getContainerIp()); http://git-wip-us.apache.org/repos/asf/james-project/blob/c6532c8f/server/dns-service/dnsservice-api/src/test/java/org/apache/james/dnsservice/api/InMemoryDNSService.java ---------------------------------------------------------------------- diff --git a/server/dns-service/dnsservice-api/src/test/java/org/apache/james/dnsservice/api/InMemoryDNSService.java b/server/dns-service/dnsservice-api/src/test/java/org/apache/james/dnsservice/api/InMemoryDNSService.java index 851ace7..3a3ff92 100644 --- a/server/dns-service/dnsservice-api/src/test/java/org/apache/james/dnsservice/api/InMemoryDNSService.java +++ b/server/dns-service/dnsservice-api/src/test/java/org/apache/james/dnsservice/api/InMemoryDNSService.java @@ -56,6 +56,12 @@ public class InMemoryDNSService implements DNSService { registerRecord(hostname, ImmutableList.of(address), ImmutableList.of(mxRecord), emptyTxtRecords); } + public InMemoryDNSService registerMxRecord(String hostname, String ip) throws UnknownHostException { + InetAddress containerIp = InetAddress.getByName(ip); + registerRecord(hostname, containerIp, hostname); + return this; + } + public void registerRecord(String hostname, List<InetAddress> addresses, Collection<String> mxRecords, Collection<String> txtRecords ){ records.put(hostname, dnsRecordFor(mxRecords, txtRecords, addresses)); } http://git-wip-us.apache.org/repos/asf/james-project/blob/c6532c8f/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/GatewayRemoteDeliveryIntegrationTest.java ---------------------------------------------------------------------- diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/GatewayRemoteDeliveryIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/GatewayRemoteDeliveryIntegrationTest.java index f5d3818..55900f0 100644 --- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/GatewayRemoteDeliveryIntegrationTest.java +++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/GatewayRemoteDeliveryIntegrationTest.java @@ -31,7 +31,6 @@ import static org.apache.james.mailets.configuration.Constants.awaitOneMinute; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.hasSize; -import java.net.InetAddress; import java.util.concurrent.TimeUnit; import org.apache.james.dnsservice.api.DNSService; @@ -85,12 +84,16 @@ public class GatewayRemoteDeliveryIntegrationTest { private TemporaryJamesServer jamesServer; private DataProbe dataProbe; + private InMemoryDNSService inMemoryDNSService; @Before public void setup() throws Exception { awaitOneMinute.until(() -> fakeSmtp.tryConnect(25)); RestAssured.requestSpecification = FakeSmtpHelper.requestSpecification(fakeSmtp.getContainerIp()); + + inMemoryDNSService = new InMemoryDNSService() + .registerMxRecord(JAMES_ANOTHER_DOMAIN, fakeSmtp.getContainerIp()); } @After @@ -179,9 +182,6 @@ public class GatewayRemoteDeliveryIntegrationTest { @Test public void outgoingMailShouldNotBeSentDirectlyToTheHostWhenGatewayFails() throws Exception { String gatewayProperty = "invalid.domain"; - InMemoryDNSService inMemoryDNSService = new InMemoryDNSService(); - InetAddress containerIp = InetAddress.getByName(fakeSmtp.getContainerIp()); - inMemoryDNSService.registerRecord(JAMES_ANOTHER_DOMAIN, containerIp, JAMES_ANOTHER_DOMAIN); jamesServer = TemporaryJamesServer.builder() .withBase(SMTP_ONLY_MODULE) @@ -203,12 +203,10 @@ public class GatewayRemoteDeliveryIntegrationTest { .statusCode(200) .body("", hasSize(0)); } + @Test public void remoteDeliveryShouldBounceUponFailure() throws Exception { String gatewayProperty = "invalid.domain"; - InMemoryDNSService inMemoryDNSService = new InMemoryDNSService(); - InetAddress containerIp = InetAddress.getByName(fakeSmtp.getContainerIp()); - inMemoryDNSService.registerRecord(JAMES_ANOTHER_DOMAIN, containerIp, JAMES_ANOTHER_DOMAIN); jamesServer = TemporaryJamesServer.builder() .withBase(SMTP_AND_IMAP_MODULE) @@ -237,9 +235,6 @@ public class GatewayRemoteDeliveryIntegrationTest { @Test public void remoteDeliveryShouldBounceUponFailureWhenNoBounceProcessor() throws Exception { String gatewayProperty = "invalid.domain"; - InMemoryDNSService inMemoryDNSService = new InMemoryDNSService(); - InetAddress containerIp = InetAddress.getByName(fakeSmtp.getContainerIp()); - inMemoryDNSService.registerRecord(JAMES_ANOTHER_DOMAIN, containerIp, JAMES_ANOTHER_DOMAIN); jamesServer = TemporaryJamesServer.builder() .withBase(SMTP_AND_IMAP_MODULE) @@ -279,10 +274,6 @@ public class GatewayRemoteDeliveryIntegrationTest { @Test public void directResolutionShouldBeWellPerformed() throws Exception { - InMemoryDNSService inMemoryDNSService = new InMemoryDNSService(); - InetAddress containerIp = InetAddress.getByName(fakeSmtp.getContainerIp()); - inMemoryDNSService.registerRecord(JAMES_ANOTHER_DOMAIN, containerIp, JAMES_ANOTHER_DOMAIN); - jamesServer = TemporaryJamesServer.builder() .withBase(SMTP_ONLY_MODULE) .withOverrides(binder -> binder.bind(DNSService.class).toInstance(inMemoryDNSService)) http://git-wip-us.apache.org/repos/asf/james-project/blob/c6532c8f/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 9a95c42..5f51620 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 @@ -30,13 +30,10 @@ import static org.apache.james.mailets.configuration.Constants.calmlyAwait; import static org.assertj.core.api.Assertions.assertThat; import static org.hamcrest.Matchers.equalTo; -import java.net.InetAddress; import java.util.concurrent.TimeUnit; import javax.mail.internet.MimeMessage; -import org.apache.james.dnsservice.api.DNSService; -import org.apache.james.dnsservice.api.InMemoryDNSService; import org.apache.james.jmap.mailet.VacationMailet; import org.apache.james.mailbox.model.MailboxConstants; import org.apache.james.mailets.TemporaryJamesServer; @@ -90,7 +87,6 @@ public class GroupMappingTest { .withAffinityToContainer() .waitingFor(new HostPortWaitStrategy()); - private final InMemoryDNSService inMemoryDNSService = new InMemoryDNSService(); @Rule public TemporaryFolder temporaryFolder = new TemporaryFolder(); @Rule @@ -98,13 +94,8 @@ public class GroupMappingTest { @Rule public SMTPMessageSender messageSender = new SMTPMessageSender(DEFAULT_DOMAIN); - 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() .addProcessor(CommonProcessors.simpleRoot()) .addProcessor(CommonProcessors.error()) @@ -126,11 +117,11 @@ public class GroupMappingTest { .addProperty("maxDnsProblemRetries", "0") .addProperty("deliveryThreads", "10") .addProperty("sendpartial", "true") - .addProperty("bounceProcessor", "bounces"))) + .addProperty("bounceProcessor", "bounces") + .addProperty("gateway", fakeSmtp.getContainerIp()))) .build(); jamesServer = TemporaryJamesServer.builder() - .withOverrides(binder -> binder.bind(DNSService.class).toInstance(inMemoryDNSService)) .withMailetContainer(mailetContainer) .build(temporaryFolder); @@ -464,7 +455,7 @@ public class GroupMappingTest { .until(() -> { try { with() - .baseUri("http://" + containerIp.getHostAddress()) + .baseUri("http://" + fakeSmtp.getContainerIp()) .port(80) .get("/api/email") .then() http://git-wip-us.apache.org/repos/asf/james-project/blob/c6532c8f/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/VacationRelayIntegrationTest.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/VacationRelayIntegrationTest.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/VacationRelayIntegrationTest.java index 3ef66d6..dda4ddd 100644 --- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/VacationRelayIntegrationTest.java +++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/VacationRelayIntegrationTest.java @@ -21,7 +21,6 @@ package org.apache.james.jmap; import static org.hamcrest.Matchers.equalTo; -import java.net.InetAddress; import java.util.concurrent.TimeUnit; import org.apache.commons.net.smtp.SMTPClient; @@ -79,10 +78,8 @@ public abstract class VacationRelayIntegrationTest { @Before public void setUp() throws Exception { - - InetAddress containerIp = InetAddress.getByName(fakeSmtp.getContainerIp()); getInMemoryDns() - .registerRecord("yopmail.com", containerIp, "yopmail.com"); + .registerMxRecord("yopmail.com", fakeSmtp.getContainerIp()); guiceJamesServer = getJmapServer(); guiceJamesServer.start(); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
