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 294f2bdeb7264fc4be5b6a59d10f16d2d7191752
Author: Benoit Tellier <btell...@linagora.com>
AuthorDate: Wed Dec 18 15:28:29 2019 +0700

    JAMES-2813 MailQueue tasks should use JsonSerializationVerifier
---
 .../protocols/webadmin/webadmin-mailqueue/pom.xml  |   6 +
 .../webadmin/service/ClearMailQueueTaskTest.java   |  45 ++-----
 .../service/DeleteMailsFromMailQueueTaskTest.java  | 129 ++++++---------------
 3 files changed, 53 insertions(+), 127 deletions(-)

diff --git a/server/protocols/webadmin/webadmin-mailqueue/pom.xml 
b/server/protocols/webadmin/webadmin-mailqueue/pom.xml
index f3beb1a..5ec7c1c 100644
--- a/server/protocols/webadmin/webadmin-mailqueue/pom.xml
+++ b/server/protocols/webadmin/webadmin-mailqueue/pom.xml
@@ -40,6 +40,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-queue-api</artifactId>
         </dependency>
         <dependency>
diff --git 
a/server/protocols/webadmin/webadmin-mailqueue/src/test/java/org/apache/james/webadmin/service/ClearMailQueueTaskTest.java
 
b/server/protocols/webadmin/webadmin-mailqueue/src/test/java/org/apache/james/webadmin/service/ClearMailQueueTaskTest.java
index 54d2c95..6d04e01 100644
--- 
a/server/protocols/webadmin/webadmin-mailqueue/src/test/java/org/apache/james/webadmin/service/ClearMailQueueTaskTest.java
+++ 
b/server/protocols/webadmin/webadmin-mailqueue/src/test/java/org/apache/james/webadmin/service/ClearMailQueueTaskTest.java
@@ -17,35 +17,26 @@
 
 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.assertj.core.api.Assertions.assertThatThrownBy;
 import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
-import java.io.IOException;
 import java.time.Instant;
 import java.util.Optional;
 
+import org.apache.james.JsonSerializationVerifier;
 import org.apache.james.queue.api.MailQueueFactory;
 import org.apache.james.queue.api.ManageableMailQueue;
-import 
org.apache.james.server.task.json.JsonTaskAdditionalInformationSerializer;
 import org.apache.james.server.task.json.JsonTaskSerializer;
 import org.junit.jupiter.api.Test;
 
