You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2018/03/14 02:20:43 UTC
[6/6] james-project git commit: JAMES-2347 Users can be escaped in
UsersQuotaRoutes
JAMES-2347 Users can be escaped in UsersQuotaRoutes
RestAssured testing library tend to escape '@'.
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/0769dba5
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/0769dba5
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/0769dba5
Branch: refs/heads/master
Commit: 0769dba5ac1d1b5daa4233129f1a3d4eac95ab82
Parents: e235572
Author: benwa <bt...@linagora.com>
Authored: Tue Mar 13 10:15:05 2018 +0700
Committer: benwa <bt...@linagora.com>
Committed: Wed Mar 14 09:10:10 2018 +0700
----------------------------------------------------------------------
.../james/webadmin/routes/UserQuotaRoutes.java | 9 +++-
.../webadmin/routes/UserQuotaRoutesTest.java | 54 ++++++++++++++++++++
2 files changed, 61 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/0769dba5/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/UserQuotaRoutes.java
----------------------------------------------------------------------
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/UserQuotaRoutes.java b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/UserQuotaRoutes.java
index a5fff50..d9e2953 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/UserQuotaRoutes.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/UserQuotaRoutes.java
@@ -19,6 +19,9 @@
package org.apache.james.webadmin.routes;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.nio.charset.StandardCharsets;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
@@ -248,8 +251,10 @@ public class UserQuotaRoutes implements Routes {
}, jsonTransformer);
}
- private User checkUserExist(Request request) throws UsersRepositoryException {
- String user = request.params(USER);
+ private User checkUserExist(Request request) throws UsersRepositoryException, UnsupportedEncodingException {
+ String user = URLDecoder.decode(request.params(USER),
+ StandardCharsets.UTF_8.displayName());
+
if (!usersRepository.contains(user)) {
throw ErrorResponder.builder()
.statusCode(HttpStatus.NOT_FOUND_404)
http://git-wip-us.apache.org/repos/asf/james-project/blob/0769dba5/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserQuotaRoutesTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserQuotaRoutesTest.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserQuotaRoutesTest.java
index 4a9b82d..0d84759 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserQuotaRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserQuotaRoutesTest.java
@@ -58,6 +58,7 @@ public class UserQuotaRoutesTest {
private static final String QUOTA_USERS = "/quota/users";
private static final String PERDU_COM = "perdu.com";
private static final User BOB = User.fromUsername("bob@" + PERDU_COM);
+ private static final User ESCAPED_BOB = User.fromUsername("bob%40" + PERDU_COM);
private static final User JOE = User.fromUsername("joe@" + PERDU_COM);
private static final String PASSWORD = "secret";
private static final String COUNT = "count";
@@ -139,6 +140,25 @@ public class UserQuotaRoutesTest {
.statusCode(HttpStatus.NOT_FOUND_404);
}
+ @Test
+ public void putCountShouldAcceptEscapedUsers() {
+ given()
+ .body("35")
+ .when()
+ .put(QUOTA_USERS + "/" + ESCAPED_BOB.asString() + "/" + COUNT)
+ .then()
+ .statusCode(HttpStatus.NO_CONTENT_204);
+ }
+
+ @Test
+ public void putCountSizeAcceptEscapedUsers() {
+ given()
+ .body("36")
+ .when()
+ .put(QUOTA_USERS + "/" + ESCAPED_BOB.asString() + "/" + SIZE)
+ .then()
+ .statusCode(HttpStatus.NO_CONTENT_204);
+ }
@Test
public void putCountShouldRejectInvalid() {
@@ -442,6 +462,26 @@ public class UserQuotaRoutesTest {
}
@Test
+ public void getQuotaShouldReturnBothWhenValueSpecifiedAndEscaped() {
+ int maxStorage = 42;
+ int maxMessage = 52;
+ maxQuotaManager.setMaxStorage(userQuotaRootResolver.forUser(BOB), QuotaSize.size(maxStorage));
+ maxQuotaManager.setMaxMessage(userQuotaRootResolver.forUser(BOB), QuotaCount.count(maxMessage));
+
+ JsonPath jsonPath =
+ given()
+ .get(QUOTA_USERS + "/" + ESCAPED_BOB.asString())
+ .then()
+ .statusCode(HttpStatus.OK_200)
+ .contentType(ContentType.JSON)
+ .extract()
+ .jsonPath();
+
+ assertThat(jsonPath.getLong("user." + SIZE)).isEqualTo(maxStorage);
+ assertThat(jsonPath.getLong("user." + COUNT)).isEqualTo(maxMessage);
+ }
+
+ @Test
public void getQuotaShouldReturnBothEmptyWhenDefaultValues() {
JsonPath jsonPath =
given()
@@ -516,6 +556,20 @@ public class UserQuotaRoutesTest {
}
@Test
+ public void putQuotaShouldUpdateBothQuotaWhenEscaped() throws Exception {
+ given()
+ .body("{\"count\":52,\"size\":42}")
+ .put(QUOTA_USERS + "/" + ESCAPED_BOB.asString())
+ .then()
+ .statusCode(HttpStatus.NO_CONTENT_204);
+
+ assertThat(maxQuotaManager.getMaxMessage(userQuotaRootResolver.forUser(BOB)))
+ .contains(QuotaCount.count(52));
+ assertThat(maxQuotaManager.getMaxStorage(userQuotaRootResolver.forUser(BOB)))
+ .contains(QuotaSize.size(42));
+ }
+
+ @Test
public void putQuotaShouldBeAbleToRemoveBothQuota() throws Exception {
given()
.body("{\"count\":null,\"count\":null}")
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org