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]
