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 0ca0becbcc86be8b144968647fc9e85dfcfa06d3 Author: Benoit Tellier <btell...@linagora.com> AuthorDate: Wed Mar 6 11:10:01 2019 +0700 JAMES-2665 DeletedMessageVault integration tests and sharing --- .../CassandraDeletedMessageVaultTest.java | 2 +- .../integration/DeletedMessagesVaultTest.java | 84 ++++++++++++++++++++-- .../memory/MemoryDeletedMessagesVaultTest.java | 2 +- .../rabbitmq/RabbitMQDeletedMessagesVaultTest.java | 2 +- 4 files changed, 82 insertions(+), 8 deletions(-) diff --git a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraDeletedMessageVaultTest.java b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraDeletedMessageVaultTest.java index 9381f3c..8c10c51 100644 --- a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraDeletedMessageVaultTest.java +++ b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraDeletedMessageVaultTest.java @@ -61,7 +61,7 @@ public class CassandraDeletedMessageVaultTest extends DeletedMessagesVaultTest { @Category(BasicFeature.class) @Override @Test - public void postShouldRestoreImapDeletedMailbox() { + public void vaultEndpointShouldRestoreImapDeletedMailbox() { } } 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 e986f8c..bfbba3f 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 @@ -60,6 +60,7 @@ import org.junit.Rule; import org.junit.Test; import org.junit.experimental.categories.Category; import org.junit.jupiter.api.Disabled; +import org.testcontainers.shaded.com.google.common.collect.ImmutableList; import com.google.common.base.Strings; @@ -122,7 +123,7 @@ public abstract class DeletedMessagesVaultTest { @Category(BasicFeature.class) @Test - public void postShouldRestoreJmapDeletedEmail() { + public void vaultEndpointShouldRestoreJmapDeletedEmail() { bartSendMessageToHomer(); WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1); @@ -146,7 +147,7 @@ public abstract class DeletedMessagesVaultTest { @Category(BasicFeature.class) @Test - public void postShouldRestoreImapDeletedEmail() throws Exception { + public void vaultEndpointShouldRestoreImapDeletedEmail() throws Exception { bartSendMessageToHomer(); WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1); @@ -176,7 +177,7 @@ public abstract class DeletedMessagesVaultTest { @Disabled("MAILBOX-379 PreDeletionHook are not yet triggered upon mailbox deletion") @Category(BasicFeature.class) @Test - public void postShouldRestoreImapDeletedMailbox() throws Exception { + public void vaultEndpointShouldRestoreImapDeletedMailbox() throws Exception { bartSendMessageToHomer(); WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1); @@ -276,7 +277,7 @@ public abstract class DeletedMessagesVaultTest { } @Test - public void postShouldNotRestoreItemsWhenTheVaultIsEmpty() throws Exception { + public void vaultEndpointShouldNotRestoreItemsWhenTheVaultIsEmpty() { bartSendMessageToHomer(); WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1); @@ -288,6 +289,75 @@ public abstract class DeletedMessagesVaultTest { .isEqualTo(1); } + @Test + public void vaultEndpointShouldNotRestoreMessageForSharee() { + bartSendMessageToHomer(); + WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1); + WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(bartAccessToken).size() == 1); + + String messageId = listMessageIdsForAccount(homerAccessToken).get(0); + homerMovesTheMailInAnotherMailbox(messageId); + + homerSharesHisMailboxWithBart(); + + bartDeletesMessages(ImmutableList.of(messageId)); + WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 0); + + restoreMessagesFor(BART); + + Thread.sleep(Duration.FIVE_SECONDS.getValueInMS()); + + // No additional had been restored for Bart as the vault is empty + assertThat(listMessageIdsForAccount(bartAccessToken).size()) + .isEqualTo(1); + } + + @Test + public void vaultEndpointShouldRestoreMessageForSharer() { + bartSendMessageToHomer(); + WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1); + + String messageId = listMessageIdsForAccount(homerAccessToken).get(0); + homerMovesTheMailInAnotherMailbox(messageId); + + homerSharesHisMailboxWithBart(); + + bartDeletesMessages(ImmutableList.of(messageId)); + WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 0); + + restoreAllMessagesOfHomer(); + WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1); + + String newMessageId = listMessageIdsForAccount(homerAccessToken).get(0); + given() + .header("Authorization", homerAccessToken.serialize()) + .body("[[\"getMessages\", {\"ids\": [\"" + newMessageId + "\"]}, \"#0\"]]") + .when() + .post("/jmap") + .then() + .statusCode(200) + .log().ifValidationFails() + .body(ARGUMENTS + ".list.subject", hasItem(SUBJECT)); + } + + private void homerSharesHisMailboxWithBart() { + with() + .header("Authorization", homerAccessToken.serialize()) + .body("[" + + " [ \"setMailboxes\"," + + " {" + + " \"update\": {" + + " \"" + otherMailboxId.serialize() + "\" : {" + + " \"sharedWith\" : {\"" + BART + "\": [\"a\", \"w\", \"r\"]}" + + " }" + + " }" + + " }," + + " \"#0\"" + + " ]" + + "]") + .post("/jmap"); + } + private void bartSendMessageToHomer() { String messageCreationId = "creationId"; String outboxId = getOutboxId(bartAccessToken); @@ -340,8 +410,12 @@ public abstract class DeletedMessagesVaultTest { } private void restoreAllMessagesOfHomer() { + restoreMessagesFor(HOMER); + } + + private void restoreMessagesFor(String user) { String taskId = webAdminApi.with() - .post("/deletedMessages/user/" + HOMER + "?action=restore") + .post("/deletedMessages/user/" + user + "?action=restore") .jsonPath() .get("taskId"); diff --git a/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/src/test/java/org/apache/james/jmap/memory/MemoryDeletedMessagesVaultTest.java b/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/src/test/java/org/apache/james/jmap/memory/MemoryDeletedMessagesVaultTest.java index df88db8..956d362 100644 --- a/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/src/test/java/org/apache/james/jmap/memory/MemoryDeletedMessagesVaultTest.java +++ b/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/src/test/java/org/apache/james/jmap/memory/MemoryDeletedMessagesVaultTest.java @@ -56,7 +56,7 @@ public class MemoryDeletedMessagesVaultTest extends DeletedMessagesVaultTest { @Category(BasicFeature.class) @Override @Test - public void postShouldRestoreImapDeletedMailbox() { + public void vaultEndpointShouldRestoreImapDeletedMailbox() { } } diff --git a/server/protocols/jmap-integration-testing/rabbitmq-jmap-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/RabbitMQDeletedMessagesVaultTest.java b/server/protocols/jmap-integration-testing/rabbitmq-jmap-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/RabbitMQDeletedMessagesVaultTest.java index 0527b86..f60b8d9 100644 --- a/server/protocols/jmap-integration-testing/rabbitmq-jmap-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/RabbitMQDeletedMessagesVaultTest.java +++ b/server/protocols/jmap-integration-testing/rabbitmq-jmap-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/RabbitMQDeletedMessagesVaultTest.java @@ -61,7 +61,7 @@ public class RabbitMQDeletedMessagesVaultTest extends DeletedMessagesVaultTest { @Category(BasicFeature.class) @Override @Test - public void postShouldRestoreImapDeletedMailbox() { + public void vaultEndpointShouldRestoreImapDeletedMailbox() { } --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org