You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by bt...@apache.org on 2020/11/06 02:28:47 UTC

[james-project] 09/12: JAMES-3389 check MailQueue contents after using mailtransfer api

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 05528b585798b1aaf56c54b5837c6140c8a364c9
Author: Andreas Valdma <an...@nortal.com>
AuthorDate: Wed Nov 4 17:25:03 2020 +0200

    JAMES-3389 check MailQueue contents after using mailtransfer api
---
 .../james/routes/TransferEmailRoutesTest.java      | 38 ++++++++++++++++++++--
 1 file changed, 36 insertions(+), 2 deletions(-)

diff --git a/server/protocols/webadmin/webadmin-mail-over-web/src/test/java/org/apache/james/routes/TransferEmailRoutesTest.java b/server/protocols/webadmin/webadmin-mail-over-web/src/test/java/org/apache/james/routes/TransferEmailRoutesTest.java
index 169f9cc..ea71371 100644
--- a/server/protocols/webadmin/webadmin-mail-over-web/src/test/java/org/apache/james/routes/TransferEmailRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-mail-over-web/src/test/java/org/apache/james/routes/TransferEmailRoutesTest.java
@@ -24,29 +24,44 @@ import static io.restassured.config.EncoderConfig.encoderConfig;
 import static io.restassured.config.RestAssuredConfig.newConfig;
 
 import java.nio.charset.StandardCharsets;
+import java.time.Duration;
+import java.time.temporal.ChronoUnit;
+import java.time.temporal.TemporalUnit;
 
+import org.apache.james.queue.api.MailQueue;
+import org.apache.james.queue.api.MailQueueFactory;
 import org.apache.james.queue.api.RawMailQueueItemDecoratorFactory;
 import org.apache.james.queue.memory.MemoryMailQueueFactory;
+import org.apache.james.server.core.MailImpl;
 import org.apache.james.util.ClassLoaderUtils;
 import org.apache.james.webadmin.WebAdminServer;
 import org.apache.james.webadmin.WebAdminUtils;
 import org.apache.james.webadmin.routes.TransferEmailRoutes;
+import org.apache.mailet.Mail;
+import org.assertj.core.api.SoftAssertions;
 import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
+import com.github.fge.lambdas.Throwing;
 import io.restassured.RestAssured;
 import io.restassured.builder.RequestSpecBuilder;
 import io.restassured.http.ContentType;
 import io.restassured.specification.RequestSpecification;
+import reactor.core.publisher.Flux;
 
 public class TransferEmailRoutesTest {
 
     private WebAdminServer webAdminServer;
 
+    private MailQueue mailQueue;
+
     private WebAdminServer createServer() {
-        MemoryMailQueueFactory memoryMailQueueFactory = new MemoryMailQueueFactory(new RawMailQueueItemDecoratorFactory());
-        return WebAdminUtils.createWebAdminServer(new TransferEmailRoutes(memoryMailQueueFactory)).start();
+        MailQueueFactory mailQueueFactory = new MemoryMailQueueFactory(new RawMailQueueItemDecoratorFactory());
+        WebAdminServer webAdminServer = WebAdminUtils.createWebAdminServer(new TransferEmailRoutes(mailQueueFactory)).start();
+        mailQueue = ((MailQueue) mailQueueFactory.getQueue(MailQueueFactory.SPOOL).get());
+        return webAdminServer;
     }
 
     @BeforeEach
@@ -81,6 +96,11 @@ public class TransferEmailRoutesTest {
                 .then()
                 .assertThat()
                 .statusCode(500);
+
+        Assertions.assertThrows(IllegalStateException.class,
+                () -> {
+                    MailQueue.MailQueueItem mailQueueItem = ((Flux<MailQueue.MailQueueItem>) mailQueue.deQueue()).blockFirst(Duration.of(100, ChronoUnit.MILLIS));
+                });
     }
 
     @Test
@@ -92,6 +112,15 @@ public class TransferEmailRoutesTest {
                 .then()
                 .assertThat()
                 .statusCode(201);
+
+        MailQueue.MailQueueItem mailQueueItem = ((Flux<MailQueue.MailQueueItem>) mailQueue.deQueue()).blockFirst(Duration.of(100, ChronoUnit.MILLIS));
+        Mail mail = mailQueueItem.getMail();
+
+        SoftAssertions.assertSoftly(softly -> {
+            softly.assertThat(Throwing.supplier(() -> mail.getMessage().getMessageID()).get()).isEqualTo("<20...@acm.org>");
+            softly.assertThat(Throwing.supplier(() -> mail.getSender().asPrettyString()).get()).isEqualTo("<ml...@acm.org>");
+            softly.assertThat(Throwing.supplier(() -> mail.getMessage().getHeader("X-Mailer")).get()[0]).isEqualTo("http://www.phpclasses.org/mimemessage $Revision: 1.63 $ (mail)");
+        });
     }
 
     @Test
@@ -103,5 +132,10 @@ public class TransferEmailRoutesTest {
                 .then()
                 .assertThat()
                 .statusCode(500);
+
+        Assertions.assertThrows(IllegalStateException.class,
+                () -> {
+                    MailQueue.MailQueueItem mailQueueItem = ((Flux<MailQueue.MailQueueItem>) mailQueue.deQueue()).blockFirst(Duration.of(100, ChronoUnit.MILLIS));
+                });
     }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org