You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by bt...@apache.org on 2021/04/02 01:29:41 UTC

[james-project] 03/03: [Refactoring] DeletedMessageVaultIntegrationTest should use Await.untilAsserted

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 18d0359dfa79dd33c3d38ee1292cb21ec985fc9c
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Thu Apr 1 13:45:38 2021 +0700

    [Refactoring] DeletedMessageVaultIntegrationTest should use Await.untilAsserted
    
    Using Await.until do not carry over details (line number, error
    clause) in the test results, making CI results cryptic.
    
    Await.untilAsserted does.
---
 .../vault/DeletedMessageVaultIntegrationTest.java  | 152 ++++++++++-----------
 1 file changed, 76 insertions(+), 76 deletions(-)

diff --git a/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/vault/DeletedMessageVaultIntegrationTest.java b/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/vault/DeletedMessageVaultIntegrationTest.java
index 3ad9c36..b7f8995 100644
--- a/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/vault/DeletedMessageVaultIntegrationTest.java
+++ b/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/vault/DeletedMessageVaultIntegrationTest.java
@@ -96,7 +96,7 @@ public abstract class DeletedMessageVaultIntegrationTest {
         private UpdatableTickingClock clock;
 
         @Override
-        public void beforeEach(ExtensionContext extensionContext) throws Exception {
+        public void beforeEach(ExtensionContext extensionContext) {
             clock = new UpdatableTickingClock(NOW.toInstant());
         }
 
@@ -188,13 +188,13 @@ public abstract class DeletedMessageVaultIntegrationTest {
     @Test
     void vaultEndpointShouldRestoreJmapDeletedEmail() {
         bartSendMessageToHomer();
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(1));
 
         homerDeletesMessages(listMessageIdsForAccount(homerAccessToken));
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 0);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(0));
 
         restoreAllMessagesOfHomer();
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(1));
 
         String messageId = listMessageIdsForAccount(homerAccessToken).get(0);
         given()
@@ -212,7 +212,7 @@ public abstract class DeletedMessageVaultIntegrationTest {
     @Test
     void vaultEndpointShouldRestoreImapDeletedEmail(GuiceJamesServer jmapServer) throws Exception {
         bartSendMessageToHomer();
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(1));
 
         testIMAPClient.connect(LOCALHOST_IP, jmapServer.getProbe(ImapGuiceProbe.class).getImapPort())
             .login(HOMER, PASSWORD)
@@ -220,10 +220,10 @@ public abstract class DeletedMessageVaultIntegrationTest {
             .setFlagsForAllMessagesInMailbox("\\Deleted");
         testIMAPClient.expunge();
 
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 0);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(0));
 
         restoreAllMessagesOfHomer();
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(1));
 
         String messageId = listMessageIdsForAccount(homerAccessToken).get(0);
         given()
@@ -241,21 +241,21 @@ public abstract class DeletedMessageVaultIntegrationTest {
     @Test
     void vaultEndpointShouldRestoreImapDeletedMailbox(GuiceJamesServer jmapServer) throws Exception {
         bartSendMessageToHomer();
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(1));
 
         testIMAPClient.connect(LOCALHOST_IP, jmapServer.getProbe(ImapGuiceProbe.class).getImapPort())
             .login(HOMER, PASSWORD)
             .select(TestIMAPClient.INBOX);
 
         testIMAPClient.moveFirstMessage(MAILBOX_NAME);
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsInMailbox(homerAccessToken, otherMailboxId.serialize()).size() == 1);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsInMailbox(homerAccessToken, otherMailboxId.serialize())).hasSize(1));
 
         testIMAPClient.delete(MAILBOX_NAME);
 
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 0);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(0));
 
         restoreAllMessagesOfHomer();
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(1));
 
         String messageId = listMessageIdsForAccount(homerAccessToken).get(0);
         given()
@@ -272,13 +272,13 @@ public abstract class DeletedMessageVaultIntegrationTest {
     @Test
     void restoreShouldCreateRestoreMessagesMailbox() {
         bartSendMessageToHomer();
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(1));
 
         homerDeletesMessages(listMessageIdsForAccount(homerAccessToken));
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 0);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(0));
 
         restoreAllMessagesOfHomer();
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(1));
 
         assertThat(homerHasMailboxWithRole(Role.RESTORED_MESSAGES)).isTrue();
     }
