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