You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2019/03/12 03:19:48 UTC

[james-project] 10/15: JAMES-2665 Moved messages should not end up in the vault

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 88102e590dc31b573983ddbb8f5b0117e660d796
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Wed Mar 6 10:43:24 2019 +0700

    JAMES-2665 Moved messages should not end up in the vault
---
 .../integration/DeletedMessagesVaultTest.java      | 61 +++++++++++++++++++++-
 1 file changed, 60 insertions(+), 1 deletion(-)

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 3620607..e986f8c 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
@@ -42,6 +42,7 @@ import org.apache.james.GuiceJamesServer;
 import org.apache.james.jmap.api.access.AccessToken;
 import org.apache.james.jmap.categories.BasicFeature;
 import org.apache.james.mailbox.DefaultMailboxes;
+import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.probe.MailboxProbe;
 import org.apache.james.modules.MailboxProbeImpl;
 import org.apache.james.modules.protocols.ImapGuiceProbe;
@@ -74,6 +75,7 @@ public abstract class DeletedMessagesVaultTest {
     private static final ConditionFactory WAIT_TWO_MINUTES = calmlyAwait.atMost(Duration.TWO_MINUTES);
     private static final String SUBJECT = "This mail will be restored from the vault!!";
     private static final String MAILBOX_NAME = "toBeDeleted";
+    private MailboxId otherMailboxId;
 
     protected abstract GuiceJamesServer createJmapServer() throws IOException;
 
@@ -101,7 +103,7 @@ public abstract class DeletedMessagesVaultTest {
         dataProbe.addUser(HOMER, PASSWORD);
         dataProbe.addUser(BART, BOB_PASSWORD);
         mailboxProbe.createMailbox("#private", HOMER, DefaultMailboxes.INBOX);
-        mailboxProbe.createMailbox("#private", HOMER, MAILBOX_NAME);
+        otherMailboxId = mailboxProbe.createMailbox("#private", HOMER, MAILBOX_NAME);
         homerAccessToken = authenticateJamesUser(baseUri(jmapServer), HOMER, PASSWORD);
         bartAccessToken = authenticateJamesUser(baseUri(jmapServer), BART, BOB_PASSWORD);
 
@@ -204,6 +206,43 @@ public abstract class DeletedMessagesVaultTest {
     }
 
     @Test
+    public void imapMovedMessageShouldNotEndUpInTheVault() throws Exception {
+        bartSendMessageToHomer();
+        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1);
+
+        imapMessageReader.connect(LOCALHOST_IP, jmapServer.getProbe(ImapGuiceProbe.class).getImapPort())
+            .login(HOMER, PASSWORD)
+            .select(IMAPMessageReader.INBOX);
+
+        imapMessageReader.moveFirstMessage(MAILBOX_NAME);
+
+        //Moved messages should not be moved to the vault
+        restoreAllMessagesOfHomer();
+        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1);
+
+
+        // No messages restored for bart
+        assertThat(listMessageIdsForAccount(bartAccessToken).size()).isEqualTo(1);
+    }
+
+    @Test
+    public void jmapMovedMessageShouldNotEndUpInTheVault() {
+        bartSendMessageToHomer();
+        WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 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);
+
+
+        // No messages restored for bart
+        assertThat(listMessageIdsForAccount(bartAccessToken).size()).isEqualTo(1);
+    }
+
+    @Test
     public void restoreShouldNotImpactOtherUsers() {
         bartSendMessageToHomer();
         WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1);
@@ -311,4 +350,24 @@ public abstract class DeletedMessagesVaultTest {
             .then()
             .body("status", is("completed"));
     }
+
+    private void homerMovesTheMailInAnotherMailbox(String messageId) {
+        String updateRequestBody = "[" +
+            "  [" +
+            "    \"setMessages\"," +
+            "    {" +
+            "      \"update\": { \"" + messageId  + "\" : {" +
+            "        \"mailboxIds\": [\"" + otherMailboxId.serialize() + "\"]" +
+            "      }}" +
+            "    }," +
+            "    \"#0\"" +
+            "  ]" +
+            "]";
+
+        given()
+            .header("Authorization", bartAccessToken.serialize())
+            .body(updateRequestBody)
+            .when()
+            .post("/jmap");
+    }
 }


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