@@ -287,11 +287,11 @@ public abstract class DeletedMessageVaultIntegrationTest {
     void postShouldRestoreMatchingMessages() {
         bartSendMessageToHomerWithSubject("aaaaa");
         bartSendMessageToHomerWithSubject("bbbbb");
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 2);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(2));
 
         homerDeletesMessages(listMessageIdsForAccount(homerAccessToken));
 
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 0);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(0));
 
         String query = "{" +
             "  \"combinator\": \"and\"," +
@@ -305,7 +305,7 @@ public abstract class DeletedMessageVaultIntegrationTest {
             "}";
         restoreMessagesForUserWithQuery(webAdminApi, HOMER, query);
 
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(1));
 
         String messageId = listMessageIdsForAccount(homerAccessToken).get(0);
         given()
@@ -323,11 +323,11 @@ public abstract class DeletedMessageVaultIntegrationTest {
     void postShouldNotRestoreWhenNoMatchingMessages() throws Exception {
         bartSendMessageToHomerWithSubject("aaaaa");
         bartSendMessageToHomerWithSubject("bbbbb");
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 2);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(2));
 
         homerDeletesMessages(listMessageIdsForAccount(homerAccessToken));
 
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 0);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(0));
 
         String query = "{" +
             "  \"combinator\": \"and\"," +
@@ -352,7 +352,7 @@ public abstract class DeletedMessageVaultIntegrationTest {
     @Test
     void imapMovedMessageShouldNotEndUpInTheVault(GuiceJamesServer jmapServer) throws Exception {
         bartSendMessageToHomer();
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(1));
 
         testIMAPClient.connect(LOCALHOST_IP, jmapServer.getProbe(ImapGuiceProbe.class).getImapPort())
             .login(HOMER, PASSWORD)
@@ -362,7 +362,7 @@ public abstract class DeletedMessageVaultIntegrationTest {
 
         //Moved messages should not be moved to the vault
         restoreAllMessagesOfHomer();
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(1));
 
 
         // No messages restored for bart
@@ -372,14 +372,14 @@ public abstract class DeletedMessageVaultIntegrationTest {
     @Test
     void jmapMovedMessageShouldNotEndUpInTheVault() {
         bartSendMessageToHomer();
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(1));
         String messageId = listMessageIdsForAccount(homerAccessToken).get(0);
 
         homerMovesTheMailInAnotherMailbox(messageId);
 
         //Moved messages should not be moved to the vault
         restoreAllMessagesOfHomer();
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(1));
 
 
         // No messages restored for bart
@@ -389,16 +389,16 @@ public abstract class DeletedMessageVaultIntegrationTest {
     @Test
     void restoreShouldNotImpactOtherUsers() {
         bartSendMessageToHomer();
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(1));
 
         homerDeletesMessages(listMessageIdsForAccount(homerAccessToken));
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 0);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(0));
 
         bartDeletesMessages(listMessageIdsForAccount(bartAccessToken));
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(bartAccessToken).size() == 0);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(bartAccessToken)).hasSize(0));
 
         restoreAllMessagesOfHomer();
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(1));
 
         // No messages restored for bart
         assertThat(listMessageIdsForAccount(bartAccessToken).size()).isEqualTo(0);
@@ -407,22 +407,22 @@ public abstract class DeletedMessageVaultIntegrationTest {
     @Test
     void restoredMessagesShouldNotBeRemovedFromTheVault() {
         bartSendMessageToHomer();
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(1));
 
         homerDeletesMessages(listMessageIdsForAccount(homerAccessToken));
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 0);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(0));
 
         restoreAllMessagesOfHomer();
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(1));
 
         restoreAllMessagesOfHomer();
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 2);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(2));
     }
 
     @Test
     void vaultEndpointShouldNotRestoreItemsWhenTheVaultIsEmpty() {
         bartSendMessageToHomer();
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(1));
 
         restoreAllMessagesOfHomer();
         awaitSearchUpToDate();
@@ -435,8 +435,8 @@ public abstract class DeletedMessageVaultIntegrationTest {
     @Test
     void vaultEndpointShouldNotRestoreMessageForSharee() {
         bartSendMessageToHomer();
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1);
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(bartAccessToken).size() == 1);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(1));
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(bartAccessToken)).hasSize(1));
 
         String messageId = listMessageIdsForAccount(homerAccessToken).get(0);
         homerMovesTheMailInAnotherMailbox(messageId);
