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 47842a51dab5d9d8aad16520dd2624823f37f805 Author: Matthieu Baechler <[email protected]> AuthorDate: Tue Dec 3 17:20:51 2019 +0100 [JAMES-3001] use untilAsserted to have a decent message when a test fails --- .../methods/integration/SpamAssassinContract.java | 100 ++++++++++----------- 1 file changed, 47 insertions(+), 53 deletions(-) diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SpamAssassinContract.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SpamAssassinContract.java index 527f911..453526a 100644 --- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SpamAssassinContract.java +++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SpamAssassinContract.java @@ -39,12 +39,12 @@ import java.util.Map; import org.apache.james.GuiceJamesServer; import org.apache.james.core.Username; import org.apache.james.jmap.api.access.AccessToken; +import org.apache.james.jmap.draft.JmapGuiceProbe; import org.apache.james.mailbox.Role; import org.apache.james.modules.protocols.ImapGuiceProbe; import org.apache.james.spamassassin.SpamAssassinExtension; import org.apache.james.utils.DataProbeImpl; import org.apache.james.utils.IMAPMessageReader; -import org.apache.james.jmap.draft.JmapGuiceProbe; import org.awaitility.Duration; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; @@ -109,7 +109,7 @@ public interface SpamAssassinContract { .body(setMessageCreate(bobAccessToken)) .when() .post("/jmap"); - calmlyAwait.atMost(Duration.ONE_MINUTE).until(() -> areMessagesFoundInMailbox(aliceAccessToken, getInboxId(aliceAccessToken), 1)); + calmlyAwait.atMost(Duration.ONE_MINUTE).untilAsserted(() -> assertMessagesFoundInMailbox(aliceAccessToken, getInboxId(aliceAccessToken), 1)); // Alice is moving this message to Spam -> learning in SpamAssassin List<String> messageIds = with() @@ -134,7 +134,7 @@ public interface SpamAssassinContract { .statusCode(200) .body(NAME, equalTo("messagesSet")) .body(ARGUMENTS + ".updated", hasSize(1))); - calmlyAwait.atMost(Duration.ONE_MINUTE).until(() -> areMessagesFoundInMailbox(aliceAccessToken, getSpamId(aliceAccessToken), 1)); + calmlyAwait.atMost(Duration.ONE_MINUTE).untilAsserted(() -> assertMessagesFoundInMailbox(aliceAccessToken, getSpamId(aliceAccessToken), 1)); // Bob is sending again the same message to Alice given() @@ -144,7 +144,7 @@ public interface SpamAssassinContract { .post("/jmap"); // This message is delivered in Alice Spam mailbox (she now must have 2 messages in her Spam mailbox) - calmlyAwait.atMost(Duration.ONE_MINUTE).until(() -> areMessagesFoundInMailbox(aliceAccessToken, getSpamId(aliceAccessToken), 2)); + calmlyAwait.atMost(Duration.ONE_MINUTE).untilAsserted(() -> assertMessagesFoundInMailbox(aliceAccessToken, getSpamId(aliceAccessToken), 2)); } @Test @@ -160,7 +160,7 @@ public interface SpamAssassinContract { .body(setMessageCreate(bobAccessToken)) .when() .post("/jmap"); - calmlyAwait.atMost(Duration.ONE_MINUTE).until(() -> areMessagesFoundInMailbox(aliceAccessToken, getInboxId(aliceAccessToken), 1)); + calmlyAwait.atMost(Duration.ONE_MINUTE).untilAsserted(() -> assertMessagesFoundInMailbox(aliceAccessToken, getInboxId(aliceAccessToken), 1)); // Alice is moving this message to Spam -> learning in SpamAssassin with() @@ -182,7 +182,7 @@ public interface SpamAssassinContract { imapMessageReader.copyFirstMessage("Spam"); } - calmlyAwait.atMost(Duration.ONE_MINUTE).until(() -> areMessagesFoundInMailbox(aliceAccessToken, getSpamId(aliceAccessToken), 1)); + calmlyAwait.atMost(Duration.ONE_MINUTE).untilAsserted(() -> assertMessagesFoundInMailbox(aliceAccessToken, getSpamId(aliceAccessToken), 1)); // Bob is sending again the same message to Alice given() @@ -192,7 +192,7 @@ public interface SpamAssassinContract { .post("/jmap"); // This message is delivered in Alice Spam mailbox (she now must have 2 messages in her Spam mailbox) - calmlyAwait.atMost(Duration.ONE_MINUTE).until(() -> areMessagesFoundInMailbox(aliceAccessToken, getSpamId(aliceAccessToken), 2)); + calmlyAwait.atMost(Duration.ONE_MINUTE).untilAsserted(() -> assertMessagesFoundInMailbox(aliceAccessToken, getSpamId(aliceAccessToken), 2)); } @Test @@ -208,7 +208,7 @@ public interface SpamAssassinContract { .body(setMessageCreate(bobAccessToken)) .when() .post("/jmap"); - calmlyAwait.atMost(Duration.ONE_MINUTE).until(() -> areMessagesFoundInMailbox(aliceAccessToken, getInboxId(aliceAccessToken), 1)); + calmlyAwait.atMost(Duration.ONE_MINUTE).untilAsserted(() -> assertMessagesFoundInMailbox(aliceAccessToken, getInboxId(aliceAccessToken), 1)); // Alice is moving this message to Spam -> learning in SpamAssassin with() @@ -230,7 +230,7 @@ public interface SpamAssassinContract { imapMessageReader.moveFirstMessage("Spam"); } - calmlyAwait.atMost(Duration.ONE_MINUTE).until(() -> areMessagesFoundInMailbox(aliceAccessToken, getSpamId(aliceAccessToken), 1)); + calmlyAwait.atMost(Duration.ONE_MINUTE).untilAsserted(() -> assertMessagesFoundInMailbox(aliceAccessToken, getSpamId(aliceAccessToken), 1)); // Bob is sending again the same message to Alice given() @@ -240,7 +240,7 @@ public interface SpamAssassinContract { .post("/jmap"); // This message is delivered in Alice Spam mailbox (she now must have 2 messages in her Spam mailbox) - calmlyAwait.atMost(Duration.ONE_MINUTE).until(() -> areMessagesFoundInMailbox(aliceAccessToken, getSpamId(aliceAccessToken), 2)); + calmlyAwait.atMost(Duration.ONE_MINUTE).untilAsserted(() -> assertMessagesFoundInMailbox(aliceAccessToken, getSpamId(aliceAccessToken), 2)); } @Test @@ -256,7 +256,7 @@ public interface SpamAssassinContract { .body(setMessageCreate(bobAccessToken)) .when() .post("/jmap"); - calmlyAwait.atMost(Duration.ONE_MINUTE).until(() -> areMessagesFoundInMailbox(aliceAccessToken, getInboxId(aliceAccessToken), 1)); + calmlyAwait.atMost(Duration.ONE_MINUTE).untilAsserted(() -> assertMessagesFoundInMailbox(aliceAccessToken, getInboxId(aliceAccessToken), 1)); // Alice is moving this message to Spam -> learning in SpamAssassin List<String> messageIds = with() @@ -281,7 +281,7 @@ public interface SpamAssassinContract { .statusCode(200) .body(NAME, equalTo("messagesSet")) .body(ARGUMENTS + ".updated", hasSize(1))); - calmlyAwait.atMost(Duration.ONE_MINUTE).until(() -> areMessagesFoundInMailbox(aliceAccessToken, getSpamId(aliceAccessToken), 1)); + calmlyAwait.atMost(Duration.ONE_MINUTE).untilAsserted(() -> assertMessagesFoundInMailbox(aliceAccessToken, getSpamId(aliceAccessToken), 1)); // Alice is moving this message out of Spam -> forgetting in SpamAssassin messageIds @@ -294,7 +294,7 @@ public interface SpamAssassinContract { .statusCode(200) .body(NAME, equalTo("messagesSet")) .body(ARGUMENTS + ".updated", hasSize(1))); - calmlyAwait.atMost(Duration.ONE_MINUTE).until(() -> areMessagesFoundInMailbox(aliceAccessToken, getInboxId(aliceAccessToken), 1)); + calmlyAwait.atMost(Duration.ONE_MINUTE).untilAsserted(() -> assertMessagesFoundInMailbox(aliceAccessToken, getInboxId(aliceAccessToken), 1)); // Bob is sending again the same message to Alice given() @@ -304,7 +304,7 @@ public interface SpamAssassinContract { .post("/jmap"); // This message is delivered in Alice INBOX mailbox (she now must have 2 messages in her Inbox mailbox) - calmlyAwait.atMost(Duration.ONE_MINUTE).until(() -> areMessagesFoundInMailbox(aliceAccessToken, getInboxId(aliceAccessToken), 2)); + calmlyAwait.atMost(Duration.ONE_MINUTE).untilAsserted(() -> assertMessagesFoundInMailbox(aliceAccessToken, getInboxId(aliceAccessToken), 2)); } @Test @@ -320,7 +320,7 @@ public interface SpamAssassinContract { .body(setMessageCreate(bobAccessToken)) .when() .post("/jmap"); - calmlyAwait.atMost(Duration.ONE_MINUTE).until(() -> areMessagesFoundInMailbox(aliceAccessToken, getInboxId(aliceAccessToken), 1)); + calmlyAwait.atMost(Duration.ONE_MINUTE).untilAsserted(() -> assertMessagesFoundInMailbox(aliceAccessToken, getInboxId(aliceAccessToken), 1)); // Alice is moving this message to Spam -> learning in SpamAssassin List<String> messageIds = with() @@ -345,7 +345,7 @@ public interface SpamAssassinContract { .statusCode(200) .body(NAME, equalTo("messagesSet")) .body(ARGUMENTS + ".updated", hasSize(1))); - calmlyAwait.atMost(Duration.ONE_MINUTE).until(() -> areMessagesFoundInMailbox(aliceAccessToken, getSpamId(aliceAccessToken), 1)); + calmlyAwait.atMost(Duration.ONE_MINUTE).untilAsserted(() -> assertMessagesFoundInMailbox(aliceAccessToken, getSpamId(aliceAccessToken), 1)); // Alice is moving this message to trash messageIds @@ -358,7 +358,7 @@ public interface SpamAssassinContract { .statusCode(200) .body(NAME, equalTo("messagesSet")) .body(ARGUMENTS + ".updated", hasSize(1))); - calmlyAwait.atMost(Duration.ONE_MINUTE).until(() -> areMessagesFoundInMailbox(aliceAccessToken, getTrashId(aliceAccessToken), 1)); + calmlyAwait.atMost(Duration.ONE_MINUTE).untilAsserted(() -> assertMessagesFoundInMailbox(aliceAccessToken, getTrashId(aliceAccessToken), 1)); // Bob is sending again the same message to Alice given() @@ -368,7 +368,7 @@ public interface SpamAssassinContract { .post("/jmap"); // This message is delivered in Alice Spam mailbox (she now must have 1 messages in her Spam mailbox) - calmlyAwait.atMost(Duration.ONE_MINUTE).until(() -> areMessagesFoundInMailbox(aliceAccessToken, getSpamId(aliceAccessToken), 1)); + calmlyAwait.atMost(Duration.ONE_MINUTE).untilAsserted(() -> assertMessagesFoundInMailbox(aliceAccessToken, getSpamId(aliceAccessToken), 1)); } @Test @@ -384,7 +384,7 @@ public interface SpamAssassinContract { .body(setMessageCreate(bobAccessToken)) .when() .post("/jmap"); - calmlyAwait.atMost(Duration.ONE_MINUTE).until(() -> areMessagesFoundInMailbox(aliceAccessToken, getInboxId(aliceAccessToken), 1)); + calmlyAwait.atMost(Duration.ONE_MINUTE).untilAsserted(() -> assertMessagesFoundInMailbox(aliceAccessToken, getInboxId(aliceAccessToken), 1)); // Alice is moving this message to Spam -> learning in SpamAssassin List<String> messageIds = with() @@ -409,7 +409,7 @@ public interface SpamAssassinContract { .statusCode(200) .body(NAME, equalTo("messagesSet")) .body(ARGUMENTS + ".updated", hasSize(1))); - calmlyAwait.atMost(Duration.ONE_MINUTE).until(() -> areMessagesFoundInMailbox(aliceAccessToken, getSpamId(aliceAccessToken), 1)); + calmlyAwait.atMost(Duration.ONE_MINUTE).untilAsserted(() -> assertMessagesFoundInMailbox(aliceAccessToken, getSpamId(aliceAccessToken), 1)); // Alice is moving this message out of Spam -> forgetting in SpamAssassin try (IMAPMessageReader imapMessageReader = new IMAPMessageReader()) { @@ -419,7 +419,7 @@ public interface SpamAssassinContract { imapMessageReader.moveFirstMessage(IMAPMessageReader.INBOX); } - calmlyAwait.atMost(Duration.ONE_MINUTE).until(() -> areMessagesFoundInMailbox(aliceAccessToken, getInboxId(aliceAccessToken), 1)); + calmlyAwait.atMost(Duration.ONE_MINUTE).untilAsserted(() -> assertMessagesFoundInMailbox(aliceAccessToken, getInboxId(aliceAccessToken), 1)); // Bob is sending again the same message to Alice given() @@ -429,7 +429,7 @@ public interface SpamAssassinContract { .post("/jmap"); // This message is delivered in Alice INBOX mailbox (she now must have 2 messages in her Inbox mailbox) - calmlyAwait.atMost(Duration.ONE_MINUTE).until(() -> areMessagesFoundInMailbox(aliceAccessToken, getInboxId(aliceAccessToken), 2)); + calmlyAwait.atMost(Duration.ONE_MINUTE).untilAsserted(() -> assertMessagesFoundInMailbox(aliceAccessToken, getInboxId(aliceAccessToken), 2)); } @Test @@ -445,7 +445,7 @@ public interface SpamAssassinContract { .body(setMessageCreate(bobAccessToken)) .when() .post("/jmap"); - calmlyAwait.atMost(Duration.ONE_MINUTE).until(() -> areMessagesFoundInMailbox(aliceAccessToken, getInboxId(aliceAccessToken), 1)); + calmlyAwait.atMost(Duration.ONE_MINUTE).untilAsserted(() -> assertMessagesFoundInMailbox(aliceAccessToken, getInboxId(aliceAccessToken), 1)); // Alice is moving this message to Spam -> learning in SpamAssassin List<String> messageIds = with() @@ -470,7 +470,7 @@ public interface SpamAssassinContract { .statusCode(200) .body(NAME, equalTo("messagesSet")) .body(ARGUMENTS + ".updated", hasSize(1))); - calmlyAwait.atMost(Duration.ONE_MINUTE).until(() -> areMessagesFoundInMailbox(aliceAccessToken, getSpamId(aliceAccessToken), 1)); + calmlyAwait.atMost(Duration.ONE_MINUTE).untilAsserted(() -> assertMessagesFoundInMailbox(aliceAccessToken, getSpamId(aliceAccessToken), 1)); // Alice is deleting this message try (IMAPMessageReader imapMessageReader = new IMAPMessageReader()) { @@ -481,7 +481,7 @@ public interface SpamAssassinContract { imapMessageReader.setFlagsForAllMessagesInMailbox("\\Deleted"); imapMessageReader.expunge(); } - calmlyAwait.atMost(Duration.ONE_MINUTE).until(() -> areMessagesFoundInMailbox(aliceAccessToken, getSpamId(aliceAccessToken), 0)); + calmlyAwait.atMost(Duration.ONE_MINUTE).untilAsserted(() -> assertMessagesFoundInMailbox(aliceAccessToken, getSpamId(aliceAccessToken), 0)); // Bob is sending again the same message to Alice given() @@ -491,7 +491,7 @@ public interface SpamAssassinContract { .post("/jmap"); // This message is delivered in Alice SPAM mailbox (she now must have 1 messages in her Spam mailbox) - calmlyAwait.atMost(Duration.ONE_MINUTE).until(() -> areMessagesFoundInMailbox(aliceAccessToken, getSpamId(aliceAccessToken), 1)); + calmlyAwait.atMost(Duration.ONE_MINUTE).untilAsserted(() -> assertMessagesFoundInMailbox(aliceAccessToken, getSpamId(aliceAccessToken), 1)); } @Test @@ -507,7 +507,7 @@ public interface SpamAssassinContract { .body(setMessageCreate(bobAccessToken)) .when() .post("/jmap"); - calmlyAwait.atMost(Duration.ONE_MINUTE).until(() -> areMessagesFoundInMailbox(aliceAccessToken, getInboxId(aliceAccessToken), 1)); + calmlyAwait.atMost(Duration.ONE_MINUTE).untilAsserted(() -> assertMessagesFoundInMailbox(aliceAccessToken, getInboxId(aliceAccessToken), 1)); // Alice is moving this message to Spam -> learning in SpamAssassin List<String> messageIds = with() @@ -532,7 +532,7 @@ public interface SpamAssassinContract { .statusCode(200) .body(NAME, equalTo("messagesSet")) .body(ARGUMENTS + ".updated", hasSize(1))); - calmlyAwait.atMost(Duration.ONE_MINUTE).until(() -> areMessagesFoundInMailbox(aliceAccessToken, getSpamId(aliceAccessToken), 1)); + calmlyAwait.atMost(Duration.ONE_MINUTE).untilAsserted(() -> assertMessagesFoundInMailbox(aliceAccessToken, getSpamId(aliceAccessToken), 1)); // Alice is deleting this message messageIds @@ -545,7 +545,7 @@ public interface SpamAssassinContract { .statusCode(200) .body(NAME, equalTo("messagesSet")) .body(ARGUMENTS + ".destroyed", hasSize(1))); - calmlyAwait.atMost(Duration.ONE_MINUTE).until(() -> areMessagesFoundInMailbox(aliceAccessToken, getSpamId(aliceAccessToken), 0)); + calmlyAwait.atMost(Duration.ONE_MINUTE).untilAsserted(() -> assertMessagesFoundInMailbox(aliceAccessToken, getSpamId(aliceAccessToken), 0)); // Bob is sending again the same message to Alice given() @@ -555,7 +555,7 @@ public interface SpamAssassinContract { .post("/jmap"); // This message is delivered in Alice SPAM mailbox (she now must have 1 messages in her Spam mailbox) - calmlyAwait.atMost(Duration.ONE_MINUTE).until(() -> areMessagesFoundInMailbox(aliceAccessToken, getSpamId(aliceAccessToken), 1)); + calmlyAwait.atMost(Duration.ONE_MINUTE).untilAsserted(() -> assertMessagesFoundInMailbox(aliceAccessToken, getSpamId(aliceAccessToken), 1)); } default String setMessageCreate(AccessToken accessToken) { @@ -590,8 +590,8 @@ public interface SpamAssassinContract { .body(setMessageCreateToMultipleRecipients(bobAccessToken)) .when() .post("/jmap"); - calmlyAwait.atMost(Duration.ONE_MINUTE).until(() -> areMessagesFoundInMailbox(aliceAccessToken, getInboxId(aliceAccessToken), 1)); - calmlyAwait.atMost(Duration.ONE_MINUTE).until(() -> areMessagesFoundInMailbox(paulAccessToken, getInboxId(paulAccessToken), 1)); + calmlyAwait.atMost(Duration.ONE_MINUTE).untilAsserted(() -> assertMessagesFoundInMailbox(aliceAccessToken, getInboxId(aliceAccessToken), 1)); + calmlyAwait.atMost(Duration.ONE_MINUTE).untilAsserted(() -> assertMessagesFoundInMailbox(paulAccessToken, getInboxId(paulAccessToken), 1)); // Alice is moving this message to Spam -> learning in SpamAssassin List<String> messageIds = with() @@ -616,7 +616,7 @@ public interface SpamAssassinContract { .statusCode(200) .body(NAME, equalTo("messagesSet")) .body(ARGUMENTS + ".updated", hasSize(1))); - calmlyAwait.atMost(Duration.ONE_MINUTE).until(() -> areMessagesFoundInMailbox(aliceAccessToken, getSpamId(aliceAccessToken), 1)); + calmlyAwait.atMost(Duration.ONE_MINUTE).untilAsserted(() -> assertMessagesFoundInMailbox(aliceAccessToken, getSpamId(aliceAccessToken), 1)); // Bob is sending again the same message to Alice & Paul given() @@ -626,11 +626,11 @@ public interface SpamAssassinContract { .post("/jmap"); // This message is delivered in Alice Spam mailbox (she now must have 2 messages in her Spam mailbox) - calmlyAwait.atMost(Duration.ONE_MINUTE).until(() -> areMessagesFoundInMailbox(aliceAccessToken, getSpamId(aliceAccessToken), 2)); - calmlyAwait.atMost(Duration.ONE_MINUTE).until(() -> areMessagesFoundInMailbox(aliceAccessToken, getInboxId(aliceAccessToken), 0)); + calmlyAwait.atMost(Duration.ONE_MINUTE).untilAsserted(() -> assertMessagesFoundInMailbox(aliceAccessToken, getSpamId(aliceAccessToken), 2)); + calmlyAwait.atMost(Duration.ONE_MINUTE).untilAsserted(() -> assertMessagesFoundInMailbox(aliceAccessToken, getInboxId(aliceAccessToken), 0)); // This message is delivered in Paul Inbox (he now must have 2 messages in his Inbox) - calmlyAwait.atMost(Duration.ONE_MINUTE).until(() -> areMessagesFoundInMailbox(paulAccessToken, getInboxId(paulAccessToken), 2)); - calmlyAwait.atMost(Duration.ONE_MINUTE).until(() -> areMessagesFoundInMailbox(paulAccessToken, getSpamId(paulAccessToken), 0)); + calmlyAwait.atMost(Duration.ONE_MINUTE).untilAsserted(() -> assertMessagesFoundInMailbox(paulAccessToken, getInboxId(paulAccessToken), 2)); + calmlyAwait.atMost(Duration.ONE_MINUTE).untilAsserted(() -> assertMessagesFoundInMailbox(paulAccessToken, getSpamId(paulAccessToken), 0)); } default String setMessageCreateToMultipleRecipients(AccessToken accessToken) { @@ -652,22 +652,16 @@ public interface SpamAssassinContract { "]"; } - default boolean areMessagesFoundInMailbox(AccessToken accessToken, String mailboxId, int expectedNumberOfMessages) { - try { - with() - .header("Authorization", accessToken.serialize()) - .body("[[\"getMessageList\", {\"filter\":{\"inMailboxes\":[\"" + mailboxId + "\"]}}, \"#0\"]]") - .when() - .post("/jmap") - .then() - .statusCode(200) - .body(NAME, equalTo("messageList")) - .body(ARGUMENTS + ".messageIds", hasSize(expectedNumberOfMessages)); - return true; - - } catch (AssertionError e) { - return false; - } + default void assertMessagesFoundInMailbox(AccessToken accessToken, String mailboxId, int expectedNumberOfMessages) { + with() + .header("Authorization", accessToken.serialize()) + .body("[[\"getMessageList\", {\"filter\":{\"inMailboxes\":[\"" + mailboxId + "\"]}}, \"#0\"]]") + .when() + .post("/jmap") + .then() + .statusCode(200) + .body(NAME, equalTo("messageList")) + .body(ARGUMENTS + ".messageIds", hasSize(expectedNumberOfMessages)); } default String getMailboxId(AccessToken accessToken, Role role) { --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
