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 2019/05/15 07:42:08 UTC
[james-project] 02/05: JAMES-2754 add validate deployment test with
mail sent with smtp
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 <rk...@linagora.com>
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: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org