@@ -444,7 +444,7 @@ public abstract class DeletedMessageVaultIntegrationTest {
         homerSharesHisMailboxWithBart();
 
         bartDeletesMessages(ImmutableList.of(messageId));
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 0);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(0));
 
         restoreMessagesFor(BART);
         awaitSearchUpToDate();
@@ -457,7 +457,7 @@ public abstract class DeletedMessageVaultIntegrationTest {
     @Test
     void vaultEndpointShouldRestoreMessageForSharer() {
         bartSendMessageToHomer();
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(1));
 
         String messageId = listMessageIdsForAccount(homerAccessToken).get(0);
         homerMovesTheMailInAnotherMailbox(messageId);
@@ -465,10 +465,10 @@ public abstract class DeletedMessageVaultIntegrationTest {
         homerSharesHisMailboxWithBart();
 
         bartDeletesMessages(ImmutableList.of(messageId));
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 0);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(0));
 
         restoreAllMessagesOfHomer();
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(1));
 
         String newMessageId = listMessageIdsForAccount(homerAccessToken).get(0);
         given()
@@ -486,11 +486,11 @@ public abstract class DeletedMessageVaultIntegrationTest {
     @Test
     void vaultExportShouldExportZipContainsVaultMessagesToShareeWhenJmapDeleteMessage() throws Exception {
         bartSendMessageToHomer();
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(1));
         String messageIdOfHomer = listMessageIdsForAccount(homerAccessToken).get(0);
 
         homerDeletesMessages(listMessageIdsForAccount(homerAccessToken));
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 0);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(0));
 
         String fileLocation = exportAndGetFileLocationFromLastMail(EXPORT_ALL_HOMER_MESSAGES_TO_BART, bartAccessToken);
 
@@ -504,7 +504,7 @@ public abstract class DeletedMessageVaultIntegrationTest {
     @Test
     void vaultExportShouldExportZipContainsVaultMessagesToShareeWhenImapDeleteMessage(GuiceJamesServer jmapServer) throws Exception {
         bartSendMessageToHomer();
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(1));
         String messageIdOfHomer = listMessageIdsForAccount(homerAccessToken).get(0);
 
         testIMAPClient.connect(LOCALHOST_IP, jmapServer.getProbe(ImapGuiceProbe.class).getImapPort())
@@ -513,7 +513,7 @@ public abstract class DeletedMessageVaultIntegrationTest {
             .setFlagsForAllMessagesInMailbox("\\Deleted");
         testIMAPClient.expunge();
 
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 0);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(0));
 
         String fileLocation = exportAndGetFileLocationFromLastMail(EXPORT_ALL_HOMER_MESSAGES_TO_BART, bartAccessToken);
 
@@ -527,7 +527,7 @@ public abstract class DeletedMessageVaultIntegrationTest {
     @Test
     public void vaultExportShouldExportZipContainsVaultMessagesToShareeWhenImapDeletedMailbox(GuiceJamesServer jmapServer) throws Exception {
         bartSendMessageToHomer();
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(1));
         String messageIdOfHomer = listMessageIdsForAccount(homerAccessToken).get(0);
 
         testIMAPClient.connect(LOCALHOST_IP, jmapServer.getProbe(ImapGuiceProbe.class).getImapPort())
@@ -538,7 +538,7 @@ public abstract class DeletedMessageVaultIntegrationTest {
 
         testIMAPClient.delete(MAILBOX_NAME);
 
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 0);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(0));
 
         String fileLocation = exportAndGetFileLocationFromLastMail(EXPORT_ALL_HOMER_MESSAGES_TO_BART, bartAccessToken);
 
@@ -551,14 +551,14 @@ public abstract class DeletedMessageVaultIntegrationTest {
     @Test
     void vaultExportShouldExportZipContainsOnlyMatchedMessages() throws Exception {
         bartSendMessageToHomerWithSubject(FIRST_SUBJECT);
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(1));
         String firstMessageIdOfHomer = listMessageIdsForAccount(homerAccessToken).get(0);
 
         bartSendMessageToHomerWithSubject(SECOND_SUBJECT);
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 2);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(2));
 
         homerDeletesMessages(listMessageIdsForAccount(homerAccessToken));
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 0);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(0));
 
         ExportRequest exportRequest = ExportRequest
             .userExportFrom(HOMER)
