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 <[email protected]>
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("[email protected]", 
ImmutableList.of(JAMES_USER, OTHER_USER), uniqueMessage);
+        sender.sendMessageWithHeaders("[email protected]", 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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to