This is an automated email from the ASF dual-hosted git repository. btellier pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 7c471f0967a869059f4b28bba2e5c369562cd0b6 Author: Benoit TELLIER <btell...@linagora.com> AuthorDate: Thu Jan 11 13:25:35 2024 +0100 JAMES-3961 AssertJ bean introspection --- .../apache/james/JsonSerializationVerifier.java | 22 ++++++++++++++++- ...omputeMailboxCountersTaskSerializationTest.java | 4 +++- .../SolveMailboxInconsistenciesServiceTest.java | 5 +++- ...essageInconsistenciesTaskSerializationTest.java | 8 +++++-- mailbox/jpa/pom.xml | 6 +++++ mailbox/memory/pom.xml | 6 +++++ ...rorRecoveryIndexationTaskSerializationTest.java | 7 ++++-- .../FullReindexingTaskSerializationTest.java | 7 ++++-- ...ngleMailboxReindexingTaskSerializationTest.java | 7 ++++-- .../UserReindexingTaskSerializationTest.java | 8 ++++--- .../RecomputeCurrentQuotasServiceContract.java | 5 +++- ...ecomputeCurrentQuotasTaskSerializationTest.java | 7 ++++-- .../BlobGCTaskAdditionalInformationDTOTest.java | 4 +++- .../deduplication/BlobGCTaskSerializationTest.java | 5 ++-- .../james/jmap/cassandra/filtering/DTOTest.java | 28 +++++++++++++++------- .../change/StateChangeEventSerializerTest.scala | 5 ++++ ...sandraMappingsSolveInconsistenciesTaskTest.java | 15 +++++++++++- ...ctionItemsTaskAdditionalInformationDTOTest.java | 5 ++-- ...stViewProjectionItemsTaskSerializationTest.java | 4 +++- ...ctionItemsTaskAdditionalInformationDTOTest.java | 4 +++- ...stViewProjectionItemsTaskSerializationTest.java | 4 +++- .../service/ReprocessingAllMailsTaskTest.java | 16 +++++++++---- .../service/ReprocessingOneMailTaskTest.java | 8 ++++--- 23 files changed, 147 insertions(+), 43 deletions(-) diff --git a/json/src/test/java/org/apache/james/JsonSerializationVerifier.java b/json/src/test/java/org/apache/james/JsonSerializationVerifier.java index 09cf2a8934..19c965b4ab 100644 --- a/json/src/test/java/org/apache/james/JsonSerializationVerifier.java +++ b/json/src/test/java/org/apache/james/JsonSerializationVerifier.java @@ -23,19 +23,38 @@ import static net.javacrumbs.jsonunit.assertj.JsonAssertions.assertThatJson; import static org.assertj.core.api.Assertions.assertThat; import java.io.IOException; +import java.util.Comparator; import java.util.List; import java.util.Optional; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.atomic.AtomicLong; import java.util.function.BiConsumer; +import java.util.function.BiPredicate; +import java.util.regex.Pattern; import org.apache.commons.lang3.tuple.Pair; import org.apache.james.json.DTO; import org.apache.james.json.DTOModule; import org.apache.james.json.JsonGenericSerializer; +import org.assertj.core.api.recursive.comparison.RecursiveComparisonConfiguration; import com.github.fge.lambdas.Throwing; import com.google.common.collect.ImmutableList; public class JsonSerializationVerifier<T, U extends DTO> { + + public static final RecursiveComparisonConfiguration recursiveComparisonConfiguration = new RecursiveComparisonConfiguration(); + + static { + recursiveComparisonConfiguration.registerComparatorForType(Comparator.comparingInt(AtomicInteger::get), AtomicInteger.class); + recursiveComparisonConfiguration.registerComparatorForType(Comparator.comparingLong(AtomicLong::get), AtomicLong.class); + recursiveComparisonConfiguration.registerEqualsForType((o, o2) -> o.get() == o2.get(), AtomicInteger.class); + recursiveComparisonConfiguration.registerEqualsForType((o, o2) -> o.get() == o2.get(), AtomicLong.class); + recursiveComparisonConfiguration.registerEqualsForType((o, o2) -> o.get() == o2.get(), AtomicBoolean.class); + recursiveComparisonConfiguration.registerEqualsForType((o, o2) -> o.toString().equalsIgnoreCase(o2.toString()), Pattern.class); + } + @FunctionalInterface public interface RequireJson<T, U extends DTO> { JsonSerializationVerifier<T, U> json(String json); @@ -61,7 +80,8 @@ public class JsonSerializationVerifier<T, U extends DTO> { private static <T> EqualityTester<T> defaultEqualityTester() { return (a, b) -> assertThat(a) .describedAs("Deserialization test [" + b + "]") - .isEqualToComparingFieldByFieldRecursively(b); + .usingRecursiveComparison(recursiveComparisonConfiguration) + .isEqualTo(b); } private final List<Pair<String, T>> testValues; diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/RecomputeMailboxCountersTaskSerializationTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/RecomputeMailboxCountersTaskSerializationTest.java index 948471073e..948ad9bf86 100644 --- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/RecomputeMailboxCountersTaskSerializationTest.java +++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/RecomputeMailboxCountersTaskSerializationTest.java @@ -19,6 +19,7 @@ package org.apache.james.mailbox.cassandra.mail.task; +import static org.apache.james.JsonSerializationVerifier.recursiveComparisonConfiguration; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; @@ -79,7 +80,8 @@ class RecomputeMailboxCountersTaskSerializationTest { .deserialize(SERIALIZED_TASK_OLD); assertThat(domainObject) - .isEqualToComparingFieldByFieldRecursively(TASK_UNTRUSTED); + .usingRecursiveComparison(recursiveComparisonConfiguration) + .isEqualTo(TASK_UNTRUSTED); } @Test diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/SolveMailboxInconsistenciesServiceTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/SolveMailboxInconsistenciesServiceTest.java index cfa11c9c19..a67737b9f6 100644 --- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/SolveMailboxInconsistenciesServiceTest.java +++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/SolveMailboxInconsistenciesServiceTest.java @@ -19,6 +19,7 @@ package org.apache.james.mailbox.cassandra.mail.task; +import static org.apache.james.JsonSerializationVerifier.recursiveComparisonConfiguration; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatCode; import static org.assertj.core.api.Assertions.assertThatThrownBy; @@ -167,7 +168,9 @@ class SolveMailboxInconsistenciesServiceTest { testee.fixMailboxInconsistencies(context).block(); - assertThat(context.snapshot()).isEqualToComparingFieldByFieldRecursively(new Context().snapshot()); + assertThat(context.snapshot()) + .usingRecursiveComparison(recursiveComparisonConfiguration) + .isEqualTo(new Context().snapshot()); } @Test diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/SolveMessageInconsistenciesTaskSerializationTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/SolveMessageInconsistenciesTaskSerializationTest.java index d450a52d86..cdd2f37013 100644 --- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/SolveMessageInconsistenciesTaskSerializationTest.java +++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/SolveMessageInconsistenciesTaskSerializationTest.java @@ -19,6 +19,7 @@ package org.apache.james.mailbox.cassandra.mail.task; +import static org.apache.james.JsonSerializationVerifier.recursiveComparisonConfiguration; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; @@ -80,8 +81,10 @@ public class SolveMessageInconsistenciesTaskSerializationTest { SolveMessageInconsistenciesTask expected = new SolveMessageInconsistenciesTask(service, RunningOptions.DEFAULT); + assertThat(legacyTask) - .isEqualToComparingFieldByFieldRecursively(expected); + .usingRecursiveComparison(recursiveComparisonConfiguration) + .isEqualTo(expected); } @Test @@ -111,6 +114,7 @@ public class SolveMessageInconsistenciesTaskSerializationTest { ); assertThat(legacyDetails) - .isEqualToComparingFieldByFieldRecursively(expected); + .usingRecursiveComparison(recursiveComparisonConfiguration) + .isEqualTo(expected); } } diff --git a/mailbox/jpa/pom.xml b/mailbox/jpa/pom.xml index 3ed2a82e83..9125639b59 100644 --- a/mailbox/jpa/pom.xml +++ b/mailbox/jpa/pom.xml @@ -84,6 +84,12 @@ <artifactId>event-bus-in-vm</artifactId> <scope>test</scope> </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-jpa</artifactId> diff --git a/mailbox/memory/pom.xml b/mailbox/memory/pom.xml index abd0cc006e..ca61c4c5bc 100644 --- a/mailbox/memory/pom.xml +++ b/mailbox/memory/pom.xml @@ -69,6 +69,12 @@ <type>test-jar</type> <scope>test</scope> </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-memory</artifactId> diff --git a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTaskSerializationTest.java b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTaskSerializationTest.java index a964c03bee..00137794ed 100644 --- a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTaskSerializationTest.java +++ b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTaskSerializationTest.java @@ -18,6 +18,7 @@ ****************************************************************/ package org.apache.mailbox.tools.indexer; +import static org.apache.james.JsonSerializationVerifier.recursiveComparisonConfiguration; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; @@ -85,7 +86,8 @@ class ErrorRecoveryIndexationTaskSerializationTest { ErrorRecoveryIndexationTask expected = new ErrorRecoveryIndexationTask(reIndexerPerformer, new ReIndexingExecutionFailures(failures, ImmutableList.of()), RunningOptions.DEFAULT); assertThat(legacyTask) - .isEqualToComparingFieldByFieldRecursively(expected); + .usingRecursiveComparison(recursiveComparisonConfiguration) + .isEqualTo(expected); } @Test @@ -124,7 +126,8 @@ class ErrorRecoveryIndexationTaskSerializationTest { ); assertThat(legacyAdditionalInformation) - .isEqualToComparingFieldByFieldRecursively(expected); + .usingRecursiveComparison(recursiveComparisonConfiguration) + .isEqualTo(expected); } } diff --git a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/FullReindexingTaskSerializationTest.java b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/FullReindexingTaskSerializationTest.java index a540f48bf2..a8fbd04dee 100644 --- a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/FullReindexingTaskSerializationTest.java +++ b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/FullReindexingTaskSerializationTest.java @@ -18,6 +18,7 @@ ****************************************************************/ package org.apache.mailbox.tools.indexer; +import static org.apache.james.JsonSerializationVerifier.recursiveComparisonConfiguration; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; @@ -83,7 +84,8 @@ class FullReindexingTaskSerializationTest { FullReindexingTask expected = new FullReindexingTask(reIndexerPerformer, RunningOptions.DEFAULT); assertThat(legacyTask) - .isEqualToComparingFieldByFieldRecursively(expected); + .usingRecursiveComparison(recursiveComparisonConfiguration) + .isEqualTo(expected); } @Test @@ -116,7 +118,8 @@ class FullReindexingTaskSerializationTest { ); assertThat(legacyAdditionalInformation) - .isEqualToComparingFieldByFieldRecursively(expected); + .usingRecursiveComparison(recursiveComparisonConfiguration) + .isEqualTo(expected); } } diff --git a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTaskSerializationTest.java b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTaskSerializationTest.java index dc1eaf6d56..6754de267d 100644 --- a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTaskSerializationTest.java +++ b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTaskSerializationTest.java @@ -18,6 +18,7 @@ ****************************************************************/ package org.apache.mailbox.tools.indexer; +import static org.apache.james.JsonSerializationVerifier.recursiveComparisonConfiguration; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; @@ -81,7 +82,8 @@ class SingleMailboxReindexingTaskSerializationTest { SingleMailboxReindexingTask expected = new SingleMailboxReindexingTask(reIndexerPerformer, mailboxId, RunningOptions.DEFAULT); assertThat(legacyTask) - .isEqualToComparingFieldByFieldRecursively(expected); + .usingRecursiveComparison(recursiveComparisonConfiguration) + .isEqualTo(expected); } @Test @@ -116,7 +118,8 @@ class SingleMailboxReindexingTaskSerializationTest { ); assertThat(legacyAdditionalInformation) - .isEqualToComparingFieldByFieldRecursively(expected); + .usingRecursiveComparison(recursiveComparisonConfiguration) + .isEqualTo(expected); } } diff --git a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/UserReindexingTaskSerializationTest.java b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/UserReindexingTaskSerializationTest.java index d1a281cc0c..c9bcd457a0 100644 --- a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/UserReindexingTaskSerializationTest.java +++ b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/UserReindexingTaskSerializationTest.java @@ -18,6 +18,7 @@ ****************************************************************/ package org.apache.mailbox.tools.indexer; +import static org.apache.james.JsonSerializationVerifier.recursiveComparisonConfiguration; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; @@ -81,9 +82,9 @@ class UserReindexingTaskSerializationTest { .deserialize(legacySerializedUserReindexingTask); UserReindexingTask expected = new UserReindexingTask(reIndexerPerformer, USERNAME, RunningOptions.DEFAULT); - assertThat(legacyTask) - .isEqualToComparingFieldByFieldRecursively(expected); + .usingRecursiveComparison() + .isEqualTo(expected); } @Test @@ -117,7 +118,8 @@ class UserReindexingTaskSerializationTest { ); assertThat(legacyAdditionalInformation) - .isEqualToComparingFieldByFieldRecursively(expected); + .usingRecursiveComparison(recursiveComparisonConfiguration) + .isEqualTo(expected); } } diff --git a/mailbox/tools/quota-recompute/src/test/java/org/apache/james/mailbox/quota/task/RecomputeCurrentQuotasServiceContract.java b/mailbox/tools/quota-recompute/src/test/java/org/apache/james/mailbox/quota/task/RecomputeCurrentQuotasServiceContract.java index e0c048df85..48e6d63fb7 100644 --- a/mailbox/tools/quota-recompute/src/test/java/org/apache/james/mailbox/quota/task/RecomputeCurrentQuotasServiceContract.java +++ b/mailbox/tools/quota-recompute/src/test/java/org/apache/james/mailbox/quota/task/RecomputeCurrentQuotasServiceContract.java @@ -19,6 +19,7 @@ package org.apache.james.mailbox.quota.task; +import static org.apache.james.JsonSerializationVerifier.recursiveComparisonConfiguration; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.when; @@ -198,7 +199,9 @@ public interface RecomputeCurrentQuotasServiceContract { Context context = new Context(); testee().recomputeCurrentQuotas(context, RunningOptions.DEFAULT).block(); - assertThat(context.snapshot()).isEqualToComparingFieldByFieldRecursively(new Context().snapshot()); + assertThat(context.snapshot()) + .usingRecursiveComparison(recursiveComparisonConfiguration) + .isEqualTo(new Context().snapshot()); } @Test diff --git a/mailbox/tools/quota-recompute/src/test/java/org/apache/james/mailbox/quota/task/RecomputeCurrentQuotasTaskSerializationTest.java b/mailbox/tools/quota-recompute/src/test/java/org/apache/james/mailbox/quota/task/RecomputeCurrentQuotasTaskSerializationTest.java index ac37d2837b..a85387d7a9 100644 --- a/mailbox/tools/quota-recompute/src/test/java/org/apache/james/mailbox/quota/task/RecomputeCurrentQuotasTaskSerializationTest.java +++ b/mailbox/tools/quota-recompute/src/test/java/org/apache/james/mailbox/quota/task/RecomputeCurrentQuotasTaskSerializationTest.java @@ -19,6 +19,7 @@ package org.apache.james.mailbox.quota.task; +import static org.apache.james.JsonSerializationVerifier.recursiveComparisonConfiguration; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; @@ -89,7 +90,8 @@ class RecomputeCurrentQuotasTaskSerializationTest { .deserialize(SERIALIZED_TASK_LEGACY); assertThat(legacyTask) - .isEqualToComparingFieldByFieldRecursively(TASK_DEFAULT); + .usingRecursiveComparison(recursiveComparisonConfiguration) + .isEqualTo(TASK_DEFAULT); } @Test @@ -99,6 +101,7 @@ class RecomputeCurrentQuotasTaskSerializationTest { .deserialize(SERIALIZED_ADDITIONAL_INFORMATION_LEGACY); assertThat(legacyDetails) - .isEqualToComparingFieldByFieldRecursively(DETAILS_DEFAULT); + .usingRecursiveComparison(recursiveComparisonConfiguration) + .isEqualTo(DETAILS_DEFAULT); } } diff --git a/server/blob/blob-storage-strategy/src/test/java/org/apache/james/server/blob/deduplication/BlobGCTaskAdditionalInformationDTOTest.java b/server/blob/blob-storage-strategy/src/test/java/org/apache/james/server/blob/deduplication/BlobGCTaskAdditionalInformationDTOTest.java index 34ed5a086f..c27e2a7c2d 100644 --- a/server/blob/blob-storage-strategy/src/test/java/org/apache/james/server/blob/deduplication/BlobGCTaskAdditionalInformationDTOTest.java +++ b/server/blob/blob-storage-strategy/src/test/java/org/apache/james/server/blob/deduplication/BlobGCTaskAdditionalInformationDTOTest.java @@ -19,6 +19,7 @@ package org.apache.james.server.blob.deduplication; +import static org.apache.james.JsonSerializationVerifier.recursiveComparisonConfiguration; import static org.assertj.core.api.Assertions.assertThat; import java.time.Instant; @@ -54,7 +55,8 @@ class BlobGCTaskAdditionalInformationDTOTest { .deserialize(ClassLoaderUtils.getSystemResourceAsString("json/blobGC-legacy.additionalInformation.json")); assertThat(gcTask) - .isEqualToComparingFieldByFieldRecursively(new BlobGCTask.AdditionalInformation( + .usingRecursiveComparison(recursiveComparisonConfiguration) + .isEqualTo(new BlobGCTask.AdditionalInformation( 1, 2, 3, diff --git a/server/blob/blob-storage-strategy/src/test/java/org/apache/james/server/blob/deduplication/BlobGCTaskSerializationTest.java b/server/blob/blob-storage-strategy/src/test/java/org/apache/james/server/blob/deduplication/BlobGCTaskSerializationTest.java index eb26542b85..3be209cd76 100644 --- a/server/blob/blob-storage-strategy/src/test/java/org/apache/james/server/blob/deduplication/BlobGCTaskSerializationTest.java +++ b/server/blob/blob-storage-strategy/src/test/java/org/apache/james/server/blob/deduplication/BlobGCTaskSerializationTest.java @@ -19,6 +19,7 @@ package org.apache.james.server.blob.deduplication; +import static org.apache.james.JsonSerializationVerifier.recursiveComparisonConfiguration; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; @@ -89,9 +90,9 @@ class BlobGCTaskSerializationTest { clock)) .withoutNestedType() .deserialize(ClassLoaderUtils.getSystemResourceAsString("json/blobGC-legacy.task.json")); - assertThat(gcTask) - .isEqualToComparingFieldByFieldRecursively(new BlobGCTask( + .usingRecursiveComparison(recursiveComparisonConfiguration) + .isEqualTo(new BlobGCTask( blobStoreDAO, generationAwareBlobIdFactory, generationAwareBlobIdConfiguration, diff --git a/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/filtering/DTOTest.java b/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/filtering/DTOTest.java index b8e76fb621..0111474af1 100644 --- a/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/filtering/DTOTest.java +++ b/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/filtering/DTOTest.java @@ -19,6 +19,7 @@ package org.apache.james.jmap.cassandra.filtering; +import static org.apache.james.JsonSerializationVerifier.recursiveComparisonConfiguration; import static org.apache.james.jmap.api.filtering.RuleFixture.RULE_1; import static org.apache.james.jmap.api.filtering.RuleFixture.RULE_2; import static org.apache.james.jmap.api.filtering.RuleFixture.RULE_4; @@ -113,8 +114,10 @@ class DTOTest { .withoutNestedType(); SoftAssertions.assertSoftly(Throwing.consumer(softly -> { - softly.assertThat(serializer.deserialize(EVENT_JSON_3)).isEqualToComparingFieldByFieldRecursively(SIMPLE_RULE); - softly.assertThat(serializer.deserialize(EVENT_COMPLEX_JSON_3)).isEqualToComparingFieldByFieldRecursively(COMPLEX_RULE); + softly.assertThat(serializer.deserialize(EVENT_JSON_3)).usingRecursiveComparison(recursiveComparisonConfiguration) + .isEqualTo(SIMPLE_RULE); + softly.assertThat(serializer.deserialize(EVENT_COMPLEX_JSON_3)).usingRecursiveComparison(recursiveComparisonConfiguration) + .isEqualTo(COMPLEX_RULE); })); } @@ -125,8 +128,10 @@ class DTOTest { .withoutNestedType(); SoftAssertions.assertSoftly(Throwing.consumer(softly -> { - softly.assertThat(serializer.deserialize(EVENT_JSON_2)).isEqualToComparingFieldByFieldRecursively(SIMPLE_RULE); - softly.assertThat(serializer.deserialize(EVENT_COMPLEX_JSON_2)).isEqualToComparingFieldByFieldRecursively(COMPLEX_RULE); + softly.assertThat(serializer.deserialize(EVENT_JSON_2)).usingRecursiveComparison(recursiveComparisonConfiguration) + .isEqualTo(SIMPLE_RULE); + softly.assertThat(serializer.deserialize(EVENT_COMPLEX_JSON_2)).usingRecursiveComparison(recursiveComparisonConfiguration) + .isEqualTo(COMPLEX_RULE); })); } @@ -137,8 +142,10 @@ class DTOTest { .withoutNestedType(); SoftAssertions.assertSoftly(Throwing.consumer(softly -> { - softly.assertThat(serializer.deserialize(EVENT_JSON)).isEqualToComparingFieldByFieldRecursively(SIMPLE_RULE); - softly.assertThat(serializer.deserialize(EVENT_COMPLEX_JSON)).isEqualToComparingFieldByFieldRecursively(COMPLEX_RULE); + softly.assertThat(serializer.deserialize(EVENT_JSON)).usingRecursiveComparison(recursiveComparisonConfiguration) + .isEqualTo(SIMPLE_RULE); + softly.assertThat(serializer.deserialize(EVENT_COMPLEX_JSON)).usingRecursiveComparison(recursiveComparisonConfiguration) + .isEqualTo(COMPLEX_RULE); })); } @@ -156,7 +163,8 @@ class DTOTest { .withoutNestedType(); assertThat(serializer.deserialize(ClassLoaderUtils.getSystemResourceAsString("json/increment-v3.json"))) - .isEqualToComparingFieldByFieldRecursively(INCREMENT); + .usingRecursiveComparison(recursiveComparisonConfiguration) + .isEqualTo(INCREMENT); } @Test @@ -166,7 +174,8 @@ class DTOTest { .withoutNestedType(); assertThat(serializer.deserialize(ClassLoaderUtils.getSystemResourceAsString("json/increment-v2.json"))) - .isEqualToComparingFieldByFieldRecursively(INCREMENT); + .usingRecursiveComparison(recursiveComparisonConfiguration) + .isEqualTo(INCREMENT); } @Test @@ -176,6 +185,7 @@ class DTOTest { .withoutNestedType(); assertThat(serializer.deserialize(ClassLoaderUtils.getSystemResourceAsString("json/increment.json"))) - .isEqualToComparingFieldByFieldRecursively(INCREMENT); + .usingRecursiveComparison(recursiveComparisonConfiguration) + .isEqualTo(INCREMENT); } } diff --git a/server/protocols/jmap-rfc-8621/src/test/scala/org/apache/james/jmap/change/StateChangeEventSerializerTest.scala b/server/protocols/jmap-rfc-8621/src/test/scala/org/apache/james/jmap/change/StateChangeEventSerializerTest.scala index cc30918a28..62b6648c3a 100644 --- a/server/protocols/jmap-rfc-8621/src/test/scala/org/apache/james/jmap/change/StateChangeEventSerializerTest.scala +++ b/server/protocols/jmap-rfc-8621/src/test/scala/org/apache/james/jmap/change/StateChangeEventSerializerTest.scala @@ -94,6 +94,11 @@ class StateChangeEventSerializerTest { .withoutNestedType()) .bean(EVENT) .json(EVENT_JSON) + .equalityTester((a, b) => { + assertThat(a.eventId).isEqualTo(b.eventId) + assertThat(a.username).isEqualTo(b.username) + assertThat(a.asStateChange).isEqualTo(b.asStateChange) + }) .verify() @Test diff --git a/server/protocols/webadmin/webadmin-cassandra-data/src/test/java/org/apache/james/webadmin/service/CassandraMappingsSolveInconsistenciesTaskTest.java b/server/protocols/webadmin/webadmin-cassandra-data/src/test/java/org/apache/james/webadmin/service/CassandraMappingsSolveInconsistenciesTaskTest.java index c70bcb8a09..53fe03b031 100644 --- a/server/protocols/webadmin/webadmin-cassandra-data/src/test/java/org/apache/james/webadmin/service/CassandraMappingsSolveInconsistenciesTaskTest.java +++ b/server/protocols/webadmin/webadmin-cassandra-data/src/test/java/org/apache/james/webadmin/service/CassandraMappingsSolveInconsistenciesTaskTest.java @@ -23,10 +23,15 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; import java.io.IOException; +import java.util.Comparator; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.atomic.AtomicLong; import org.apache.james.rrt.cassandra.CassandraMappingsSourcesDAO; import org.apache.james.rrt.cassandra.migration.MappingsSourcesMigration; import org.apache.james.server.task.json.JsonTaskSerializer; +import org.assertj.core.api.recursive.comparison.RecursiveComparisonConfiguration; import org.junit.jupiter.api.Test; import com.fasterxml.jackson.core.JsonProcessingException; @@ -48,7 +53,15 @@ class CassandraMappingsSolveInconsistenciesTaskTest { @Test void taskShouldBeDeserializable() throws IOException { + RecursiveComparisonConfiguration recursiveComparisonConfiguration = new RecursiveComparisonConfiguration(); + recursiveComparisonConfiguration.registerComparatorForType(Comparator.comparingInt(AtomicInteger::get), AtomicInteger.class); + recursiveComparisonConfiguration.registerComparatorForType(Comparator.comparingLong(AtomicLong::get), AtomicLong.class); + recursiveComparisonConfiguration.registerEqualsForType((o, o2) -> o.get() == o2.get(), AtomicInteger.class); + recursiveComparisonConfiguration.registerEqualsForType((o, o2) -> o.get() == o2.get(), AtomicLong.class); + recursiveComparisonConfiguration.registerEqualsForType((o, o2) -> o.get() == o2.get(), AtomicBoolean.class); + assertThat(TESTEE.deserialize(SERIALIZED)) - .isEqualToComparingFieldByFieldRecursively(TASK); + .usingRecursiveComparison(recursiveComparisonConfiguration) + .isEqualTo(TASK); } } diff --git a/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeAllFastViewProjectionItemsTaskAdditionalInformationDTOTest.java b/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeAllFastViewProjectionItemsTaskAdditionalInformationDTOTest.java index 0a9412465f..65e6f14a43 100644 --- a/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeAllFastViewProjectionItemsTaskAdditionalInformationDTOTest.java +++ b/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeAllFastViewProjectionItemsTaskAdditionalInformationDTOTest.java @@ -19,10 +19,10 @@ package org.apache.james.webadmin.data.jmap; +import static org.apache.james.JsonSerializationVerifier.recursiveComparisonConfiguration; import static org.assertj.core.api.Assertions.assertThat; import java.time.Instant; - import org.apache.james.JsonSerializationVerifier; import org.apache.james.json.JsonGenericSerializer; import org.apache.james.util.ClassLoaderUtils; @@ -61,6 +61,7 @@ class RecomputeAllFastViewProjectionItemsTaskAdditionalInformationDTOTest { INSTANT); assertThat(legacyDetails) - .isEqualToComparingFieldByFieldRecursively(expected); + .usingRecursiveComparison(recursiveComparisonConfiguration) + .isEqualTo(expected); } } \ No newline at end of file diff --git a/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeAllFastViewProjectionItemsTaskSerializationTest.java b/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeAllFastViewProjectionItemsTaskSerializationTest.java index a31eea898a..a7a05ee8f2 100644 --- a/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeAllFastViewProjectionItemsTaskSerializationTest.java +++ b/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeAllFastViewProjectionItemsTaskSerializationTest.java @@ -19,6 +19,7 @@ package org.apache.james.webadmin.data.jmap; +import static org.apache.james.JsonSerializationVerifier.recursiveComparisonConfiguration; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; @@ -55,6 +56,7 @@ class RecomputeAllFastViewProjectionItemsTaskSerializationTest { RunningOptions.DEFAULT); assertThat(legacyTask) - .isEqualToComparingFieldByFieldRecursively(expected); + .usingRecursiveComparison(recursiveComparisonConfiguration) + .isEqualTo(expected); } } \ No newline at end of file diff --git a/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeUserFastViewProjectionItemsTaskAdditionalInformationDTOTest.java b/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeUserFastViewProjectionItemsTaskAdditionalInformationDTOTest.java index ce0c123fd5..b2c205221e 100644 --- a/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeUserFastViewProjectionItemsTaskAdditionalInformationDTOTest.java +++ b/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeUserFastViewProjectionItemsTaskAdditionalInformationDTOTest.java @@ -19,6 +19,7 @@ package org.apache.james.webadmin.data.jmap; +import static org.apache.james.JsonSerializationVerifier.recursiveComparisonConfiguration; import static org.assertj.core.api.Assertions.assertThat; import java.time.Instant; @@ -58,6 +59,7 @@ class RecomputeUserFastViewProjectionItemsTaskAdditionalInformationDTOTest { INSTANT); assertThat(legacyDetails) - .isEqualToComparingFieldByFieldRecursively(expected); + .usingRecursiveComparison(recursiveComparisonConfiguration) + .isEqualTo(expected); } } \ No newline at end of file diff --git a/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeUserFastViewProjectionItemsTaskSerializationTest.java b/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeUserFastViewProjectionItemsTaskSerializationTest.java index cb99cb188e..5246a77962 100644 --- a/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeUserFastViewProjectionItemsTaskSerializationTest.java +++ b/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeUserFastViewProjectionItemsTaskSerializationTest.java @@ -19,6 +19,7 @@ package org.apache.james.webadmin.data.jmap; +import static org.apache.james.JsonSerializationVerifier.recursiveComparisonConfiguration; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; @@ -58,6 +59,7 @@ class RecomputeUserFastViewProjectionItemsTaskSerializationTest { Username.of("bob")); assertThat(legacyTask) - .isEqualToComparingFieldByFieldRecursively(expected); + .usingRecursiveComparison(recursiveComparisonConfiguration) + .isEqualTo(expected); } } \ 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 33c38db2c0..8ac24f498d 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,6 +19,7 @@ package org.apache.james.webadmin.service; +import static org.apache.james.JsonSerializationVerifier.recursiveComparisonConfiguration; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.mockito.Mockito.mock; @@ -118,11 +119,13 @@ class ReprocessingAllMailsTaskTest { JsonTaskSerializer testee = JsonTaskSerializer.of(ReprocessingAllMailsTaskDTO.module(REPROCESSING_SERVICE)); assertThat(testee.deserialize(OLD_SERIALIZED_TASK)) - .isEqualToComparingFieldByFieldRecursively(taskWithTargetProcessor); + .usingRecursiveComparison(recursiveComparisonConfiguration) + .isEqualTo(taskWithTargetProcessor); String serializedTaskWithLimit = "{\"type\":\"reprocessing-all\",\"repositorySize\":5,\"repositoryPath\":\"a\",\"targetQueue\":\"queue\",\"targetProcessor\":\"targetProcessor\", \"limit\":10}"; assertThat(testee.deserialize(serializedTaskWithLimit)) - .isEqualToComparingFieldByFieldRecursively(new ReprocessingAllMailsTask(REPROCESSING_SERVICE, REPOSITORY_SIZE, REPOSITORY_PATH, new ReprocessingService.Configuration(TARGET_QUEUE, SOME_TARGET_PROCESSOR, NO_MAX_RETRIES, CONSUME, Limit.limit(10)))); + .usingRecursiveComparison(recursiveComparisonConfiguration) + .isEqualTo(new ReprocessingAllMailsTask(REPROCESSING_SERVICE, REPOSITORY_SIZE, REPOSITORY_PATH, new ReprocessingService.Configuration(TARGET_QUEUE, SOME_TARGET_PROCESSOR, NO_MAX_RETRIES, CONSUME, Limit.limit(10)))); } @Test @@ -131,7 +134,8 @@ class ReprocessingAllMailsTaskTest { String serializedTaskWithLimit = "{\"type\":\"reprocessing-all\", \"maxRetries\":6,\"repositorySize\":5,\"repositoryPath\":\"a\",\"targetQueue\":\"queue\",\"targetProcessor\":\"targetProcessor\", \"limit\":10}"; assertThat(testee.deserialize(serializedTaskWithLimit)) - .isEqualToComparingFieldByFieldRecursively(new ReprocessingAllMailsTask(REPROCESSING_SERVICE, REPOSITORY_SIZE, REPOSITORY_PATH, new ReprocessingService.Configuration(TARGET_QUEUE, SOME_TARGET_PROCESSOR, Optional.of(6), CONSUME, Limit.limit(10)))); + .usingRecursiveComparison(recursiveComparisonConfiguration) + .isEqualTo(new ReprocessingAllMailsTask(REPROCESSING_SERVICE, REPOSITORY_SIZE, REPOSITORY_PATH, new ReprocessingService.Configuration(TARGET_QUEUE, SOME_TARGET_PROCESSOR, Optional.of(6), CONSUME, Limit.limit(10)))); } @Test @@ -142,12 +146,14 @@ class ReprocessingAllMailsTaskTest { JsonTaskAdditionalInformationSerializer testee = JsonTaskAdditionalInformationSerializer.of(ReprocessingAllMailsTaskAdditionalInformationDTO.module()); assertThat(testee.deserialize(OLD_SERIALIZED_TASK_ADDITIONAL_INFORMATION)) - .isEqualToComparingFieldByFieldRecursively(details); + .usingRecursiveComparison(recursiveComparisonConfiguration) + .isEqualTo(details); String serializedTaskAdditionalInformation = "{\"type\":\"reprocessing-all\", \"repositoryPath\":\"a\",\"targetQueue\":\"queue\",\"targetProcessor\":\"targetProcessor\",\"initialCount\":5,\"remainingCount\":3, \"timestamp\":\"2018-11-13T12:00:55Z\", \"limit\": 10}"; assertThat(testee.deserialize(serializedTaskAdditionalInformation)) - .isEqualToComparingFieldByFieldRecursively(new ReprocessingAllMailsTask.AdditionalInformation(REPOSITORY_PATH, + .usingRecursiveComparison(recursiveComparisonConfiguration) + .isEqualTo(new ReprocessingAllMailsTask.AdditionalInformation(REPOSITORY_PATH, new ReprocessingService.Configuration(TARGET_QUEUE, SOME_TARGET_PROCESSOR, NO_MAX_RETRIES, CONSUME, Limit.limit(10)), REPOSITORY_SIZE, REMAINING_COUNT, TIMESTAMP)); } 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 512508f60c..2eaaaaeb51 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,6 +19,7 @@ package org.apache.james.webadmin.service; +import static org.apache.james.JsonSerializationVerifier.recursiveComparisonConfiguration; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.mockito.Mockito.mock; @@ -55,7 +56,6 @@ class ReprocessingOneMailTaskTest { public static final boolean CONSUME = true; private static final Optional<Integer> NO_MAX_RETRIES = Optional.empty(); private static final Optional<String> NO_PROCESSOR = Optional.empty(); - @Test void taskShouldBeSerializable() throws Exception { ReprocessingOneMailTask taskWithTargetProcessor = new ReprocessingOneMailTask(REPROCESSING_SERVICE, REPOSITORY_PATH, new ReprocessingService.Configuration(TARGET_QUEUE, TARGET_PROCESSOR, NO_MAX_RETRIES, CONSUME, Limit.unlimited()), MAIL_KEY, CLOCK); @@ -105,7 +105,8 @@ class ReprocessingOneMailTaskTest { JsonTaskSerializer testee = JsonTaskSerializer.of(ReprocessingOneMailTaskDTO.module(CLOCK, REPROCESSING_SERVICE)); assertThat(testee.deserialize(SERIALIZED_TASK_OLD)) - .isEqualToComparingFieldByFieldRecursively(taskWithTargetProcessor); + .usingRecursiveComparison(recursiveComparisonConfiguration) + .isEqualTo(taskWithTargetProcessor); } @Test @@ -115,6 +116,7 @@ class ReprocessingOneMailTaskTest { JsonTaskAdditionalInformationSerializer testee = JsonTaskAdditionalInformationSerializer.of(ReprocessingOneMailTaskAdditionalInformationDTO.module()); assertThat(testee.deserialize(SERIALIZED_TASK_OLD_ADDITIONAL_INFORMATION)) - .isEqualToComparingFieldByFieldRecursively(details); + .usingRecursiveComparison(recursiveComparisonConfiguration) + .isEqualTo(details); } } --------------------------------------------------------------------- To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org For additional commands, e-mail: notifications-h...@james.apache.org