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 ff173b3360298d246bad471a4594e28ac9a0e91b Author: Benoit Tellier <btell...@linagora.com> AuthorDate: Wed Dec 18 15:34:05 2019 +0700 JAMES-2813 MailRepositories tasks should use JsonSerializationVerifier --- .../webadmin/webadmin-mailrepository/pom.xml | 6 ++ .../service/ClearMailRepositoryTaskTest.java | 41 ++------ .../service/ReprocessingAllMailsTaskTest.java | 112 ++++----------------- .../service/ReprocessingOneMailTaskTest.java | 76 +++----------- 4 files changed, 54 insertions(+), 181 deletions(-) diff --git a/server/protocols/webadmin/webadmin-mailrepository/pom.xml b/server/protocols/webadmin/webadmin-mailrepository/pom.xml index 187e210..549c1ed 100644 --- a/server/protocols/webadmin/webadmin-mailrepository/pom.xml +++ b/server/protocols/webadmin/webadmin-mailrepository/pom.xml @@ -40,6 +40,12 @@ </dependency> <dependency> <groupId>${james.groupId}</groupId> + <artifactId>james-json</artifactId> + <type>test-jar</type> + <scope>test</scope> + </dependency> + <dependency> + <groupId>${james.groupId}</groupId> <artifactId>james-server-data-api</artifactId> </dependency> <dependency> diff --git a/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/ClearMailRepositoryTaskTest.java b/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/ClearMailRepositoryTaskTest.java index fdaf67f..06aa208 100644 --- a/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/ClearMailRepositoryTaskTest.java +++ b/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/ClearMailRepositoryTaskTest.java @@ -19,24 +19,19 @@ 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.Mockito.mock; -import java.io.IOException; import java.time.Instant; +import org.apache.james.JsonSerializationVerifier; import org.apache.james.mailrepository.api.MailRepository; import org.apache.james.mailrepository.api.MailRepositoryPath; import org.apache.james.mailrepository.api.MailRepositoryStore; -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 com.google.common.collect.ImmutableList; -import net.javacrumbs.jsonunit.assertj.JsonAssertions; class ClearMailRepositoryTaskTest { @@ -50,22 +45,13 @@ class ClearMailRepositoryTaskTest { private static final ClearMailRepositoryTask TASK = new ClearMailRepositoryTask(MAIL_REPOSITORIES, MAIL_REPOSITORY_PATH); private static final long INITIAL_COUNT = 0L; private static final long REMAINING_COUNT = 10L; - private JsonTaskAdditionalInformationSerializer jsonAdditionalInformationSerializer = JsonTaskAdditionalInformationSerializer.of( - ClearMailRepositoryTaskAdditionalInformationDTO.SERIALIZATION_MODULE); @Test - void taskShouldBeSerializable() throws JsonProcessingException { - JsonTaskSerializer testee = JsonTaskSerializer.of(ClearMailRepositoryTaskDTO.module(FACTORY)); - JsonAssertions.assertThatJson(testee.serialize(TASK)) - .isEqualTo(SERIALIZED); - } - - @Test - void taskShouldBeDeserializable() throws IOException { - JsonTaskSerializer testee = JsonTaskSerializer.of(ClearMailRepositoryTaskDTO.module(FACTORY)); - - assertThat(testee.deserialize(SERIALIZED)) - .isEqualToComparingFieldByFieldRecursively(TASK); + void taskShouldBeSerializable() throws Exception { + JsonSerializationVerifier.dtoModule(ClearMailRepositoryTaskDTO.module(FACTORY)) + .bean(TASK) + .json(SERIALIZED) + .verify(); } @Test @@ -77,15 +63,10 @@ class ClearMailRepositoryTaskTest { } @Test - void additionalInformationShouldBeSerializable() throws JsonProcessingException { - ClearMailRepositoryTask.AdditionalInformation details = new ClearMailRepositoryTask.AdditionalInformation(MAIL_REPOSITORY_PATH, INITIAL_COUNT, REMAINING_COUNT, TIMESTAMP); - assertThatJson(jsonAdditionalInformationSerializer.serialize(details)).isEqualTo(SERIALIZED_TASK_ADDITIONAL_INFORMATION); - } - - @Test - void additionalInformationShouldBeDeserializable() throws IOException { - ClearMailRepositoryTask.AdditionalInformation details = new ClearMailRepositoryTask.AdditionalInformation(MAIL_REPOSITORY_PATH, INITIAL_COUNT, REMAINING_COUNT, TIMESTAMP); - assertThat(jsonAdditionalInformationSerializer.deserialize(SERIALIZED_TASK_ADDITIONAL_INFORMATION)) - .isEqualToComparingFieldByField(details); + void additionalInformationShouldBeSerializable() throws Exception { + JsonSerializationVerifier.dtoModule(ClearMailRepositoryTaskAdditionalInformationDTO.SERIALIZATION_MODULE) + .bean(new ClearMailRepositoryTask.AdditionalInformation(MAIL_REPOSITORY_PATH, INITIAL_COUNT, REMAINING_COUNT, TIMESTAMP)) + .json(SERIALIZED_TASK_ADDITIONAL_INFORMATION) + .verify(); } } \ No newline at end of file diff --git a/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/ReprocessingAllMailsTaskTest.java b/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/ReprocessingAllMailsTaskTest.java index c419a1c..df0fe9e 100644 --- a/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/ReprocessingAllMailsTaskTest.java +++ b/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/ReprocessingAllMailsTaskTest.java @@ -19,36 +19,25 @@ 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.Mockito.mock; -import java.io.IOException; import java.time.Instant; import java.util.Optional; -import java.util.stream.Stream; -import org.apache.james.mailrepository.api.MailKey; +import org.apache.james.JsonSerializationVerifier; import org.apache.james.mailrepository.api.MailRepositoryPath; -import org.apache.james.server.task.json.JsonTaskAdditionalInformationSerializer; import org.apache.james.server.task.json.JsonTaskSerializer; +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 org.junit.jupiter.params.provider.ValueSource; -import com.fasterxml.jackson.core.JsonProcessingException; - class ReprocessingAllMailsTaskTest { - private static final Instant TIMESTAMP = Instant.parse("2018-11-13T12:00:55Z"); private static final ReprocessingService REPROCESSING_SERVICE = mock(ReprocessingService.class); - private JsonTaskAdditionalInformationSerializer jsonAdditionalInformationSerializer = JsonTaskAdditionalInformationSerializer.of(ReprocessingAllMailsTaskAdditionalInformationDTO.SERIALIZATION_MODULE); private static final long REPOSITORY_SIZE = 5L; private static final MailRepositoryPath REPOSITORY_PATH = MailRepositoryPath.from("a"); private static final String TARGET_QUEUE = "queue"; - private static final MailKey MAIL_KEY = new MailKey("myMail"); private static final Optional<String> SOME_TARGET_PROCESSOR = Optional.of("targetProcessor"); private static final long REMAINING_COUNT = 3L; private static final String SERIALIZED_TASK_WITH_TARGET_PROCESSOR = "{\"type\":\"reprocessing-all\",\"repositorySize\":5,\"repositoryPath\":\"a\",\"targetQueue\":\"queue\",\"targetProcessor\":\"targetProcessor\"}"; @@ -56,46 +45,15 @@ class ReprocessingAllMailsTaskTest { private static final String SERIALIZED_TASK_ADDITIONAL_INFORMATION_WITH_TARGET_PROCESSOR = "{\"type\":\"reprocessing-all\", \"repositoryPath\":\"a\",\"targetQueue\":\"queue\",\"targetProcessor\":\"targetProcessor\",\"initialCount\":5,\"remainingCount\":3, \"timestamp\":\"2018-11-13T12:00:55Z\"}"; private static final String SERIALIZED_TASK_ADDITIONAL_INFORMATION_WITHOUT_TARGET_PROCESSOR = "{\"type\":\"reprocessing-all\", \"repositoryPath\":\"a\",\"targetQueue\":\"queue\", \"initialCount\":5,\"remainingCount\":3, \"timestamp\":\"2018-11-13T12:00:55Z\"}"; - @ParameterizedTest - @MethodSource - void taskShouldBeSerializable(long repositorySize, - MailRepositoryPath repositoryPath, - String targetQueue, - Optional<String> targetProcessor, - String serialized) throws JsonProcessingException { - JsonTaskSerializer testee = JsonTaskSerializer.of(ReprocessingAllMailsTaskDTO.module(REPROCESSING_SERVICE)); - ReprocessingAllMailsTask task = new ReprocessingAllMailsTask(REPROCESSING_SERVICE, repositorySize, repositoryPath, targetQueue, targetProcessor); - assertThatJson(testee.serialize(task)) - .isEqualTo(serialized); - } + @Test + void taskShouldBeSerializable() throws Exception { + ReprocessingAllMailsTask taskWithTargetProcessor = new ReprocessingAllMailsTask(REPROCESSING_SERVICE, REPOSITORY_SIZE, REPOSITORY_PATH, TARGET_QUEUE, SOME_TARGET_PROCESSOR); + ReprocessingAllMailsTask taskWithoutTargetProcessor = new ReprocessingAllMailsTask(REPROCESSING_SERVICE, REPOSITORY_SIZE, REPOSITORY_PATH, TARGET_QUEUE, Optional.empty()); - private static Stream<Arguments> taskShouldBeSerializable() { - return allValidTasks(); - } - - @ParameterizedTest - @MethodSource - void taskShouldBeDeserializable(long repositorySize, - MailRepositoryPath repositoryPath, - String targetQueue, - Optional<String> targetProcessor, - String serialized) throws IOException { - JsonTaskSerializer testee = JsonTaskSerializer.of(ReprocessingAllMailsTaskDTO.module(REPROCESSING_SERVICE)); - ReprocessingAllMailsTask task = new ReprocessingAllMailsTask(REPROCESSING_SERVICE, repositorySize, repositoryPath, targetQueue, targetProcessor); - - assertThat(testee.deserialize(serialized)) - .isEqualToComparingFieldByFieldRecursively(task); - } - - private static Stream<Arguments> taskShouldBeDeserializable() { - return allValidTasks(); - } - - private static Stream<Arguments> allValidTasks() { - return Stream.of( - Arguments.of(REPOSITORY_SIZE, REPOSITORY_PATH, TARGET_QUEUE, SOME_TARGET_PROCESSOR, SERIALIZED_TASK_WITH_TARGET_PROCESSOR), - Arguments.of(REPOSITORY_SIZE, REPOSITORY_PATH, TARGET_QUEUE, Optional.empty(), SERIALIZED_TASK_WITHOUT_TARGET_PROCESSOR) - ); + JsonSerializationVerifier.dtoModule(ReprocessingAllMailsTaskDTO.module(REPROCESSING_SERVICE)) + .testCase(taskWithTargetProcessor, SERIALIZED_TASK_WITH_TARGET_PROCESSOR) + .testCase(taskWithoutTargetProcessor, SERIALIZED_TASK_WITHOUT_TARGET_PROCESSOR) + .verify(); } @ParameterizedTest @@ -107,44 +65,16 @@ class ReprocessingAllMailsTaskTest { .isInstanceOf(ReprocessingAllMailsTask.InvalidMailRepositoryPathDeserializationException.class); } - private static Stream<Arguments> allAdditionalInformation() { - return Stream.of( - Arguments.of(REPOSITORY_PATH, TARGET_QUEUE, SOME_TARGET_PROCESSOR, REPOSITORY_SIZE, REMAINING_COUNT, SERIALIZED_TASK_ADDITIONAL_INFORMATION_WITH_TARGET_PROCESSOR), - Arguments.of(REPOSITORY_PATH, TARGET_QUEUE, Optional.empty(), REPOSITORY_SIZE, REMAINING_COUNT, SERIALIZED_TASK_ADDITIONAL_INFORMATION_WITHOUT_TARGET_PROCESSOR) - ); - } - - - @ParameterizedTest - @MethodSource - void additionalInformationShouldBeSerializable(MailRepositoryPath repositoryPath, - String targetQueue, - Optional<String> targetProcessor, - long repositorySize, - long remainingCount, - String serialized) throws JsonProcessingException { - ReprocessingAllMailsTask.AdditionalInformation details = new ReprocessingAllMailsTask.AdditionalInformation(repositoryPath, targetQueue, targetProcessor, repositorySize, remainingCount, TIMESTAMP); - assertThatJson(jsonAdditionalInformationSerializer.serialize(details)).isEqualTo(serialized); - } - - private static Stream<Arguments> additionalInformationShouldBeSerializable() { - return allAdditionalInformation(); - } - - @ParameterizedTest - @MethodSource - void additionalInformationShouldBeDeserializable(MailRepositoryPath repositoryPath, - String targetQueue, - Optional<String> targetProcessor, - long repositorySize, - long remainingCount, - String serialized) throws IOException { - ReprocessingAllMailsTask.AdditionalInformation details = new ReprocessingAllMailsTask.AdditionalInformation(repositoryPath, targetQueue, targetProcessor, repositorySize, remainingCount, TIMESTAMP); - assertThat(jsonAdditionalInformationSerializer.deserialize(serialized)) - .isEqualToComparingFieldByField(details); - } - - private static Stream<Arguments> additionalInformationShouldBeDeserializable() { - return allAdditionalInformation(); + @Test + void additionalInformationShouldBeSerializable() throws Exception { + ReprocessingAllMailsTask.AdditionalInformation details = new ReprocessingAllMailsTask.AdditionalInformation(REPOSITORY_PATH, TARGET_QUEUE, SOME_TARGET_PROCESSOR, + REPOSITORY_SIZE, REMAINING_COUNT, TIMESTAMP); + ReprocessingAllMailsTask.AdditionalInformation detailsWithoutProcessor = new ReprocessingAllMailsTask.AdditionalInformation(REPOSITORY_PATH, TARGET_QUEUE, Optional.empty(), + REPOSITORY_SIZE, REMAINING_COUNT, TIMESTAMP); + + JsonSerializationVerifier.dtoModule(ReprocessingAllMailsTaskAdditionalInformationDTO.SERIALIZATION_MODULE) + .testCase(details, SERIALIZED_TASK_ADDITIONAL_INFORMATION_WITH_TARGET_PROCESSOR) + .testCase(detailsWithoutProcessor, SERIALIZED_TASK_ADDITIONAL_INFORMATION_WITHOUT_TARGET_PROCESSOR) + .verify(); } } \ No newline at end of file diff --git a/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/ReprocessingOneMailTaskTest.java b/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/ReprocessingOneMailTaskTest.java index 434a16b..5927ee0 100644 --- a/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/ReprocessingOneMailTaskTest.java +++ b/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/ReprocessingOneMailTaskTest.java @@ -19,8 +19,6 @@ 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.Mockito.mock; @@ -29,23 +27,16 @@ import java.time.Clock; import java.time.Instant; import java.time.ZoneId; import java.util.Optional; -import java.util.stream.Stream; +import org.apache.james.JsonSerializationVerifier; import org.apache.james.mailrepository.api.MailKey; import org.apache.james.mailrepository.api.MailRepositoryPath; -import org.apache.james.server.task.json.JsonTaskAdditionalInformationSerializer; import org.apache.james.server.task.json.JsonTaskSerializer; 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 org.junit.jupiter.params.provider.ValueSource; -import com.fasterxml.jackson.core.JsonProcessingException; -import net.javacrumbs.jsonunit.assertj.JsonAssertions; - class ReprocessingOneMailTaskTest { - private static final Instant TIMESTAMP = Instant.parse("2018-11-13T12:00:55Z"); private static final Clock CLOCK = Clock.fixed(TIMESTAMP, ZoneId.of("UTC")); private static final ReprocessingService REPROCESSING_SERVICE = mock(ReprocessingService.class); @@ -55,48 +46,17 @@ class ReprocessingOneMailTaskTest { private static final String TARGET_QUEUE = "queue"; private static final MailKey MAIL_KEY = new MailKey("myMail"); private static final Optional<String> TARGET_PROCESSOR = Optional.of("targetProcessor"); - private JsonTaskAdditionalInformationSerializer jsonAdditionalInformationSerializer = JsonTaskAdditionalInformationSerializer.of(ReprocessingOneMailTaskAdditionalInformationDTO.SERIALIZATION_MODULE); - - @ParameterizedTest - @MethodSource - void taskShouldBeSerializable(MailRepositoryPath repositoryPath, - String targetQueue, - MailKey mailKey, - Optional<String> targetProcessor, - String serialized) throws JsonProcessingException { - JsonTaskSerializer testee = JsonTaskSerializer.of(ReprocessingOneMailTaskDTO.module(CLOCK, REPROCESSING_SERVICE)); - ReprocessingOneMailTask task = new ReprocessingOneMailTask(REPROCESSING_SERVICE, repositoryPath, targetQueue, mailKey, targetProcessor, CLOCK); - JsonAssertions.assertThatJson(testee.serialize(task)) - .isEqualTo(serialized); - } - - private static Stream<Arguments> taskShouldBeSerializable() { - return allValidTasks(); - } - - @ParameterizedTest - @MethodSource - void taskShouldBeDeserializable(MailRepositoryPath repositoryPath, - String targetQueue, - MailKey mailKey, - Optional<String> targetProcessor, - String serialized) throws IOException { - JsonTaskSerializer testee = JsonTaskSerializer.of(ReprocessingOneMailTaskDTO.module(CLOCK, REPROCESSING_SERVICE)); - ReprocessingOneMailTask task = new ReprocessingOneMailTask(REPROCESSING_SERVICE, repositoryPath, targetQueue, mailKey, targetProcessor, CLOCK); - - assertThat(testee.deserialize(serialized)) - .isEqualToComparingFieldByFieldRecursively(task); - } - - private static Stream<Arguments> taskShouldBeDeserializable() { - return allValidTasks(); - } - private static Stream<Arguments> allValidTasks() { - return Stream.of( - Arguments.of(REPOSITORY_PATH, TARGET_QUEUE, MAIL_KEY, TARGET_PROCESSOR, SERIALIZED_TASK_1), - Arguments.of(REPOSITORY_PATH, TARGET_QUEUE, new MailKey("myMail"), Optional.empty(), "{\"type\":\"reprocessing-one\",\"repositoryPath\":\"a\",\"targetQueue\":\"queue\",\"mailKey\": \"myMail\"}") - ); + @Test + void taskShouldBeSerializable() throws Exception { + ReprocessingOneMailTask taskWithTargetProcessor = new ReprocessingOneMailTask(REPROCESSING_SERVICE, REPOSITORY_PATH, TARGET_QUEUE, MAIL_KEY, TARGET_PROCESSOR, CLOCK); + ReprocessingOneMailTask taskWithoutTargetProcessor = new ReprocessingOneMailTask(REPROCESSING_SERVICE, REPOSITORY_PATH, TARGET_QUEUE, MAIL_KEY, Optional.empty(), CLOCK); + + JsonSerializationVerifier.dtoModule(ReprocessingOneMailTaskDTO.module(CLOCK, REPROCESSING_SERVICE)) + .testCase(taskWithTargetProcessor, SERIALIZED_TASK_1) + .testCase(taskWithoutTargetProcessor, + "{\"type\":\"reprocessing-one\",\"repositoryPath\":\"a\",\"targetQueue\":\"queue\",\"mailKey\": \"myMail\"}") + .verify(); } @ParameterizedTest @@ -109,15 +69,11 @@ class ReprocessingOneMailTaskTest { } @Test - void additionalInformationShouldBeSerializable() throws JsonProcessingException { - ReprocessingOneMailTask.AdditionalInformation details = new ReprocessingOneMailTask.AdditionalInformation(REPOSITORY_PATH, TARGET_QUEUE, MAIL_KEY, TARGET_PROCESSOR, TIMESTAMP); - assertThatJson(jsonAdditionalInformationSerializer.serialize(details)).isEqualTo(SERIALIZED_TASK_1_ADDITIONAL_INFORMATION); - } - - @Test - void additonalInformationShouldBeDeserializable() throws IOException { + void additionalInformationShouldBeSerializable() throws IOException { ReprocessingOneMailTask.AdditionalInformation details = new ReprocessingOneMailTask.AdditionalInformation(REPOSITORY_PATH, TARGET_QUEUE, MAIL_KEY, TARGET_PROCESSOR, TIMESTAMP); - assertThat(jsonAdditionalInformationSerializer.deserialize(SERIALIZED_TASK_1_ADDITIONAL_INFORMATION)) - .isEqualToComparingFieldByField(details); + JsonSerializationVerifier.dtoModule(ReprocessingOneMailTaskAdditionalInformationDTO.SERIALIZATION_MODULE) + .bean(details) + .json(SERIALIZED_TASK_1_ADDITIONAL_INFORMATION) + .verify(); } } --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org