@@ -579,10 +579,10 @@ public abstract class DeletedMessageVaultIntegrationTest {
     void vaultExportShouldExportEmptyZipWhenQueryDoesntMatch() throws Exception {
         bartSendMessageToHomerWithSubject(FIRST_SUBJECT);
         bartSendMessageToHomerWithSubject(SECOND_SUBJECT);
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 2);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(2));
 
         homerDeletesMessages(listMessageIdsForAccount(homerAccessToken));
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 0);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(0));
 
         ExportRequest exportRequest = ExportRequest
             .userExportFrom(HOMER)
@@ -611,10 +611,10 @@ public abstract class DeletedMessageVaultIntegrationTest {
     @Test
     void vaultExportShouldResponseIdempotentSideEffect() throws Exception {
         bartSendMessageToHomer();
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(1));
 
         homerDeletesMessages(listMessageIdsForAccount(homerAccessToken));
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 0);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(0));
 
         String fileLocationFirstExport = exportAndGetFileLocationFromLastMail(EXPORT_ALL_HOMER_MESSAGES_TO_BART, bartAccessToken);
         String fileLocationSecondExport = exportAndGetFileLocationFromLastMail(EXPORT_ALL_HOMER_MESSAGES_TO_BART, bartAccessToken);
@@ -629,10 +629,10 @@ public abstract class DeletedMessageVaultIntegrationTest {
         bartSendMessageToHomer();
         bartSendMessageToHomer();
         bartSendMessageToHomer();
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 3);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(3));
 
         homerDeletesMessages(listMessageIdsForAccount(homerAccessToken));
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 0);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(0));
 
         clock.setInstant(TWO_MONTH_AFTER_ONE_YEAR_EXPIRATION.toInstant());
         purgeVault(webAdminApi);
@@ -646,19 +646,19 @@ public abstract class DeletedMessageVaultIntegrationTest {
     @Test
     void vaultPurgeShouldMakeExportProduceAZipWhenOneMessageIsNotExpired(UpdatableTickingClock clock) throws Exception {
         bartSendMessageToHomer();
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(1));
 
         homerDeletesMessages(listMessageIdsForAccount(homerAccessToken));
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 0);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(0));
 
         bartSendMessageToHomer();
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(1));
 
         String messageIdOfNotExpiredMessage = listMessageIdsForAccount(homerAccessToken).get(0);
 
         clock.setInstant(TWO_MONTH_AFTER_ONE_YEAR_EXPIRATION.toInstant());
         homerDeletesMessages(listMessageIdsForAccount(homerAccessToken));
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 0);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(0));
 
         purgeVault(webAdminApi);
 
@@ -674,10 +674,10 @@ public abstract class DeletedMessageVaultIntegrationTest {
         bartSendMessageToHomer();
         bartSendMessageToHomer();
         bartSendMessageToHomer();
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 3);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(3));
 
         homerDeletesMessages(listMessageIdsForAccount(homerAccessToken));
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 0);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(0));
 
         purgeVault(webAdminApi);
 
@@ -690,10 +690,10 @@ public abstract class DeletedMessageVaultIntegrationTest {
     @Test
     void vaultPurgeShouldNotAppendMessageToTheUserMailbox(UpdatableTickingClock clock) {
         bartSendMessageToHomer();
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(1));
 
         homerDeletesMessages(listMessageIdsForAccount(homerAccessToken));
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 0);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(0));
 
         clock.setInstant(TWO_MONTH_AFTER_ONE_YEAR_EXPIRATION.toInstant());
         purgeVault(webAdminApi);
@@ -705,12 +705,12 @@ public abstract class DeletedMessageVaultIntegrationTest {
     @Test
     void vaultDeleteShouldDeleteMessageThenExportWithNoEntry() throws Exception {
         bartSendMessageToHomer();
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(1));
 
         String messageIdOfHomer = listMessageIdsForAccount(homerAccessToken).get(0);
 
         homerDeletesMessages(listMessageIdsForAccount(homerAccessToken));
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 0);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(0));
 
         deleteFromVault(webAdminApi, HOMER, messageIdOfHomer);
 
