You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by bt...@apache.org on 2020/09/25 01:51:58 UTC

[james-project] 13/13: JAMES-3386 add test to ensure blank mailbox paths are not allowed in jmap draft

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 409f94c76b2e7f41cb9e66d702ff85a7e24f52dc
Author: Rémi Kowalski <rk...@linagora.com>
AuthorDate: Wed Sep 23 11:12:17 2020 +0200

    JAMES-3386 add test to ensure blank mailbox paths are not allowed in jmap draft
---
 .../integration/SetMailboxesMethodTest.java        | 61 ++++++++++++++++++++++
 .../contract/MailboxSetMethodContract.scala        |  8 +--
 2 files changed, 65 insertions(+), 4 deletions(-)

diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMailboxesMethodTest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMailboxesMethodTest.java
index b2d0de0..ca325a9 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMailboxesMethodTest.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMailboxesMethodTest.java
@@ -215,6 +215,36 @@ public abstract class SetMailboxesMethodTest {
     }
 
     @Test
+    public void setMailboxesCreateShouldFailWhenBlankName() {
+        String creationId = "create-id01";
+        String requestBody =
+            "[" +
+                "  [ \"setMailboxes\"," +
+                "    {" +
+                "      \"create\": {" +
+                "        \"" + creationId + "\" : {" +
+                "          \"name\" : \"        \"" +
+                "        }" +
+                "      }" +
+                "    }," +
+                "    \"#0\"" +
+                "  ]" +
+                "]";
+
+        given()
+            .header("Authorization", accessToken.asString())
+            .body(requestBody)
+        .when()
+            .post("/jmap")
+        .then()
+            .statusCode(200)
+            .body(NAME, equalTo("mailboxesSet"))
+            .body(ARGUMENTS + ".notCreated", hasKey(creationId))
+            .body(ARGUMENTS + ".notCreated." + creationId + ".type", is("invalidArguments"))
+            .body(ARGUMENTS + ".notCreated." + creationId + ".description", is("'#private:username@domain.tld:        ' has an empty part within its mailbox name considering . as a delimiter"));
+    }
+
+    @Test
     public void setMailboxesUpdateShouldFailWhenOverLimitName() throws Exception {
         String overLimitName = StringUtils.repeat("a", MailboxManager.MAX_MAILBOX_NAME_LENGTH + 1);
         MailboxId mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username.asString(), "myBox");
@@ -246,6 +276,37 @@ public abstract class SetMailboxesMethodTest {
         assertThat(mailboxProbe.listSubscriptions(username.asString())).doesNotContain(overLimitName);
     }
 
+    @Test
+    public void setMailboxesUpdateShouldFailWhenBlankName() throws Exception {
+        MailboxId mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username.asString(), "myBox");
+        String requestBody =
+            "[" +
+                "  [ \"setMailboxes\"," +
+                "    {" +
+                "      \"update\": {" +
+                "        \"" + mailboxId.serialize() + "\" : {" +
+                "          \"name\" : \"    \"" +
+                "        }" +
+                "      }" +
+                "    }," +
+                "    \"#0\"" +
+                "  ]" +
+                "]";
+        given()
+            .header("Authorization", accessToken.asString())
+            .body(requestBody)
+        .when()
+            .post("/jmap")
+        .then()
+            .statusCode(200)
+            .body(NAME, equalTo("mailboxesSet"))
+            .body(ARGUMENTS + ".notUpdated", hasKey(mailboxId.serialize()))
+            .body(ARGUMENTS + ".notUpdated." + mailboxId.serialize() + ".type", is("invalidArguments"))
+            .body(ARGUMENTS + ".notUpdated." + mailboxId.serialize() + ".description", is("'#private:username@domain.tld:    ' has an empty part within its mailbox name considering . as a delimiter"));
+
+        assertThat(mailboxProbe.listSubscriptions(username.asString())).doesNotContain("    ");
+    }
+
     @Category(BasicFeature.class)
     @Test
     public void userShouldBeSubscribedOnCreatedMailboxWhenCreateMailbox() throws Exception {
diff --git a/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/MailboxSetMethodContract.scala b/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/MailboxSetMethodContract.scala
index dca59bd..4434d3f 100644
--- a/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/MailboxSetMethodContract.scala
+++ b/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/MailboxSetMethodContract.scala
@@ -738,9 +738,9 @@ trait MailboxSetMethodContract {
       `given`
         .header(ACCEPT.toString, ACCEPT_RFC8621_VERSION_HEADER)
         .body(request)
-        .when
+      .when
         .post
-        .`then`
+      .`then`
         .log().ifValidationFails()
         .statusCode(SC_OK)
         .contentType(JSON)
@@ -794,9 +794,9 @@ trait MailboxSetMethodContract {
       `given`
         .header(ACCEPT.toString, ACCEPT_RFC8621_VERSION_HEADER)
         .body(request)
-        .when
+      .when
         .post
-        .`then`
+      .`then`
         .log().ifValidationFails()
         .statusCode(SC_OK)
         .contentType(JSON)


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