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 24541630b87c39e554ebd5004e3f2e4cf15df434
Author: Benoit Tellier <[email protected]>
AuthorDate: Tue Feb 19 14:34:26 2019 +0700

    JAMES-2661 WebAdmin for EventDeadLetter: Event deletion
---
 .../webadmin/routes/EventDeadLettersRoutes.java    | 10 ++++
 .../routes/EventDeadLettersRoutesTest.java         | 59 ++++++++++++++++++++++
 2 files changed, 69 insertions(+)

diff --git 
a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/EventDeadLettersRoutes.java
 
b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/EventDeadLettersRoutes.java
index 2de2613..a694279 100644
--- 
a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/EventDeadLettersRoutes.java
+++ 
b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/EventDeadLettersRoutes.java
@@ -64,6 +64,7 @@ public class EventDeadLettersRoutes implements Routes {
         service.get(BASE_PATH + "/groups", this::listGroups, jsonTransformer);
         service.get(BASE_PATH + "/groups/" + GROUP_PARAM + "/events", 
this::listFailedEvents, jsonTransformer);
         service.get(BASE_PATH + "/groups/" + GROUP_PARAM + "/events/" + 
EVENT_ID_PARAM, this::getEventDetails);
+        service.delete(BASE_PATH + "/groups/" + GROUP_PARAM + "/events/" + 
EVENT_ID_PARAM, this::deleteEvent);
     }
 
     private Iterable<String> listGroups(Request request, Response response) {
@@ -91,6 +92,15 @@ public class EventDeadLettersRoutes implements Routes {
             .block();
     }
 
+    private Response deleteEvent(Request request, Response response) {
+        Group group = parseGroup(request);
+        Event.EventId eventId = parseEventId(request);
+
+        deadLetters.remove(group, eventId).block();
+        response.status(HttpStatus.NO_CONTENT_204);
+        return response;
+    }
+
     private Group parseGroup(Request request) {
         String groupAsString = request.params(GROUP_PARAM);
         try {
diff --git 
a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/EventDeadLettersRoutesTest.java
 
b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/EventDeadLettersRoutesTest.java
index e2a89e1..3febba0 100644
--- 
a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/EventDeadLettersRoutesTest.java
+++ 
b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/EventDeadLettersRoutesTest.java
@@ -20,6 +20,7 @@
 package org.apache.james.webadmin.routes;
 
 import static io.restassured.RestAssured.when;
+import static io.restassured.RestAssured.with;
 import static net.javacrumbs.jsonunit.assertj.JsonAssertions.assertThatJson;
 import static org.apache.james.webadmin.WebAdminServer.NO_CONFIGURATION;
 import static org.hamcrest.Matchers.contains;
@@ -275,4 +276,62 @@ class EventDeadLettersRoutesTest {
                 .body("message", is("Can not deserialize the supplied group: 
invalid"));
         }
     }
+
+    @Nested
+    class Delete {
+        @Test
+        void deleteShouldReturnOk() {
+            deadLetters.store(new EventBusTestFixture.GroupA(), 
EVENT_1).block();
+
+            when()
+                .delete("/events/deadLetter/groups/" + SERIALIZED_GROUP_A + 
"/events/" + UUID_1)
+            .then()
+                .statusCode(HttpStatus.NO_CONTENT_204);
+        }
+
+        @Test
+        void deleteShouldReturnOkWhenEventNotFound() {
+            when()
+                .delete("/events/deadLetter/groups/" + SERIALIZED_GROUP_A + 
"/events/" + UUID_1)
+            .then()
+                .statusCode(HttpStatus.NO_CONTENT_204);
+        }
+
+        @Test
+        void deleteShouldFailWhenInvalidGroup() {
+            when()
+                .delete("/events/deadLetter/groups/invalid/events/" + UUID_1)
+            .then()
+                .statusCode(HttpStatus.BAD_REQUEST_400)
+                .contentType(ContentType.JSON)
+                .body("statusCode", is(400))
+                .body("type", 
is(ErrorResponder.ErrorType.INVALID_ARGUMENT.getType()))
+                .body("message", is("Can not deserialize the supplied group: 
invalid"));
+        }
+
+        @Test
+        void deleteShouldFailWhenInvalidEventId() {
+            when()
+                .delete("/events/deadLetter/groups/" + SERIALIZED_GROUP_A + 
"/events/invalid")
+            .then()
+                .statusCode(HttpStatus.BAD_REQUEST_400)
+                .contentType(ContentType.JSON)
+                .body("statusCode", is(400))
+                .body("type", 
is(ErrorResponder.ErrorType.INVALID_ARGUMENT.getType()))
+                .body("message", is("Can not deserialize the supplied eventId: 
invalid"));
+        }
+
+        @Test
+        void deleteShouldRemoveEvent() {
+            deadLetters.store(new EventBusTestFixture.GroupA(), 
EVENT_1).block();
+
+            with()
+                .delete("/events/deadLetter/groups/" + SERIALIZED_GROUP_A + 
"/events/" + UUID_1);
+
+            when()
+                .get("/events/deadLetter/groups/" + SERIALIZED_GROUP_A + 
"/events/" + UUID_1)
+            .then()
+                .statusCode(HttpStatus.NOT_FOUND_404);
+        }
+    }
 }
\ No newline at end of file


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to