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