This is an automated email from the ASF dual-hosted git repository. btellier pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 42616098ed0ca459c0d4ed3af70523237eb6c169 Author: Rémi Kowalski <[email protected]> AuthorDate: Fri May 3 14:19:27 2019 +0200 JAMES-2754 add validate deployment test with mail sent with smtp --- .../external/james/DeploymentValidation.java | 40 ++++++++++++++++++++++ .../DockerDeploymentValidationGuiceJPATest.java | 14 +++++++- .../DockerDeploymentValidationSpringJPATest.java | 14 +++++++- .../james/JamesDeploymentValidationTest.java | 10 ++++-- 4 files changed, 73 insertions(+), 5 deletions(-) diff --git a/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/DeploymentValidation.java b/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/DeploymentValidation.java index 20a4515..2c01407 100644 --- a/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/DeploymentValidation.java +++ b/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/DeploymentValidation.java @@ -19,11 +19,21 @@ package org.apache.james.mpt.imapmailbox.external.james; +import static org.awaitility.Duration.ONE_HUNDRED_MILLISECONDS; +import static org.awaitility.Duration.TEN_SECONDS; + +import java.io.IOException; import java.util.Locale; +import org.apache.commons.net.imap.IMAPClient; import org.apache.james.mpt.api.ImapHostSystem; import org.apache.james.mpt.imapmailbox.external.james.host.SmtpHostSystem; +import org.apache.james.mpt.imapmailbox.external.james.host.external.ExternalJamesConfiguration; import org.apache.james.mpt.script.SimpleScriptedTestProtocol; +import org.apache.james.utils.SMTPMessageSender; +import org.awaitility.Awaitility; +import org.awaitility.Duration; +import org.awaitility.core.ConditionFactory; import org.junit.Before; import org.junit.Test; @@ -33,17 +43,33 @@ public abstract class DeploymentValidation { public static final String USER = "imapuser"; public static final String USER_ADDRESS = USER + "@" + DOMAIN; public static final String PASSWORD = "password"; + private static final String INBOX = "INBOX"; + private static final String ONE_MAIL = "* 1 EXISTS"; protected abstract ImapHostSystem createImapHostSystem(); protected abstract SmtpHostSystem createSmtpHostSystem(); + protected abstract ExternalJamesConfiguration getConfiguration(); + private ImapHostSystem system; + private SmtpHostSystem smtpSystem; private SimpleScriptedTestProtocol simpleScriptedTestProtocol; + private IMAPClient imapClient = new IMAPClient(); + + protected static final Duration slowPacedPollInterval = ONE_HUNDRED_MILLISECONDS; + protected static final ConditionFactory calmlyAwait = Awaitility.with() + .pollInterval(slowPacedPollInterval) + .and() + .with() + .pollDelay(slowPacedPollInterval) + .await(); + protected static final ConditionFactory awaitAtMostTenSeconds = calmlyAwait.atMost(TEN_SECONDS); @Before public void setUp() throws Exception { system = createImapHostSystem(); + smtpSystem = createSmtpHostSystem(); simpleScriptedTestProtocol = new SimpleScriptedTestProtocol("/org/apache/james/imap/scripts/", system) .withUser(USER_ADDRESS, PASSWORD) @@ -55,4 +81,18 @@ public abstract class DeploymentValidation { simpleScriptedTestProtocol.run("ValidateDeployment"); } + @Test + public void validateDeploymentWithMailsFromSmtp() throws Exception { + SMTPMessageSender smtpMessageSender = new SMTPMessageSender("another-domain"); + smtpSystem.connect(smtpMessageSender).sendMessage("test@" + DOMAIN, USER_ADDRESS); + imapClient.connect(getConfiguration().getAddress(), getConfiguration().getImapPort().getValue()); + imapClient.login(USER_ADDRESS, PASSWORD); + awaitAtMostTenSeconds.until(this::checkMailDelivery); + } + + private Boolean checkMailDelivery() throws IOException { + imapClient.select(INBOX); + String replyString = imapClient.getReplyString(); + return replyString.contains(ONE_MAIL); + } } diff --git a/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/DockerDeploymentValidationGuiceJPATest.java b/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/DockerDeploymentValidationGuiceJPATest.java index 13df38e..c9e74c7 100644 --- a/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/DockerDeploymentValidationGuiceJPATest.java +++ b/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/DockerDeploymentValidationGuiceJPATest.java @@ -22,6 +22,7 @@ package org.apache.james.mpt.imapmailbox.external.james; import org.apache.james.mpt.api.ImapHostSystem; import org.apache.james.mpt.imapmailbox.external.james.host.ProvisioningAPI; import org.apache.james.mpt.imapmailbox.external.james.host.SmtpHostSystem; +import org.apache.james.mpt.imapmailbox.external.james.host.external.ExternalJamesConfiguration; import org.junit.After; import org.junit.Before; import org.junit.Ignore; @@ -47,7 +48,7 @@ public class DockerDeploymentValidationGuiceJPATest extends DeploymentValidation dockerJamesRule.start(); ProvisioningAPI provisioningAPI = dockerJamesRule.cliJarDomainsAndUsersAdder(); - Injector injector = Guice.createInjector(new ExternalJamesModule(dockerJamesRule.getConfiguration(), provisioningAPI)); + Injector injector = Guice.createInjector(new ExternalJamesModule(getConfiguration(), provisioningAPI)); provisioningAPI.addDomain(DOMAIN); provisioningAPI.addUser(USER_ADDRESS, PASSWORD); system = injector.getInstance(ImapHostSystem.class); @@ -63,6 +64,12 @@ public class DockerDeploymentValidationGuiceJPATest extends DeploymentValidation public void validateDeployment() throws Exception { } + @Test + @Ignore("Not to be run on CI, as it will not use the current build. Uncomment to test on local dev environment") + @Override + public void validateDeploymentWithMailsFromSmtp() throws Exception { + } + @Override protected ImapHostSystem createImapHostSystem() { return system; @@ -73,6 +80,11 @@ public class DockerDeploymentValidationGuiceJPATest extends DeploymentValidation return smtpHostSystem; } + @Override + protected ExternalJamesConfiguration getConfiguration() { + return dockerJamesRule.getConfiguration(); + } + @After public void tearDown() throws Exception { system.afterTest(); diff --git a/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/DockerDeploymentValidationSpringJPATest.java b/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/DockerDeploymentValidationSpringJPATest.java index 0f4e86a..d99e546 100644 --- a/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/DockerDeploymentValidationSpringJPATest.java +++ b/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/DockerDeploymentValidationSpringJPATest.java @@ -22,6 +22,7 @@ package org.apache.james.mpt.imapmailbox.external.james; import org.apache.james.mpt.api.ImapHostSystem; import org.apache.james.mpt.imapmailbox.external.james.host.ProvisioningAPI; import org.apache.james.mpt.imapmailbox.external.james.host.SmtpHostSystem; +import org.apache.james.mpt.imapmailbox.external.james.host.external.ExternalJamesConfiguration; import org.junit.After; import org.junit.Before; import org.junit.Ignore; @@ -47,7 +48,7 @@ public class DockerDeploymentValidationSpringJPATest extends DeploymentValidatio dockerJamesRule.start(); ProvisioningAPI provisioningAPI = dockerJamesRule.cliShellDomainsAndUsersAdder(); - Injector injector = Guice.createInjector(new ExternalJamesModule(dockerJamesRule.getConfiguration(), provisioningAPI)); + Injector injector = Guice.createInjector(new ExternalJamesModule(getConfiguration(), provisioningAPI)); system = injector.getInstance(ImapHostSystem.class); provisioningAPI.addDomain(DOMAIN); provisioningAPI.addUser(USER_ADDRESS, PASSWORD); @@ -63,6 +64,12 @@ public class DockerDeploymentValidationSpringJPATest extends DeploymentValidatio public void validateDeployment() throws Exception { } + @Test + @Ignore("Not to be run on CI, as it will not use the current build. Uncomment to test on local dev environment") + @Override + public void validateDeploymentWithMailsFromSmtp() throws Exception { + } + @Override protected ImapHostSystem createImapHostSystem() { return system; @@ -73,6 +80,11 @@ public class DockerDeploymentValidationSpringJPATest extends DeploymentValidatio return smtpHostSystem; } + @Override + protected ExternalJamesConfiguration getConfiguration() { + return dockerJamesRule.getConfiguration(); + } + @After public void tearDown() throws Exception { system.afterTest(); diff --git a/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/JamesDeploymentValidationTest.java b/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/JamesDeploymentValidationTest.java index adf9940..5afc1ee 100644 --- a/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/JamesDeploymentValidationTest.java +++ b/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/JamesDeploymentValidationTest.java @@ -20,11 +20,10 @@ package org.apache.james.mpt.imapmailbox.external.james; import org.apache.james.mpt.api.ImapHostSystem; +import org.apache.james.mpt.imapmailbox.external.james.host.SmtpHostSystem; import org.apache.james.mpt.imapmailbox.external.james.host.external.ExternalJamesConfiguration; -import org.apache.james.mpt.imapmailbox.external.james.host.external.NoopDomainsAndUserAdder; import org.apache.james.mpt.imapmailbox.external.james.host.external.ExternalJamesConfigurationEnvironnementVariables; -import org.apache.james.mpt.imapmailbox.external.james.host.SmtpHostSystem; -import org.apache.james.utils.SMTPMessageSender; +import org.apache.james.mpt.imapmailbox.external.james.host.external.NoopDomainsAndUserAdder; import org.junit.After; import org.junit.Before; @@ -58,6 +57,11 @@ public class JamesDeploymentValidationTest extends DeploymentValidation { return smtpHostSystem; } + @Override + protected ExternalJamesConfiguration getConfiguration() { + return configuration; + } + @After public void tearDown() throws Exception { system.afterTest(); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
