JAMES-1869 Integration testing with Cassandra should be error with long mailbox name
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/49361c21 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/49361c21 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/49361c21 Branch: refs/heads/master Commit: 49361c215f74114cb73afb36d3453ec5ad4ca359 Parents: d4fb7f8 Author: Quynh Nguyen <[email protected]> Authored: Tue Jan 24 13:44:58 2017 +0700 Committer: Antoine Duprat <[email protected]> Committed: Thu Jan 26 13:00:54 2017 +0100 ---------------------------------------------------------------------- .../CassandraSetMailboxesMethodTest.java | 11 ++ .../integration/SetMailboxesMethodTest.java | 193 ++++++++++++------- 2 files changed, 138 insertions(+), 66 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/49361c21/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraSetMailboxesMethodTest.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraSetMailboxesMethodTest.java b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraSetMailboxesMethodTest.java index 02e5333..7aea5d8 100644 --- a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraSetMailboxesMethodTest.java +++ b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraSetMailboxesMethodTest.java @@ -22,6 +22,7 @@ package org.apache.james.jmap.cassandra; import org.apache.james.CassandraJmapTestRule; import org.apache.james.JmapJamesServer; import org.apache.james.jmap.methods.integration.SetMailboxesMethodTest; +import org.junit.Ignore; import org.junit.Rule; public class CassandraSetMailboxesMethodTest extends SetMailboxesMethodTest { @@ -38,4 +39,14 @@ public class CassandraSetMailboxesMethodTest extends SetMailboxesMethodTest { protected void await() { rule.await(); } + + @Ignore + @Override + public void setMailboxesShouldCreateWhenOverLimitName() throws Exception { + } + + @Ignore + @Override + public void setMailboxesShouldUpdateMailboxWhenOverLimitName() throws Exception { + } } http://git-wip-us.apache.org/repos/asf/james-project/blob/49361c21/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMailboxesMethodTest.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMailboxesMethodTest.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMailboxesMethodTest.java index 426ce55..dc543f5 100644 --- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMailboxesMethodTest.java +++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMailboxesMethodTest.java @@ -59,6 +59,7 @@ public abstract class SetMailboxesMethodTest { private static final String NAME = "[0][0]"; private static final String ARGUMENTS = "[0][1]"; private static final String USERS_DOMAIN = "domain.tld"; + private static int MAILBOX_NAME_LENGTH_64K = 65536; protected abstract JmapJamesServer createJmapServer(); @@ -98,6 +99,132 @@ public abstract class SetMailboxesMethodTest { } @Test + public void setMailboxesShouldNotCreateWhenOverLimitName() { + String overLimitName = StringUtils.repeat("a", MAILBOX_NAME_LENGTH_64K); + String requestBody = + "[" + + " [ \"setMailboxes\"," + + " {" + + " \"create\": {" + + " \"create-id01\" : {" + + " \"name\" : \"" + overLimitName + "\"" + + " }" + + " }" + + " }," + + " \"#0\"" + + " ]" + + "]"; + + given() + .header("Authorization", this.accessToken.serialize()) + .body(requestBody) + .when() + .post("/jmap") + .then() + .statusCode(200) + .body(NAME, equalTo("mailboxesSet")) + .body(ARGUMENTS + ".notCreated", aMapWithSize(1)) + .body(ARGUMENTS + ".notCreated", hasEntry(equalTo("create-id01"), Matchers.allOf( + hasEntry(equalTo("type"), equalTo("invalidArguments")), + hasEntry(equalTo("description"), equalTo("The mailbox name length is too long"))) + )); + } + + @Test + public void setMailboxesShouldNotUpdateMailboxWhenOverLimitName() { + String overLimitName = StringUtils.repeat("a", MAILBOX_NAME_LENGTH_64K); + jmapServer.serverProbe().createMailbox("#private", username, "myBox"); + Mailbox mailbox = jmapServer.serverProbe().getMailbox("#private", username, "myBox"); + String mailboxId = mailbox.getMailboxId().serialize(); + String requestBody = + "[" + + " [ \"setMailboxes\"," + + " {" + + " \"update\": {" + + " \"" + mailboxId + "\" : {" + + " \"name\" : \"" + overLimitName + "\"" + + " }" + + " }" + + " }," + + " \"#0\"" + + " ]" + + "]"; + given() + .header("Authorization", this.accessToken.serialize()) + .body(requestBody) + .when() + .post("/jmap") + .then() + .statusCode(200) + .body(NAME, equalTo("mailboxesSet")) + .body(ARGUMENTS + ".notUpdated", aMapWithSize(1)) + .body(ARGUMENTS + ".notUpdated", hasEntry(equalTo(mailboxId), Matchers.allOf( + hasEntry(equalTo("type"), equalTo("invalidArguments")), + hasEntry(equalTo("description"), equalTo("The mailbox name length is too long"))) + )); + } + + @Test + public void setMailboxesShouldCreateWhenOverLimitName() throws Exception { + String overLimitName = StringUtils.repeat("a", MAILBOX_NAME_LENGTH_64K); + String requestBody = + "[" + + " [ \"setMailboxes\"," + + " {" + + " \"create\": {" + + " \"create-id01\" : {" + + " \"name\" : \"" + overLimitName + "\"" + + " }" + + " }" + + " }," + + " \"#0\"" + + " ]" + + "]"; + + given() + .header("Authorization", this.accessToken.serialize()) + .body(requestBody) + .when() + .post("/jmap") + .then() + .statusCode(200) + .body(NAME, equalTo("mailboxesSet")) + .body(ARGUMENTS + ".created", hasKey("create-id01")); + } + + @Test + public void setMailboxesShouldUpdateMailboxWhenOverLimitName() throws Exception { + String overLimitName = StringUtils.repeat("a", MAILBOX_NAME_LENGTH_64K); + jmapServer.serverProbe().createMailbox("#private", username, "myBox"); + Mailbox mailbox = jmapServer.serverProbe().getMailbox("#private", username, "myBox"); + String mailboxId = mailbox.getMailboxId().serialize(); + String requestBody = + "[" + + " [ \"setMailboxes\"," + + " {" + + " \"update\": {" + + " \"" + mailboxId + "\" : {" + + " \"name\" : \"" + overLimitName + "\"" + + " }" + + " }" + + " }," + + " \"#0\"" + + " ]" + + "]"; + given() + .header("Authorization", this.accessToken.serialize()) + .body(requestBody) + .when() + .post("/jmap") + .then() + .statusCode(200) + .body(NAME, equalTo("mailboxesSet")) + .body(ARGUMENTS + ".updated", contains(mailboxId)); + + assertThat(jmapServer.serverProbe().listSubscriptions(username)).containsOnly(overLimitName); + } + + @Test public void userShouldBeSubscribedOnCreatedMailboxWhenCreateMailbox() throws Exception{ String requestBody = "[" + @@ -318,72 +445,6 @@ public abstract class SetMailboxesMethodTest { } @Test - public void setMailboxesShouldNotCreateWhenOverLimitName() { - String overLimitName = StringUtils.repeat("a", MailboxConstants.DEFAULT_LIMIT_MAILBOX_NAME_LENGTH); - String requestBody = - "[" + - " [ \"setMailboxes\"," + - " {" + - " \"create\": {" + - " \"create-id01\" : {" + - " \"name\" : \"" + overLimitName + "\"" + - " }" + - " }" + - " }," + - " \"#0\"" + - " ]" + - "]"; - - given() - .header("Authorization", this.accessToken.serialize()) - .body(requestBody) - .when() - .post("/jmap") - .then() - .statusCode(200) - .body(NAME, equalTo("mailboxesSet")) - .body(ARGUMENTS + ".notCreated", aMapWithSize(1)) - .body(ARGUMENTS + ".notCreated", hasEntry(equalTo("create-id01"), Matchers.allOf( - hasEntry(equalTo("type"), equalTo("invalidArguments")), - hasEntry(equalTo("description"), equalTo("The mailbox name length '" + overLimitName + "' is over limitation: " + MailboxConstants.DEFAULT_LIMIT_MAILBOX_NAME_LENGTH))) - )); - } - - @Test - public void setMailboxesShouldNotUpdateMailboxWhenOverLimitName() { - String overLimitName = StringUtils.repeat("a", MailboxConstants.DEFAULT_LIMIT_MAILBOX_NAME_LENGTH); - jmapServer.serverProbe().createMailbox("#private", username, "myBox"); - Mailbox mailbox = jmapServer.serverProbe().getMailbox("#private", username, "myBox"); - String mailboxId = mailbox.getMailboxId().serialize(); - String requestBody = - "[" + - " [ \"setMailboxes\"," + - " {" + - " \"update\": {" + - " \"" + mailboxId + "\" : {" + - " \"name\" : \"" + overLimitName + "\"" + - " }" + - " }" + - " }," + - " \"#0\"" + - " ]" + - "]"; - given() - .header("Authorization", this.accessToken.serialize()) - .body(requestBody) - .when() - .post("/jmap") - .then() - .statusCode(200) - .body(NAME, equalTo("mailboxesSet")) - .body(ARGUMENTS + ".notUpdated", aMapWithSize(1)) - .body(ARGUMENTS + ".notUpdated", hasEntry(equalTo(mailboxId), Matchers.allOf( - hasEntry(equalTo("type"), equalTo("invalidArguments")), - hasEntry(equalTo("description"), equalTo("The mailbox name length '" + overLimitName + "' is over limitation: " + MailboxConstants.DEFAULT_LIMIT_MAILBOX_NAME_LENGTH))) - )); - } - - @Test public void setMailboxesShouldErrorNotSupportedWhenRoleGiven() { String requestBody = "[" + --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
