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