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 ad...@apache.org on 2017/01/24 15:33:16 UTC

[1/2] james-project git commit: JAMES-1919 Move should not fail when user has no Trash folder

Repository: james-project
Updated Branches:
  refs/heads/master 129480e17 -> f2d4d61bf


JAMES-1919 Move should not fail when user has no Trash folder


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/1b6020ef
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/1b6020ef
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/1b6020ef

Branch: refs/heads/master
Commit: 1b6020ef134fa485228879a4cce63e80145327ec
Parents: 9ff71bd
Author: Raphael Ouazana <ra...@linagora.com>
Authored: Tue Jan 24 15:00:54 2017 +0100
Committer: Raphael Ouazana <ra...@linagora.com>
Committed: Tue Jan 24 15:00:54 2017 +0100

----------------------------------------------------------------------
 .../integration/SetMessagesMethodTest.java      | 46 ++++++++++++++++++++
 .../methods/SetMessagesUpdateProcessor.java     | 12 +++--
 2 files changed, 55 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/1b6020ef/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
index caf57a2..671f299 100644
--- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
@@ -1716,6 +1716,52 @@ public abstract class SetMessagesMethodTest {
             .body(firstMessage + ".mailboxIds", contains(heartFolderId));
     }
 
+
+    @Test
+    public void mailboxIdsShouldBeInDestinationWhenUsingForMoveWithoutTrashFolder() throws Exception {
+        jmapServer.serverProbe().deleteMailbox("#private", USERNAME, "trash");
+        String newMailboxName = "heartFolder";
+        jmapServer.serverProbe().createMailbox("#private", USERNAME, newMailboxName);
+        Mailbox heartFolder = jmapServer.serverProbe().getMailbox("#private", USERNAME, newMailboxName);
+        String heartFolderId = heartFolder.getMailboxId().serialize();
+
+        ZonedDateTime dateTime = ZonedDateTime.parse("2014-10-30T14:12:00Z");
+        ComposedMessageId message = jmapServer.serverProbe().appendMessage(USERNAME, new MailboxPath("#private", USERNAME, "inbox"),
+            new ByteArrayInputStream("Subject: my test subject\r\n\r\ntestmail".getBytes(Charsets.UTF_8)), Date.from(dateTime.toInstant()), false, new Flags());
+
+        String messageToMoveId = message.getMessageId().serialize();
+        String requestBody = "[" +
+            "  [" +
+            "    \"setMessages\","+
+            "    {" +
+            "      \"update\": { \"" + messageToMoveId + "\" : {" +
+            "        \"mailboxIds\": [\"" + heartFolderId + "\"]" +
+            "      }}" +
+            "    }," +
+            "    \"#0\"" +
+            "  ]" +
+            "]";
+
+        given()
+            .header("Authorization", accessToken.serialize())
+            .body(requestBody)
+        .when()
+            .post("/jmap");
+
+        String firstMessage = ARGUMENTS + ".list[0]";
+        given()
+            .header("Authorization", accessToken.serialize())
+            .body("[[\"getMessages\", {\"ids\": [\"" + messageToMoveId + "\"]}, \"#0\"]]")
+        .when()
+            .post("/jmap")
+        .then()
+            .statusCode(200)
+            .log().ifValidationFails()
+            .body(NAME, equalTo("messages"))
+            .body(ARGUMENTS + ".list", hasSize(1))
+            .body(firstMessage + ".mailboxIds", contains(heartFolderId));
+    }
+
     @Test
     public void mailboxIdsShouldNotBeAnymoreInSourceWhenUsingForMove() throws Exception {
         String newMailboxName = "heartFolder";

http://git-wip-us.apache.org/repos/asf/james-project/blob/1b6020ef/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesUpdateProcessor.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesUpdateProcessor.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesUpdateProcessor.java
index 5ceaba0..aaae397 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesUpdateProcessor.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesUpdateProcessor.java
@@ -29,6 +29,7 @@ import javax.inject.Inject;
 import javax.mail.Flags;
 
 import org.apache.commons.lang.NotImplementedException;
+import org.apache.james.jmap.exceptions.MailboxRoleNotFoundException;
 import org.apache.james.jmap.model.MessageProperties;
 import org.apache.james.jmap.model.SetError;
 import org.apache.james.jmap.model.SetMessagesRequest;
@@ -141,9 +142,14 @@ public class SetMessagesUpdateProcessor implements SetMessagesProcessor {
     }
 
     private boolean isMoveToTrash(MailboxSession mailboxSession, List<MailboxId> mailboxIds) throws MailboxException {
-        return mailboxIds.size() == 1
-            && mailboxIds.get(0)
-                .equals(systemMailboxesProvider.findMailbox(Role.TRASH, mailboxSession).getId());
+        try {
+            return mailboxIds.size() == 1
+                && mailboxIds.get(0)
+                    .equals(systemMailboxesProvider.findMailbox(Role.TRASH, mailboxSession).getId());
+        } catch (MailboxRoleNotFoundException e) {
+            LOGGER.debug("Unable to find Trash mailbox for user: " + mailboxSession.getUser().getUserName(), e);
+            return false;
+        }
     }
 
     private void addMessageIdNotFoundToResponse(MessageId messageId, SetMessagesResponse.Builder builder) {


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


[2/2] james-project git commit: Merge remote-tracking branch 'rouazana/JAMES-1919'

Posted by ad...@apache.org.
Merge remote-tracking branch 'rouazana/JAMES-1919'


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/f2d4d61b
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/f2d4d61b
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/f2d4d61b

Branch: refs/heads/master
Commit: f2d4d61bfa2627ec6d8b364b4ae5f91b6e52166d
Parents: 129480e 1b6020e
Author: Antoine Duprat <ad...@linagora.com>
Authored: Tue Jan 24 16:32:49 2017 +0100
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Tue Jan 24 16:32:49 2017 +0100

----------------------------------------------------------------------
 .../integration/SetMessagesMethodTest.java      | 46 ++++++++++++++++++++
 .../methods/SetMessagesUpdateProcessor.java     | 12 +++--
 2 files changed, 55 insertions(+), 3 deletions(-)
----------------------------------------------------------------------



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