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 5b6c3e91e816533b4ab7dc574a4e701796ddedec Author: Benoit Tellier <btell...@linagora.com> AuthorDate: Wed Mar 6 10:16:18 2019 +0700 JAMES-2665 Add more tests for the vault feature --- .../integration/DeletedMessagesVaultTest.java | 62 ++++++++++++++++++++-- 1 file changed, 57 insertions(+), 5 deletions(-) diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/DeletedMessagesVaultTest.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/DeletedMessagesVaultTest.java index 9e035ab..f44247a 100644 --- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/DeletedMessagesVaultTest.java +++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/DeletedMessagesVaultTest.java @@ -29,6 +29,7 @@ import static org.apache.james.jmap.TestingConstants.ARGUMENTS; import static org.apache.james.jmap.TestingConstants.DOMAIN; import static org.apache.james.jmap.TestingConstants.calmlyAwait; import static org.apache.james.jmap.TestingConstants.jmapRequestSpecBuilder; +import static org.assertj.core.api.Assertions.assertThat; import static org.hamcrest.Matchers.hasItem; import static org.hamcrest.Matchers.is; @@ -47,7 +48,6 @@ import org.apache.james.utils.DataProbeImpl; import org.apache.james.utils.JmapGuiceProbe; import org.apache.james.utils.WebAdminGuiceProbe; import org.apache.james.webadmin.WebAdminUtils; -import org.apache.james.webadmin.routes.TasksRoutes; import org.awaitility.Duration; import org.awaitility.core.ConditionFactory; import org.junit.After; @@ -132,6 +132,52 @@ public abstract class DeletedMessagesVaultTest { .body(ARGUMENTS + ".list.subject", hasItem(SUBJECT)); } + @Test + public void restoreShouldNotImpactOtherUsers() { + bartSendMessageToHomer(); + WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1); + + homerDeletesMessages(listMessageIdsForAccount(homerAccessToken)); + WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 0); + + bartDeletesMessages(listMessageIdsForAccount(bartAccessToken)); + WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(bartAccessToken).size() == 0); + + restoreAllMessagesOfHomer(); + WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1); + + // No messages restored for bart + assertThat(listMessageIdsForAccount(bartAccessToken).size()).isEqualTo(0); + } + + @Test + public void restoredMessagesShouldNotBeRemovedFromTheVault() { + bartSendMessageToHomer(); + WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1); + + homerDeletesMessages(listMessageIdsForAccount(homerAccessToken)); + WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 0); + + restoreAllMessagesOfHomer(); + WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1); + + restoreAllMessagesOfHomer(); + WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 2); + } + + @Test + public void postShouldNotRestoreItemsWhenTheVaultIsEmpty() throws Exception { + bartSendMessageToHomer(); + WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1); + + restoreAllMessagesOfHomer(); + Thread.sleep(Duration.FIVE_SECONDS.getValueInMS()); + + // No additional had been restored as the vault is empty + assertThat(listMessageIdsForAccount(homerAccessToken).size()) + .isEqualTo(1); + } + private void bartSendMessageToHomer() { String messageCreationId = "creationId"; String outboxId = getOutboxId(bartAccessToken); @@ -165,12 +211,20 @@ public abstract class DeletedMessagesVaultTest { } private void homerDeletesMessages(List<String> idsToDestroy) { + deleteMessages(homerAccessToken, idsToDestroy); + } + + private void bartDeletesMessages(List<String> idsToDestroy) { + deleteMessages(bartAccessToken, idsToDestroy); + } + + private void deleteMessages(AccessToken accessToken, List<String> idsToDestroy) { String idString = idsToDestroy.stream() .map(id -> "\"" + id + "\"") .collect(Collectors.joining(",")); with() - .header("Authorization", homerAccessToken.serialize()) + .header("Authorization", accessToken.serialize()) .body("[[\"setMessages\", {\"destroy\": [" + idString + "]}, \"#0\"]]") .post("/jmap"); } @@ -182,9 +236,7 @@ public abstract class DeletedMessagesVaultTest { .get("taskId"); webAdminApi.given() - .basePath(TasksRoutes.BASE) - .when() - .get(taskId + "/await") + .get("/tasks/" + taskId + "/await") .then() .body("status", is("completed")); } --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org