-import com.fasterxml.jackson.core.JsonProcessingException;
-import net.javacrumbs.jsonunit.assertj.JsonAssertions;
-
 class ClearMailQueueTaskTest {
-
     private static final Instant TIMESTAMP = 
Instant.parse("2018-11-13T12:00:55Z");
     private static final String SERIALIZED = "{\"type\": \"clear-mail-queue\", 
\"queue\": \"anyQueue\"}";
     private static final String QUEUE_NAME = "anyQueue";
     private static final long INITIAL_COUNT = 0L;
     private static final long REMAINING_COUNT = 10L;
-    private JsonTaskAdditionalInformationSerializer 
jsonAdditionalInformationSerializer = 
JsonTaskAdditionalInformationSerializer.of(
-        ClearMailQueueTaskAdditionalInformationDTO.SERIALIZATION_MODULE);
     private static final String SERIALIZED_TASK_ADDITIONAL_INFORMATION = 
"{\"type\": \"clear-mail-queue\", 
\"mailQueueName\":\"anyQueue\",\"initialCount\":0,\"remainingCount\":10, 
\"timestamp\":\"2018-11-13T12:00:55Z\"}";
 
     @Test
@@ -54,28 +45,18 @@ class ClearMailQueueTaskTest {
         ManageableMailQueue mockedQueue = mock(ManageableMailQueue.class);
         when(mockedQueue.getName()).thenReturn(QUEUE_NAME);
         when(mailQueueFactory.getQueue(anyString())).thenAnswer(arg -> 
Optional.of(mockedQueue));
-        JsonTaskSerializer testee = 
JsonTaskSerializer.of(ClearMailQueueTaskDTO.module(mailQueueFactory));
 
         ManageableMailQueue queue = 
mailQueueFactory.getQueue(QUEUE_NAME).get();
         ClearMailQueueTask task = new ClearMailQueueTask(queue);
-        
JsonAssertions.assertThatJson(testee.serialize(task)).isEqualTo(SERIALIZED);
-    }
 
-    @Test
-    void taskShouldBeDeserializable() throws Exception {
-        MailQueueFactory<ManageableMailQueue> mailQueueFactory = 
mock(MailQueueFactory.class);
-        ManageableMailQueue mockedQueue = mock(ManageableMailQueue.class);
-        when(mockedQueue.getName()).thenReturn(QUEUE_NAME);
-        when(mailQueueFactory.getQueue(anyString())).thenAnswer(arg -> 
Optional.of(mockedQueue));
-        JsonTaskSerializer testee = 
JsonTaskSerializer.of(ClearMailQueueTaskDTO.module(mailQueueFactory));
-
-        ManageableMailQueue queue = 
mailQueueFactory.getQueue(QUEUE_NAME).get();
-        ClearMailQueueTask task = new ClearMailQueueTask(queue);
-        
assertThat(testee.deserialize(SERIALIZED)).isEqualToIgnoringGivenFields(task, 
"additionalInformation");
+        
JsonSerializationVerifier.dtoModule(ClearMailQueueTaskDTO.module(mailQueueFactory))
+            .bean(task)
+            .json(SERIALIZED)
+            .verify();
     }
 
     @Test
-    void taskShouldThrowWhenDeserializeAnUnknownQueue() throws Exception {
+    void taskShouldThrowWhenDeserializeAnUnknownQueue() {
         MailQueueFactory<ManageableMailQueue> mailQueueFactory = 
mock(MailQueueFactory.class);
         
when(mailQueueFactory.getQueue(anyString())).thenReturn(Optional.empty());
         JsonTaskSerializer testee = 
JsonTaskSerializer.of(ClearMailQueueTaskDTO.module(mailQueueFactory));
@@ -86,15 +67,11 @@ class ClearMailQueueTaskTest {
     }
 
     @Test
-    void additionalInformationShouldBeSerializable() throws 
JsonProcessingException {
-        ClearMailQueueTask.AdditionalInformation details = new 
ClearMailQueueTask.AdditionalInformation(QUEUE_NAME, INITIAL_COUNT, 
REMAINING_COUNT, TIMESTAMP);
-        
assertThatJson(jsonAdditionalInformationSerializer.serialize(details)).isEqualTo(SERIALIZED_TASK_ADDITIONAL_INFORMATION);
-    }
-
-    @Test
-    void additionalInformationShouldBeDeserializable() throws IOException {
+    void additionalInformationShouldBeSerializable() throws Exception {
         ClearMailQueueTask.AdditionalInformation details = new 
ClearMailQueueTask.AdditionalInformation(QUEUE_NAME, INITIAL_COUNT, 
REMAINING_COUNT, TIMESTAMP);
-        
assertThat(jsonAdditionalInformationSerializer.deserialize(SERIALIZED_TASK_ADDITIONAL_INFORMATION))
-            .isEqualToComparingFieldByField(details);
+        
JsonSerializationVerifier.dtoModule(ClearMailQueueTaskAdditionalInformationDTO.SERIALIZATION_MODULE)
+            .bean(details)
+            .json(SERIALIZED_TASK_ADDITIONAL_INFORMATION)
+            .verify();
     }
 }
diff --git 
a/server/protocols/webadmin/webadmin-mailqueue/src/test/java/org/apache/james/webadmin/service/DeleteMailsFromMailQueueTaskTest.java
 
b/server/protocols/webadmin/webadmin-mailqueue/src/test/java/org/apache/james/webadmin/service/DeleteMailsFromMailQueueTaskTest.java
index edd4c54..c6797c2 100644
--- 
a/server/protocols/webadmin/webadmin-mailqueue/src/test/java/org/apache/james/webadmin/service/DeleteMailsFromMailQueueTaskTest.java
+++ 
b/server/protocols/webadmin/webadmin-mailqueue/src/test/java/org/apache/james/webadmin/service/DeleteMailsFromMailQueueTaskTest.java
@@ -17,20 +17,17 @@
 
 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.assertj.core.api.Assertions.assertThatThrownBy;
 import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
-import java.io.IOException;
 import java.time.Instant;
 import java.util.Optional;
-import java.util.stream.Stream;
 
 import javax.mail.internet.AddressException;
 
+import org.apache.james.JsonSerializationVerifier;
 import org.apache.james.core.MailAddress;
 import org.apache.james.queue.api.MailQueueFactory;
 import org.apache.james.queue.api.ManageableMailQueue;
@@ -38,67 +35,38 @@ import 
org.apache.james.server.task.json.JsonTaskAdditionalInformationSerializer
 import org.apache.james.server.task.json.JsonTaskSerializer;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.Arguments;
-import org.junit.jupiter.params.provider.MethodSource;
-
-import com.fasterxml.jackson.core.JsonProcessingException;
 
 class DeleteMailsFromMailQueueTaskTest {
-
     private static final Instant TIMESTAMP = 
Instant.parse("2018-11-13T12:00:55Z");
+
     private MailQueueFactory<ManageableMailQueue> mailQueueFactory;
     private ManageableMailQueue mockedQueue;
     private final static String queueName = "anyQueue";
-    private JsonTaskAdditionalInformationSerializer 
jsonAdditionalInformationSerializer = 
JsonTaskAdditionalInformationSerializer.of(DeleteMailsFromMailQueueTaskAdditionalInformationDTO.MODULE);
 
     @BeforeEach
-    private void setUp() {
+    void setUp() {
         mailQueueFactory = mock(MailQueueFactory.class);
         mockedQueue = mock(ManageableMailQueue.class);
         when(mockedQueue.getName()).thenReturn(queueName);
         when(mailQueueFactory.getQueue(anyString())).thenAnswer(arg -> 
Optional.of(mockedQueue));
     }
 
-    @ParameterizedTest
-    @MethodSource
-    void taskShouldBeSerializable(Optional<MailAddress> sender, 
Optional<String> name, Optional<MailAddress> recipient, String serializedJson) 
throws Exception {
-
-        JsonTaskSerializer testee = 
JsonTaskSerializer.of(DeleteMailsFromMailQueueTaskDTO.module(mailQueueFactory));
-
-        ManageableMailQueue queue = mailQueueFactory.getQueue(queueName).get();
-        DeleteMailsFromMailQueueTask task = new 
DeleteMailsFromMailQueueTask(queue, sender, name, recipient);
-        assertThatJson(testee.serialize(task)).isEqualTo(serializedJson);
-    }
-
-    private static Stream<Arguments> taskShouldBeSerializable() throws 
Exception {
-        return validTasks();
-    }
-
-    @ParameterizedTest
-    @MethodSource
-    void taskShouldBeDeserializable(Optional<MailAddress> sender, 
Optional<String> name, Optional<MailAddress> recipient, String serializedJson) 
throws Exception {
-        JsonTaskSerializer testee = 
JsonTaskSerializer.of(DeleteMailsFromMailQueueTaskDTO.module(mailQueueFactory));
-
+    @Test
+    void taskShouldBeSerializable() throws Exception {
         ManageableMailQueue queue = mailQueueFactory.getQueue(queueName).get();
-        DeleteMailsFromMailQueueTask task = new 
DeleteMailsFromMailQueueTask(queue, sender, name, recipient);
-        
assertThat(testee.deserialize(serializedJson)).isEqualToIgnoringGivenFields(task,
 "additionalInformation");
-    }
-
-    private static Stream<Arguments> taskShouldBeDeserializable() throws 
Exception {
-        return validTasks();
-    }
-
-    private static Stream<Arguments> validTasks() throws Exception {
-        return Stream.of(
-            Arguments.of(Optional.of(new MailAddress("a@b.c")), 
Optional.empty(), Optional.empty(), "{\"type\": 
\"delete-mails-from-mail-queue\", \"queue\": \"anyQueue\", \"sender\": 
\"a@b.c\"}"),
-            Arguments.of(Optional.empty(), Optional.of("name"), 
Optional.empty(), "{\"type\": \"delete-mails-from-mail-queue\", \"queue\": 
\"anyQueue\", \"name\": \"name\"}"),
-            Arguments.of(Optional.empty(), Optional.empty(), Optional.of(new 
MailAddress("d@e.f")), "{\"type\": \"delete-mails-from-mail-queue\", \"queue\": 
\"anyQueue\", \"recipient\": \"d@e.f\"}")
-        );
+        DeleteMailsFromMailQueueTask taskSender = new 
DeleteMailsFromMailQueueTask(queue, Optional.of(new MailAddress("a@b.c")), 
Optional.empty(), Optional.empty());
+        DeleteMailsFromMailQueueTask taskName = new 
DeleteMailsFromMailQueueTask(queue, Optional.empty(), Optional.of("name"), 
Optional.empty());
+        DeleteMailsFromMailQueueTask taskRecipient = new 
DeleteMailsFromMailQueueTask(queue, Optional.empty(), Optional.empty(),  
Optional.of(new MailAddress("d@e.f")));
+
+        
JsonSerializationVerifier.dtoModule(DeleteMailsFromMailQueueTaskDTO.module(mailQueueFactory))
+            .testCase(taskSender, "{\"type\": 
\"delete-mails-from-mail-queue\", \"queue\": \"anyQueue\", \"sender\": 
\"a@b.c\"}")
+            .testCase(taskName, "{\"type\": \"delete-mails-from-mail-queue\", 
\"queue\": \"anyQueue\", \"name\": \"name\"}")
+            .testCase(taskRecipient, "{\"type\": 
\"delete-mails-from-mail-queue\", \"queue\": \"anyQueue\", \"recipient\": 
\"d@e.f\"}")
+            .verify();
     }
 
     @Test
-    void taskShouldThrowWhenDeserializeAnUnknownQueue() throws Exception {
+    void taskShouldThrowWhenDeserializeAnUnknownQueue() {
         MailQueueFactory<ManageableMailQueue> mailQueueFactory = 
mock(MailQueueFactory.class);
         
when(mailQueueFactory.getQueue(anyString())).thenReturn(Optional.empty());
         JsonTaskSerializer testee = 
JsonTaskSerializer.of(DeleteMailsFromMailQueueTaskDTO.module(mailQueueFactory));
@@ -109,7 +77,7 @@ class DeleteMailsFromMailQueueTaskTest {
     }
 
     @Test
-    void taskShouldThrowWhenDeserializeAMalformedMailAddress() throws 
Exception {
+    void taskShouldThrowWhenDeserializeAMalformedMailAddress() {
         JsonTaskSerializer testee = 
JsonTaskSerializer.of(DeleteMailsFromMailQueueTaskDTO.module(mailQueueFactory));
 
         String serializedJson = "{\"type\": \"delete-mails-from-mail-queue\", 
\"queue\": \"" + queueName + "\", \"sender\": \"a.b.c\"}";
@@ -117,56 +85,31 @@ class DeleteMailsFromMailQueueTaskTest {
             .isInstanceOf(AddressException.class);
     }
 
-    private static Stream<Arguments> validAdditionalInformation() throws 
Exception {
-        return Stream.of(
-            Arguments.of(10L, 5L, Optional.of(new MailAddress("a@b.c")), 
Optional.empty(), Optional.empty(), "{\"type\": 
\"delete-mails-from-mail-queue\", \"queue\": \"anyQueue\", \"sender\": 
\"a@b.c\", \"initialCount\" : 10, \"remainingCount\":5, \"timestamp\": 
\"2018-11-13T12:00:55Z\"}"),
-            Arguments.of(1L, 0L, Optional.empty(), Optional.of("name"), 
Optional.empty(), "{\"type\": \"delete-mails-from-mail-queue\", \"queue\": 
\"anyQueue\", \"name\": \"name\", \"initialCount\" : 1, \"remainingCount\":0, 
\"timestamp\": \"2018-11-13T12:00:55Z\"}"),
-            Arguments.of(6L, 6L, Optional.empty(), Optional.empty(), 
Optional.of(new MailAddress("d@e.f")), "{\"type\": 
\"delete-mails-from-mail-queue\", \"queue\": \"anyQueue\", \"recipient\": 
\"d@e.f\", \"initialCount\" : 6, \"remainingCount\":6, \"timestamp\": 
\"2018-11-13T12:00:55Z\"}")
-        );
-    }
-
-    @ParameterizedTest
-    @MethodSource
-    void additionalInformationShouldBeSerializable(long initialCount,
-                                                   long remainingCount,
-                                                   Optional<MailAddress> 
sender,
-                                                   Optional<String> name,
-                                                   Optional<MailAddress> 
recipient,
-                                                   String 
serializedAdditionalInformationJson) throws JsonProcessingException {
-
+    @Test
+    void additionalInformationShouldBeSerializable() throws Exception {
         ManageableMailQueue queue = mailQueueFactory.getQueue(queueName).get();
-        DeleteMailsFromMailQueueTask.AdditionalInformation details = new 
DeleteMailsFromMailQueueTask.AdditionalInformation(queue.getName(), 
initialCount, remainingCount, sender, name, recipient, TIMESTAMP);
-
-        
assertThatJson(jsonAdditionalInformationSerializer.serialize(details)).isEqualTo(serializedAdditionalInformationJson);
-    }
-
-    private static Stream<Arguments> 
additionalInformationShouldBeSerializable() throws Exception {
-        return validAdditionalInformation();
-    }
-
-    @ParameterizedTest
-    @MethodSource
-    void additionalInformationShouldBeDeserializable(long initialCount,
-                                                     long remainingCount,
-                                                     Optional<MailAddress> 
sender,
-                                                     Optional<String> name,
-                                                     Optional<MailAddress> 
recipient,
-                                                     String 
serializedAdditionalInformationJson) throws IOException {
-        DeleteMailsFromMailQueueTask.AdditionalInformation details = new 
DeleteMailsFromMailQueueTask.AdditionalInformation(queueName, initialCount, 
remainingCount, sender, name, recipient, TIMESTAMP);
-
-        
assertThat(jsonAdditionalInformationSerializer.deserialize(serializedAdditionalInformationJson))
-            .isEqualToComparingFieldByField(details);
-    }
-
-    private static Stream<Arguments> 
additionalInformationShouldBeDeserializable() throws Exception {
-        return validAdditionalInformation();
+        DeleteMailsFromMailQueueTask.AdditionalInformation detailsSender = new 
DeleteMailsFromMailQueueTask.AdditionalInformation(queue.getName(), 10L, 5L,
+            Optional.of(new MailAddress("a@b.c")), Optional.empty(), 
Optional.empty(), TIMESTAMP);
+        DeleteMailsFromMailQueueTask.AdditionalInformation detailsName = new 
DeleteMailsFromMailQueueTask.AdditionalInformation(queue.getName(), 1L, 0L,
+            Optional.empty(), Optional.of("name"), Optional.empty(), 
TIMESTAMP);
+        DeleteMailsFromMailQueueTask.AdditionalInformation detailsRecipient = 
new DeleteMailsFromMailQueueTask.AdditionalInformation(queue.getName(), 6L, 6L,
+            Optional.empty(), Optional.empty(), Optional.of(new 
MailAddress("d@e.f")), TIMESTAMP);
+
+        
JsonSerializationVerifier.dtoModule(DeleteMailsFromMailQueueTaskAdditionalInformationDTO.MODULE)
+            .testCase(detailsSender,
+                "{\"type\": \"delete-mails-from-mail-queue\", \"queue\": 
\"anyQueue\", \"sender\": \"a@b.c\", \"initialCount\" : 10, 
\"remainingCount\":5, \"timestamp\": \"2018-11-13T12:00:55Z\"}")
+            .testCase(detailsName,
+                "{\"type\": \"delete-mails-from-mail-queue\", \"queue\": 
\"anyQueue\", \"name\": \"name\", \"initialCount\" : 1, \"remainingCount\":0, 
\"timestamp\": \"2018-11-13T12:00:55Z\"}")
+            .testCase(detailsRecipient,
+                "{\"type\": \"delete-mails-from-mail-queue\", \"queue\": 
\"anyQueue\", \"recipient\": \"d@e.f\", \"initialCount\" : 6, 
\"remainingCount\":6, \"timestamp\": \"2018-11-13T12:00:55Z\"}")
+            .verify();
     }
 
     @Test
-    void 
additionalInformationShouldThrowWhenDeserializeAMalformedMailAddress() throws 
Exception {
-
+    void 
additionalInformationShouldThrowWhenDeserializeAMalformedMailAddress() {
         String serializedJson = "{\"type\": \"delete-mails-from-mail-queue\", 
\"queue\": \"anyQueue\", \"sender\": \"a.b.c\", \"initialCount\" : 10, 
\"remainingCount\":5}";
-        assertThatThrownBy(() -> 
jsonAdditionalInformationSerializer.deserialize(serializedJson))
+        assertThatThrownBy(() -> 
JsonTaskAdditionalInformationSerializer.of(DeleteMailsFromMailQueueTaskAdditionalInformationDTO.MODULE)
+                .deserialize(serializedJson))
             .isInstanceOf(AddressException.class);
     }
 


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

Reply via email to