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 rc...@apache.org on 2019/12/20 07:30:55 UTC

[james-project] 11/15: JAMES-2813 event-dead-letter tasks should use JsonSerializationVerifier

This is an automated email from the ASF dual-hosted git repository.

rcordier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 6e748dd1ea754dbdae2a892d82164669651f0720
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Wed Dec 18 15:26:12 2019 +0700

    JAMES-2813 event-dead-letter tasks should use JsonSerializationVerifier
---
 server/protocols/webadmin/webadmin-mailbox/pom.xml |   6 ++
 .../service/EventDeadLettersRedeliverAllTask.java  |   6 +-
 .../EventDeadLettersRedeliverGroupTask.java        |   6 +-
 .../service/EventDeadLettersRedeliverOneTask.java  |   6 +-
 .../service/EventDeadLettersRedeliverTaskTest.java | 103 ++++++++-------------
 5 files changed, 47 insertions(+), 80 deletions(-)

diff --git a/server/protocols/webadmin/webadmin-mailbox/pom.xml b/server/protocols/webadmin/webadmin-mailbox/pom.xml
index a44a25c..278b761 100644
--- a/server/protocols/webadmin/webadmin-mailbox/pom.xml
+++ b/server/protocols/webadmin/webadmin-mailbox/pom.xml
@@ -101,6 +101,12 @@
         </dependency>
         <dependency>
             <groupId>${james.groupId}</groupId>
+            <artifactId>james-json</artifactId>
+            <scope>test</scope>
+            <type>test-jar</type>
+        </dependency>
+        <dependency>
+            <groupId>${james.groupId}</groupId>
             <artifactId>james-server-data-api</artifactId>
         </dependency>
         <dependency>
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/EventDeadLettersRedeliverAllTask.java b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/EventDeadLettersRedeliverAllTask.java
index cd38108..3b89e38 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/EventDeadLettersRedeliverAllTask.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/EventDeadLettersRedeliverAllTask.java
@@ -75,11 +75,7 @@ public class EventDeadLettersRedeliverAllTask implements Task {
         return Optional.of(createAdditionalInformation());
     }
 
