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:53 UTC
[james-project] 09/15: JAMES-2813 MailRepositories 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 ff173b3360298d246bad471a4594e28ac9a0e91b
Author: Benoit Tellier <bt...@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-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org