JAMES-2188 Add integration test on appending a message in a not own mailbox


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

Branch: refs/heads/master
Commit: d479320ff076cc07b9114ea85645933306e3daa5
Parents: bb1eeec
Author: Antoine Duprat <adup...@linagora.com>
Authored: Mon Oct 16 15:33:35 2017 +0200
Committer: benwa <btell...@linagora.com>
Committed: Wed Oct 18 09:01:57 2017 +0700

----------------------------------------------------------------------
 .../integration/SetMessagesMethodTest.java      | 45 ++++++++++++++++++++
 1 file changed, 45 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/d479320f/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 1bc5731..23027ab 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
@@ -66,13 +66,16 @@ import org.apache.james.mailbox.MailboxListener;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.Attachment;
 import org.apache.james.mailbox.model.ComposedMessageId;
+import org.apache.james.mailbox.model.MailboxACL;
 import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mailbox.model.MessageResult;
 import org.apache.james.mailbox.store.event.EventFactory;
+import org.apache.james.mailbox.store.probe.ACLProbe;
 import org.apache.james.mailbox.store.probe.MailboxProbe;
+import org.apache.james.modules.ACLProbeImpl;
 import org.apache.james.modules.MailboxProbeImpl;
 import org.apache.james.probe.DataProbe;
 import org.apache.james.util.ZeroedInputStream;
@@ -134,6 +137,7 @@ public abstract class SetMessagesMethodTest {
     private MailboxProbe mailboxProbe;
     private DataProbe dataProbe;
     private MessageIdProbe messageProbe;
+    private ACLProbe aclProbe;
 
     @Before
     public void setup() throws Throwable {
@@ -142,6 +146,7 @@ public abstract class SetMessagesMethodTest {
         mailboxProbe = jmapServer.getProbe(MailboxProbeImpl.class);
         dataProbe = jmapServer.getProbe(DataProbeImpl.class);
         messageProbe = jmapServer.getProbe(MessageIdProbe.class);
+        aclProbe = jmapServer.getProbe(ACLProbeImpl.class);
 
         RestAssured.requestSpecification = new RequestSpecBuilder()
                 .setContentType(ContentType.JSON)
@@ -1165,6 +1170,46 @@ public abstract class SetMessagesMethodTest {
     }
 
     @Test
+    public void 
setMessagesShouldReturnErrorWhenUserIsNotTheOwnerOfOneOfTheMailboxes() throws 
Exception {
+        String alice = "alice@" + USERS_DOMAIN;
+        dataProbe.addUser(alice, "alicepassword");
+        MailboxId aliceOutbox = mailboxProbe.createMailbox("#private", alice, 
DefaultMailboxes.OUTBOX);
+
+        aclProbe.replaceRights(MailboxPath.forUser(alice, 
DefaultMailboxes.OUTBOX), USERNAME, MailboxACL.FULL_RIGHTS);
+
+        String messageCreationId = "creationId1337";
+        String fromAddress = USERNAME;
+        String requestBody = "[" +
+            "  [" +
+            "    \"setMessages\","+
+            "    {" +
+            "      \"create\": { \"" + messageCreationId  + "\" : {" +
+            "        \"from\": { \"name\": \"Me\", \"email\": \"" + 
fromAddress + "\"}," +
+            "        \"to\": [{ \"name\": \"BOB\", \"email\": 
\"some...@example.com\"}]," +
+            "        \"subject\": \"\"," +
+            "        \"mailboxIds\": [\"" + aliceOutbox.serialize() + "\", \"" 
+ getOutboxId(accessToken) + "\"]" +
+            "      }}" +
+            "    }," +
+            "    \"#0\"" +
+            "  ]" +
+            "]";
+
+        given()
+            .header("Authorization", accessToken.serialize())
+            .body(requestBody)
+       .when()
+            .post("/jmap")
+       .then()
+            .log().ifValidationFails()
+            .statusCode(200)
+            .body(NAME, equalTo("messagesSet"))
+            .body(NAME, equalTo("messagesSet"))
+            .body(ARGUMENTS + ".notCreated", hasKey(messageCreationId))
+            .body(ARGUMENTS + ".notCreated[\""+messageCreationId+"\"].type", 
equalTo("error"))
+            .body(ARGUMENTS + 
".notCreated[\""+messageCreationId+"\"].description", endsWith("MailboxId 
invalid"));
+    }
+
+    @Test
     public void 
setMessageWithCreatedMessageShouldReturnAnErrorWhenBothIsFlagAndKeywordsPresent()
 {
         String messageCreationId = "creationId1337";
         String fromAddress = USERNAME;


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

Reply via email to