-    public EventRetriever getEventRetriever() {
-        return eventRetriever;
-    }
-
-    EventDeadLettersRedeliveryTaskAdditionalInformation createAdditionalInformation() {
+    private EventDeadLettersRedeliveryTaskAdditionalInformation createAdditionalInformation() {
         return new EventDeadLettersRedeliveryTaskAdditionalInformationForAll(
             successfulRedeliveriesCount.get(),
             failedRedeliveriesCount.get(),
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/EventDeadLettersRedeliverGroupTask.java b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/EventDeadLettersRedeliverGroupTask.java
index 134d9cf..de2e8b5 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/EventDeadLettersRedeliverGroupTask.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/EventDeadLettersRedeliverGroupTask.java
@@ -78,15 +78,11 @@ public class EventDeadLettersRedeliverGroupTask implements Task {
         return Optional.of(createAdditionalInformation());
     }
 
-    public EventRetriever getEventRetriever() {
-        return eventRetriever;
-    }
-
     public Group getGroup() {
         return group;
     }
 
-    EventDeadLettersRedeliveryTaskAdditionalInformation createAdditionalInformation() {
+    private EventDeadLettersRedeliveryTaskAdditionalInformation createAdditionalInformation() {
         return new EventDeadLettersRedeliveryTaskAdditionalInformationForGroup(
             successfulRedeliveriesCount.get(),
             failedRedeliveriesCount.get(),
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/EventDeadLettersRedeliverOneTask.java b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/EventDeadLettersRedeliverOneTask.java
index 5b3407e..06a4b6d 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/EventDeadLettersRedeliverOneTask.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/EventDeadLettersRedeliverOneTask.java
@@ -80,10 +80,6 @@ public class EventDeadLettersRedeliverOneTask implements Task {
         return Optional.of(createAdditionalInformation());
     }
 
-    public EventRetriever getEventRetriever() {
-        return eventRetriever;
-    }
-
     public Group getGroup() {
         return group;
     }
@@ -92,7 +88,7 @@ public class EventDeadLettersRedeliverOneTask implements Task {
         return insertionId;
     }
 
-    EventDeadLettersRedeliveryTaskAdditionalInformation createAdditionalInformation() {
+    private EventDeadLettersRedeliveryTaskAdditionalInformation createAdditionalInformation() {
         return new EventDeadLettersRedeliveryTaskAdditionalInformationDTO.EventDeadLettersRedeliveryTaskAdditionalInformationForOne(
             successfulRedeliveriesCount.get(),
             failedRedeliveriesCount.get(),
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/service/EventDeadLettersRedeliverTaskTest.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/service/EventDeadLettersRedeliverTaskTest.java
index 0c24d8a..7e9217e 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/service/EventDeadLettersRedeliverTaskTest.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/service/EventDeadLettersRedeliverTaskTest.java
@@ -19,32 +19,20 @@
 
 package org.apache.james.webadmin.service;
 
-import static net.javacrumbs.jsonunit.assertj.JsonAssertions.assertThatJson;
-import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.Mockito.mock;
 
-import java.io.IOException;
 import java.time.Instant;
 import java.util.Optional;
-import java.util.stream.Stream;
 
+import org.apache.james.JsonSerializationVerifier;
 import org.apache.james.mailbox.events.EventDeadLetters;
 import org.apache.james.mailbox.events.GenericGroup;
 import org.apache.james.mailbox.events.Group;
-import org.apache.james.server.task.json.JsonTaskAdditionalInformationSerializer;
-import org.apache.james.server.task.json.JsonTaskSerializer;
-import org.apache.james.task.Task;
 import org.apache.james.webadmin.service.EventDeadLettersRedeliveryTaskAdditionalInformationDTO.EventDeadLettersRedeliveryTaskAdditionalInformationForAll;
 import org.apache.james.webadmin.service.EventDeadLettersRedeliveryTaskAdditionalInformationDTO.EventDeadLettersRedeliveryTaskAdditionalInformationForGroup;
 import org.apache.james.webadmin.service.EventDeadLettersRedeliveryTaskAdditionalInformationDTO.EventDeadLettersRedeliveryTaskAdditionalInformationForOne;
-
 import org.junit.jupiter.api.BeforeAll;
-
-import com.fasterxml.jackson.core.JsonProcessingException;
-import net.javacrumbs.jsonunit.assertj.JsonAssertions;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.Arguments;
-import org.junit.jupiter.params.provider.MethodSource;
+import org.junit.jupiter.api.Test;
 
 class EventDeadLettersRedeliverTaskTest {
     private static final Instant TIMESTAMP = Instant.parse("2018-11-13T12:00:55Z");
@@ -58,78 +46,63 @@ class EventDeadLettersRedeliverTaskTest {
     private static final EventDeadLettersRedeliverAllTask TASK_ALL = new EventDeadLettersRedeliverAllTask(SERVICE);
     private static final EventDeadLettersRedeliverGroupTask TASK_GROUP = new EventDeadLettersRedeliverGroupTask(SERVICE, new GenericGroup("abc"));
     private static final EventDeadLettersRedeliverOneTask TASK_ONE = new EventDeadLettersRedeliverOneTask(SERVICE, new GenericGroup("abc"), EventDeadLetters.InsertionId.of("fcbc3c92-e9a0-4ece-94ed-6e6b45045258"));
-    private static final JsonTaskSerializer TESTEE = JsonTaskSerializer.of(
-        EventDeadLettersRedeliverAllTaskDTO.module(SERVICE),
-        EventDeadLettersRedeliverGroupTaskDTO.module(SERVICE),
-        EventDeadLettersRedeliverOneTaskDTO.module(SERVICE));
-
-    private JsonTaskAdditionalInformationSerializer jsonAdditionalInformationSerializer = JsonTaskAdditionalInformationSerializer.of(
-        EventDeadLettersRedeliveryTaskAdditionalInformationForAll.MODULE,
-        EventDeadLettersRedeliveryTaskAdditionalInformationForGroup.MODULE,
-        EventDeadLettersRedeliveryTaskAdditionalInformationForOne.MODULE);
 
     private static final long SUCCESSFUL_REDELIVERY_COUNT = 10L;
     private static final long FAILED_REDELIVERY_COUNT = 4L;
     private static Optional<Group> SOME_GROUP;
 
     private static final Optional<EventDeadLetters.InsertionId> SOME_INSERTION_ID = Optional.of(EventDeadLetters.InsertionId.of("53db3dd9-80eb-476f-b25a-722ad364905a"));
-    private static final Optional<Group> NO_GROUP = Optional.empty();
-    private static final Optional<EventDeadLetters.InsertionId> NO_INSERTION_ID = Optional.empty();
 
     @BeforeAll
     static void setUp() throws Exception {
         SOME_GROUP = Optional.of(Group.deserialize("org.apache.james.mailbox.events.GenericGroup-foo"));
     }
 
-    static Stream<Arguments> tasks() {
-        return Stream.of(
-            Arguments.of(SERIALIZED_ALL, TASK_ALL),
-            Arguments.of(SERIALIZED_GROUP, TASK_GROUP),
-            Arguments.of(SERIALIZED_ONE, TASK_ONE)
-        );
+    @Test
+    void redeliverAllTaskShouldMatchJsonSerializationContract() throws Exception {
+        JsonSerializationVerifier.dtoModule(EventDeadLettersRedeliverAllTaskDTO.module(SERVICE))
+            .bean(TASK_ALL)
+            .json(SERIALIZED_ALL)
+            .verify();
     }
 
-    @ParameterizedTest
-    @MethodSource("tasks")
-    void taskShouldBeSerializable(String serializedTask, Task task) throws JsonProcessingException {
-        JsonAssertions.assertThatJson(TESTEE.serialize(task))
-            .isEqualTo(serializedTask);
+    @Test
+    void redeliverGroupTaskShouldMatchJsonSerializationContract() throws Exception {
+        JsonSerializationVerifier.dtoModule(EventDeadLettersRedeliverGroupTaskDTO.module(SERVICE))
+            .bean(TASK_GROUP)
+            .json(SERIALIZED_GROUP)
+            .verify();
     }
 
-    @ParameterizedTest
-    @MethodSource("tasks")
-    void taskShouldBeDeserializable(String serializedTask, Task task) throws IOException {
-        assertThat(TESTEE.deserialize(serializedTask))
-            .isEqualToComparingFieldByFieldRecursively(task);
+    @Test
+    void redeliverOneTaskShouldMatchJsonSerializationContract() throws Exception {
+        JsonSerializationVerifier.dtoModule(EventDeadLettersRedeliverOneTaskDTO.module(SERVICE))
+            .bean(TASK_ONE)
+            .json(SERIALIZED_ONE)
+            .verify();
     }
 
-    static Stream<Arguments> additionalInformation() {
-        return Stream.of(
-            Arguments.of(
-                new EventDeadLettersRedeliveryTaskAdditionalInformationForAll(SUCCESSFUL_REDELIVERY_COUNT, FAILED_REDELIVERY_COUNT, TIMESTAMP),
-                SERIALIZED_TASK_ADDITIONAL_INFORMATION_ALL,
-                "eventDeadLettersRedeliverAllTask"),
-            Arguments.of(
-                new EventDeadLettersRedeliveryTaskAdditionalInformationForGroup(SUCCESSFUL_REDELIVERY_COUNT, FAILED_REDELIVERY_COUNT, SOME_GROUP, TIMESTAMP),
-                SERIALIZED_TASK_ADDITIONAL_INFORMATION_GROUP,
-                "eventDeadLettersRedeliverGroupTask"),
-            Arguments.of(
-                new EventDeadLettersRedeliveryTaskAdditionalInformationForOne(SUCCESSFUL_REDELIVERY_COUNT, FAILED_REDELIVERY_COUNT, SOME_GROUP, SOME_INSERTION_ID, TIMESTAMP),
-                SERIALIZED_TASK_ADDITIONAL_INFORMATION_ONE,
-                "eventDeadLettersRedeliverOneTask")
-        );
+    @Test
+    void redeliverAllAdditionalInformationShouldMatchJsonSerializationContract() throws Exception {
+        JsonSerializationVerifier.dtoModule(EventDeadLettersRedeliveryTaskAdditionalInformationForAll.MODULE)
+            .bean(new EventDeadLettersRedeliveryTaskAdditionalInformationForAll(SUCCESSFUL_REDELIVERY_COUNT, FAILED_REDELIVERY_COUNT, TIMESTAMP))
+            .json(SERIALIZED_TASK_ADDITIONAL_INFORMATION_ALL)
+            .verify();
     }
 
-    @ParameterizedTest
-    @MethodSource("additionalInformation")
-    void additionalInformationShouldBeSerializable(EventDeadLettersRedeliveryTaskAdditionalInformation details, String serializedTaskAdditionalInformation) throws JsonProcessingException {
-        assertThatJson(jsonAdditionalInformationSerializer.serialize(details)).isEqualTo(serializedTaskAdditionalInformation);
+    @Test
+    void redeliverGroupAdditionalInformationShouldMatchJsonSerializationContract() throws Exception {
+        JsonSerializationVerifier.dtoModule(EventDeadLettersRedeliveryTaskAdditionalInformationForGroup.MODULE)
+            .bean(new EventDeadLettersRedeliveryTaskAdditionalInformationForGroup(SUCCESSFUL_REDELIVERY_COUNT, FAILED_REDELIVERY_COUNT, SOME_GROUP, TIMESTAMP))
+            .json(SERIALIZED_TASK_ADDITIONAL_INFORMATION_GROUP)
+            .verify();
     }
 
-    @ParameterizedTest
-    @MethodSource("additionalInformation")
-    void additionalInformationShouldBeDeserializable(EventDeadLettersRedeliveryTaskAdditionalInformation details, String serializedTaskAdditionalInformation, String type) throws IOException {
-        assertThat(jsonAdditionalInformationSerializer.deserialize(serializedTaskAdditionalInformation))
-            .isEqualToComparingFieldByField(details);
+    @Test
+    void redeliverOneAdditionalInformationShouldMatchJsonSerializationContract() throws Exception {
+        JsonSerializationVerifier.dtoModule(EventDeadLettersRedeliveryTaskAdditionalInformationForOne.MODULE)
+            .bean(new EventDeadLettersRedeliveryTaskAdditionalInformationForOne(SUCCESSFUL_REDELIVERY_COUNT, FAILED_REDELIVERY_COUNT, SOME_GROUP, SOME_INSERTION_ID, TIMESTAMP))
+            .json(SERIALIZED_TASK_ADDITIONAL_INFORMATION_ONE)
+            .verify();
     }
 }
\ No newline at end of file


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