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/03/25 07:35:16 UTC

[james-project] 01/04: JAMES-2666 integration tests for event dead letters routes

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 659b5ce63e4e2f7400ec8209fd9a92d62a6dc071
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Mon Mar 25 09:38:04 2019 +0700

    JAMES-2666 integration tests for event dead letters routes
---
 .../EventDeadLettersIntegrationTest.java           | 79 ++++++++++------------
 1 file changed, 37 insertions(+), 42 deletions(-)

diff --git a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/EventDeadLettersIntegrationTest.java b/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/EventDeadLettersIntegrationTest.java
index 61dba2d..cb1d8e0 100644
--- a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/EventDeadLettersIntegrationTest.java
+++ b/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/EventDeadLettersIntegrationTest.java
@@ -40,6 +40,7 @@ import org.apache.james.mailbox.DefaultMailboxes;
 import org.apache.james.mailbox.events.Event;
 import org.apache.james.mailbox.events.Group;
 import org.apache.james.mailbox.events.MailboxListener;
+import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.modules.MailboxProbeImpl;
 import org.apache.james.probe.DataProbe;
@@ -75,16 +76,12 @@ public class EventDeadLettersIntegrationTest {
         private Map<Event.EventId, Integer> retries;
         private List<Event> successfulEvents;
 
-        private void init() {
+        RetryEventsListener() {
             this.retriesBeforeSuccess = 0;
             this.retries = new HashMap<>();
             this.successfulEvents = new ArrayList<>();
         }
 
-        RetryEventsListener() {
-            init();
-        }
-
         @Override
         public Group getDefaultGroup() {
             return GROUP;
@@ -110,10 +107,6 @@ public class EventDeadLettersIntegrationTest {
         void setRetriesBeforeSuccess(int retriesBeforeSuccess) {
             this.retriesBeforeSuccess = retriesBeforeSuccess;
         }
-
-        void clear() {
-            init();
-        }
     }
 
     private static final String DOMAIN = "domain.tld";
@@ -122,6 +115,8 @@ public class EventDeadLettersIntegrationTest {
     private static final String EVENTS_ACTION = "reDeliver";
     private static final String GROUP_ID = new RetryEventsListenerGroup().asString();
 
+    private static final MailboxPath BOB_INBOX_PATH = MailboxPath.forUser(BOB, DefaultMailboxes.INBOX);
+
     private Duration slowPacedPollInterval = ONE_HUNDRED_MILLISECONDS;
     private ConditionFactory calmlyAwait = Awaitility.with()
         .pollInterval(slowPacedPollInterval)
@@ -130,7 +125,7 @@ public class EventDeadLettersIntegrationTest {
         .pollDelay(slowPacedPollInterval)
         .await();
     private ConditionFactory awaitAtMostTenSeconds = calmlyAwait.atMost(10, TimeUnit.SECONDS);
-    private RetryEventsListener retryEventsListener = new RetryEventsListener();
+    private RetryEventsListener retryEventsListener;
 
     @ClassRule
     public static DockerCassandraRule cassandra = new DockerCassandraRule();
@@ -143,7 +138,7 @@ public class EventDeadLettersIntegrationTest {
 
     @Before
     public void setUp() throws Exception {
-        retryEventsListener.clear();
+        retryEventsListener = new RetryEventsListener();
         guiceJamesServer = cassandraJmapTestRule.jmapServer(cassandra.getModule())
             .overrideWith(new WebAdminConfigurationModule())
             .overrideWith(binder -> Multibinder.newSetBinder(binder, MailboxListener.GroupMailboxListener.class).addBinding().toInstance(retryEventsListener));
@@ -165,15 +160,15 @@ public class EventDeadLettersIntegrationTest {
         guiceJamesServer.stop();
     }
 
-    private void generateInitialEvent() {
-        mailboxProbe.createMailbox(MailboxPath.forUser(BOB, DefaultMailboxes.INBOX));
+    private MailboxId generateInitialEvent() {
+        return mailboxProbe.createMailbox(BOB_INBOX_PATH);
     }
 
     private void generateSecondEvent() {
         mailboxProbe.createMailbox(MailboxPath.forUser(BOB, DefaultMailboxes.OUTBOX));
     }
 
-    private String retrieveFirstFailedEventId() {
+    private String retrieveFirstFailedInsertionId() {
         List<String> response = with()
             .get(EventDeadLettersRoutes.BASE_PATH + "/groups/" + GROUP_ID)
             .jsonPath()
@@ -224,14 +219,20 @@ public class EventDeadLettersIntegrationTest {
     @Test
     public void failedEventShouldBeStoredInDeadLetter() {
         retryEventsListener.setRetriesBeforeSuccess(4);
-        generateInitialEvent();
+        MailboxId mailboxId = generateInitialEvent();
 
-        String failedEventId = retrieveFirstFailedEventId();
+        String failedInsertionId = retrieveFirstFailedInsertionId();
 
         when()
-            .get(EventDeadLettersRoutes.BASE_PATH + "/groups/" + GROUP_ID + "/" + failedEventId)
+            .get(EventDeadLettersRoutes.BASE_PATH + "/groups/" + GROUP_ID + "/" + failedInsertionId)
         .then()
-            .statusCode(HttpStatus.OK_200);
+            .statusCode(HttpStatus.OK_200)
+            .contentType(ContentType.JSON)
+            .body("MailboxAdded.mailboxId", is(mailboxId.serialize()))
+            .body("MailboxAdded.user", is(BOB))
+            .body("MailboxAdded.mailboxPath.namespace", is(BOB_INBOX_PATH.getNamespace()))
+            .body("MailboxAdded.mailboxPath.user", is(BOB_INBOX_PATH.getUser()))
+            .body("MailboxAdded.mailboxPath.name", is(BOB_INBOX_PATH.getName()));
     }
 
     @Test
@@ -253,13 +254,13 @@ public class EventDeadLettersIntegrationTest {
         retryEventsListener.setRetriesBeforeSuccess(4);
         generateInitialEvent();
 
-        String failedEventId = retrieveFirstFailedEventId();
+        String failedInsertionId = retrieveFirstFailedInsertionId();
 
         with()
-            .delete(EventDeadLettersRoutes.BASE_PATH + "/groups/" + GROUP_ID + "/" + failedEventId);
+            .delete(EventDeadLettersRoutes.BASE_PATH + "/groups/" + GROUP_ID + "/" + failedInsertionId);
 
         when()
-            .get(EventDeadLettersRoutes.BASE_PATH + "/groups/" + GROUP_ID + "/" + failedEventId)
+            .get(EventDeadLettersRoutes.BASE_PATH + "/groups/" + GROUP_ID + "/" + failedInsertionId)
         .then()
             .statusCode(HttpStatus.NOT_FOUND_404);
     }
@@ -269,11 +270,11 @@ public class EventDeadLettersIntegrationTest {
         retryEventsListener.setRetriesBeforeSuccess(4);
         generateInitialEvent();
 
-        String failedEventId = retrieveFirstFailedEventId();
+        String failedInsertionId = retrieveFirstFailedInsertionId();
 
         String taskId = with()
             .queryParam("action", EVENTS_ACTION)
-        .post(EventDeadLettersRoutes.BASE_PATH + "/groups/" + GROUP_ID + "/" + failedEventId)
+        .post(EventDeadLettersRoutes.BASE_PATH + "/groups/" + GROUP_ID + "/" + failedInsertionId)
             .jsonPath()
             .get("taskId");
 
@@ -286,7 +287,7 @@ public class EventDeadLettersIntegrationTest {
             .body("additionalInformation.successfulRedeliveriesCount", is(1))
             .body("additionalInformation.failedRedeliveriesCount", is(0))
             .body("additionalInformation.group", is(GROUP_ID))
-            .body("additionalInformation.eventId", is(failedEventId));
+            .body("additionalInformation.insertionId", is(failedInsertionId));
     }
 
     @Test
@@ -294,11 +295,11 @@ public class EventDeadLettersIntegrationTest {
         retryEventsListener.setRetriesBeforeSuccess(4);
         generateInitialEvent();
 
-        String failedEventId = retrieveFirstFailedEventId();
+        String failedInsertionId = retrieveFirstFailedInsertionId();
 
         String taskId = with()
             .queryParam("action", EVENTS_ACTION)
-        .post(EventDeadLettersRoutes.BASE_PATH + "/groups/" + GROUP_ID + "/" + failedEventId)
+        .post(EventDeadLettersRoutes.BASE_PATH + "/groups/" + GROUP_ID + "/" + failedInsertionId)
             .jsonPath()
             .get("taskId");
 
@@ -307,7 +308,7 @@ public class EventDeadLettersIntegrationTest {
             .get(taskId + "/await");
 
         when()
-            .get("/events/deadLetter/groups/" + GROUP_ID + "/" + failedEventId)
+            .get("/events/deadLetter/groups/" + GROUP_ID + "/" + failedInsertionId)
         .then()
             .statusCode(HttpStatus.NOT_FOUND_404);
     }
@@ -317,11 +318,11 @@ public class EventDeadLettersIntegrationTest {
         retryEventsListener.setRetriesBeforeSuccess(5);
         generateInitialEvent();
 
-        String failedEventId = retrieveFirstFailedEventId();
+        String failedInsertionId = retrieveFirstFailedInsertionId();
 
         String taskId = with()
             .queryParam("action", EVENTS_ACTION)
-        .post(EventDeadLettersRoutes.BASE_PATH + "/groups/" + GROUP_ID + "/" + failedEventId)
+        .post(EventDeadLettersRoutes.BASE_PATH + "/groups/" + GROUP_ID + "/" + failedInsertionId)
             .jsonPath()
             .get("taskId");
 
@@ -464,32 +465,26 @@ public class EventDeadLettersIntegrationTest {
     }
 
     @Test
-    @Ignore("JAMES-2666 not working yet, need to fix the redeliver task")
     public void failedEventShouldStillBeInDeadLettersAfterFailedRedelivery() {
         retryEventsListener.setRetriesBeforeSuccess(8);
         generateInitialEvent();
 
-        String failedEventId = retrieveFirstFailedEventId();
+        String failedInsertionId = retrieveFirstFailedInsertionId();
 
         String taskId = with()
             .queryParam("action", EVENTS_ACTION)
-        .post(EventDeadLettersRoutes.BASE_PATH + "/groups/" + GROUP_ID + "/" + failedEventId)
+        .post(EventDeadLettersRoutes.BASE_PATH + "/groups/" + GROUP_ID + "/" + failedInsertionId)
             .jsonPath()
             .get("taskId");
 
-        given()
+        with()
             .basePath(TasksRoutes.BASE)
-        .when()
-            .get(taskId + "/await")
-        .then()
-            .body("status", is("failed"))
-            .body("additionalInformation.successfulRedeliveriesCount", is(0))
-            .body("additionalInformation.failedRedeliveriesCount", is(1))
-            .body("additionalInformation.group", is(GROUP_ID))
-            .body("additionalInformation.eventId", is(failedEventId));
+            .get(taskId + "/await");
+
+        String newFailedInsertionId = retrieveFirstFailedInsertionId();
 
         when()
-            .get(EventDeadLettersRoutes.BASE_PATH + "/groups/" + GROUP_ID + "/" + failedEventId)
+            .get(EventDeadLettersRoutes.BASE_PATH + "/groups/" + GROUP_ID + "/" + newFailedInsertionId)
         .then()
             .statusCode(HttpStatus.OK_200);
     }


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