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