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 2020/06/24 10:57:22 UTC
[james-project] 07/07: JAMES-3029 add test to check that mail is
well received with 10 recipients
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 56618acb1e1c8a8cfdebdefbc337ad460ac9c64b
Author: RĂ©mi Kowalski <rk...@linagora.com>
AuthorDate: Mon Apr 20 18:30:52 2020 +0200
JAMES-3029 add test to check that mail is well received with 10 recipients
---
.../apache/james/MailsShouldBeWellReceived.java | 67 ++++++++++++++++++++--
1 file changed, 62 insertions(+), 5 deletions(-)
diff --git a/server/container/guice/guice-common/src/test/java/org/apache/james/MailsShouldBeWellReceived.java b/server/container/guice/guice-common/src/test/java/org/apache/james/MailsShouldBeWellReceived.java
index f119167..1bd32e2 100644
--- a/server/container/guice/guice-common/src/test/java/org/apache/james/MailsShouldBeWellReceived.java
+++ b/server/container/guice/guice-common/src/test/java/org/apache/james/MailsShouldBeWellReceived.java
@@ -24,6 +24,7 @@ import static org.assertj.core.api.Assertions.assertThat;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.UUID;
+import java.util.stream.IntStream;
import javax.mail.Flags;
import javax.mail.Folder;
@@ -48,9 +49,11 @@ import org.awaitility.Awaitility;
import org.awaitility.Duration;
import org.awaitility.core.ConditionFactory;
import org.junit.jupiter.api.Test;
-import org.testcontainers.shaded.com.google.common.collect.ImmutableList;
import com.github.fge.lambdas.Throwing;
+import com.github.fge.lambdas.consumers.ThrowingConsumer;
+import com.github.steveash.guavate.Guavate;
+import com.google.common.collect.ImmutableList;
import com.google.common.io.Resources;
import reactor.core.publisher.Mono;
@@ -164,20 +167,62 @@ interface MailsShouldBeWellReceived {
CALMLY_AWAIT.untilAsserted(() -> assertThat(server.getProbe(SpoolerProbe.class).processingFinished()).isTrue());
- try (IMAPMessageReader reader = new IMAPMessageReader()) {
+ try (TestIMAPClient reader = new TestIMAPClient()) {
reader.connect(JAMES_SERVER_HOST, server.getProbe(ImapGuiceProbe.class).getImapPort())
.login(JAMES_USER, PASSWORD)
- .select(IMAPMessageReader.INBOX)
+ .select(TestIMAPClient.INBOX)
.awaitMessageCount(CALMLY_AWAIT, 1);
reader.connect(JAMES_SERVER_HOST, server.getProbe(ImapGuiceProbe.class).getImapPort())
.login(OTHER_USER, PASSWORD_OTHER)
- .select(IMAPMessageReader.INBOX)
+ .select(TestIMAPClient.INBOX)
.awaitMessageCount(CALMLY_AWAIT, 1);
}
}
@Test
+ default void mailsShouldBeWellReceivedByTenRecipient(GuiceJamesServer server) throws Exception {
+ server.getProbe(DataProbeImpl.class).fluent()
+ .addDomain(DOMAIN)
+ .addUser(JAMES_USER, PASSWORD);
+
+ ImmutableList<String> users = generateNUsers(10);
+
+ users.forEach((ThrowingConsumer<String>) user -> server.getProbe(DataProbeImpl.class)
+ .fluent()
+ .addUser(user, PASSWORD));
+
+ MailboxProbeImpl mailboxProbe = server.getProbe(MailboxProbeImpl.class);
+ mailboxProbe.createMailbox("#private", JAMES_USER, DefaultMailboxes.INBOX);
+ users.forEach((ThrowingConsumer<String>) user ->
+ mailboxProbe.createMailbox("#private", user, DefaultMailboxes.INBOX));
+
+
+ Port smtpPort = server.getProbe(SmtpGuiceProbe.class).getSmtpPort();
+ String message = Resources.toString(Resources.getResource("eml/htmlMail.eml"), StandardCharsets.UTF_8);
+
+ try (SMTPMessageSender sender = new SMTPMessageSender(Domain.LOCALHOST.asString())) {
+ sender.connect(JAMES_SERVER_HOST, smtpPort);
+ sendUniqueMessageToUsers(sender, message, users);
+ }
+
+ CALMLY_AWAIT_FIVE_MINUTE.untilAsserted(() ->
+ assertThat(
+ server
+ .getProbe(SpoolerProbe.class)
+ .processingFinished()
+ ).isTrue());
+
+ try (TestIMAPClient reader = new TestIMAPClient()) {
+ users.forEach((ThrowingConsumer<String>) user -> reader
+ .connect(JAMES_SERVER_HOST, server.getProbe(ImapGuiceProbe.class).getImapPort())
+ .login(user, PASSWORD)
+ .select(TestIMAPClient.INBOX)
+ .awaitMessageCount(CALMLY_AWAIT, 1));
+ }
+ }
+
+ @Test
default void oneHundredMailsShouldBeWellReceived(GuiceJamesServer server) throws Exception {
server.getProbe(DataProbeImpl.class).fluent()
.addDomain(DOMAIN)
@@ -218,7 +263,19 @@ interface MailsShouldBeWellReceived {
}
default void sendUniqueMessageToTwoUsers(SMTPMessageSender sender, String message) throws IOException {
+ sendUniqueMessageToUsers(sender, message, ImmutableList.of(JAMES_USER, OTHER_USER));
+ }
+
+ default void sendUniqueMessageToUsers(SMTPMessageSender sender, String message, ImmutableList<String> users) throws IOException {
String uniqueMessage = message.replace("banana", "UUID " + UUID.randomUUID().toString());
- sender.sendMessageWithHeaders("bob@apache.org", ImmutableList.of(JAMES_USER, OTHER_USER), uniqueMessage);
+ sender.sendMessageWithHeaders("bob@apache.org", users, uniqueMessage);
}
+
+ default ImmutableList<String> generateNUsers(int nbUsers) {
+ return IntStream.range(0, nbUsers)
+ .boxed()
+ .map(index -> "user" + index + "@" + DOMAIN)
+ .collect(Guavate.toImmutableList());
+ }
+
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org