@@ -723,7 +723,7 @@ public abstract class DeletedMessageVaultIntegrationTest {
     @Test
     void vaultDeleteShouldNotDeleteEmptyVaultThenExportNoEntry() throws Exception {
         bartSendMessageToHomer();
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(1));
 
         String messageIdOfHomer = listMessageIdsForAccount(homerAccessToken).get(0);
 
@@ -738,14 +738,14 @@ public abstract class DeletedMessageVaultIntegrationTest {
     @Test
     void vaultDeleteShouldNotDeleteNotMatchedMessageInVaultThenExportAnEntry() throws Exception {
         bartSendMessageToHomer();
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(1));
         String messageIdOfHomer = listMessageIdsForAccount(homerAccessToken).get(0);
 
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(bartAccessToken).size() == 1);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(bartAccessToken)).hasSize(1));
         String messageIdOfBart = listMessageIdsForAccount(bartAccessToken).get(0);
 
         homerDeletesMessages(listMessageIdsForAccount(homerAccessToken));
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 0);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(0));
 
         deleteFromVault(webAdminApi, HOMER, messageIdOfBart);
 
@@ -759,12 +759,12 @@ public abstract class DeletedMessageVaultIntegrationTest {
     @Test
     void vaultDeleteShouldNotAppendMessageToTheUserMailbox() {
         bartSendMessageToHomer();
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(1));
 
         String messageIdOfHomer = listMessageIdsForAccount(homerAccessToken).get(0);
 
         homerDeletesMessages(listMessageIdsForAccount(homerAccessToken));
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 0);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(0));
 
         deleteFromVault(webAdminApi, HOMER, messageIdOfHomer);
 
@@ -775,16 +775,16 @@ public abstract class DeletedMessageVaultIntegrationTest {
     @Test
     void vaultDeleteShouldDeleteAllMessagesHavingSameBlobContent() throws Exception {
         bartSendMessageToHomerAndJack();
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(1));
 
         String homerInboxMessageId = listMessageIdsForAccount(homerAccessToken).get(0);
         homerDeletesMessages(ImmutableList.of(homerInboxMessageId));
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 0);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(0));
 
         // the message same with homer's one in inbox
         String jackInboxMessageId = listMessageIdsForAccount(jackAccessToken).get(0);
         jackDeletesMessages(ImmutableList.of(jackInboxMessageId));
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(jackAccessToken).size() == 0);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(jackAccessToken)).hasSize(0));
 
         // delete from homer's vault, expecting the message contains the same blob in jack's vault will be deleted
         deleteFromVault(webAdminApi, HOMER, homerInboxMessageId);
@@ -798,18 +798,18 @@ public abstract class DeletedMessageVaultIntegrationTest {
     @Test
     void vaultDeleteShouldNotDeleteAllMessagesHavingSameBlobContentWhenMessageNotDeletedWithinTheSameMonth(UpdatableTickingClock clock) throws Exception {
         bartSendMessageToHomerAndJack();
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(1));
 
         String homerInboxMessageId = listMessageIdsForAccount(homerAccessToken).get(0);
         homerDeletesMessages(ImmutableList.of(homerInboxMessageId));
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 0);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(homerAccessToken)).hasSize(0));
 
         // one year later, delete jack's message
         clock.setInstant(NOW.plusYears(1).toInstant());
         // the message same with homer's one in inbox
         String jackInboxMessageId = listMessageIdsForAccount(jackAccessToken).get(0);
         jackDeletesMessages(ImmutableList.of(jackInboxMessageId));
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(jackAccessToken).size() == 0);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(jackAccessToken)).hasSize(0));
 
         // delete from homer's vault, expecting jack's vault still be intact
         deleteFromVault(webAdminApi, HOMER, homerInboxMessageId);
@@ -825,7 +825,7 @@ public abstract class DeletedMessageVaultIntegrationTest {
         int currentNumberOfMessages = listMessageIdsForAccount(shareeAccessToken).size();
         exportVaultContent(webAdminApi, exportRequest);
 
-        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(shareeAccessToken).size() == currentNumberOfMessages + 1);
+        WAIT_TWO_MINUTES.untilAsserted(() -> assertThat(listMessageIdsForAccount(shareeAccessToken)).hasSize(currentNumberOfMessages + 1));
         String exportingMessageId = getLatestMessageId(shareeAccessToken, Role.INBOX);
 
         return exportedFileLocationFromMailHeader(exportingMessageId, shareeAccessToken);

---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org