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/01/24 08:04:14 UTC

[05/11] james-project git commit: JAMES-2295 A zeroed limit should be invalid

JAMES-2295 A zeroed limit should be invalid


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/452183a1
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/452183a1
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/452183a1

Branch: refs/heads/master
Commit: 452183a17e39d7df8b20b018204f2d967a6ec452
Parents: d423ef0
Author: Raphael Ouazana <ra...@linagora.com>
Authored: Mon Jan 22 17:36:12 2018 +0100
Committer: benwa <bt...@linagora.com>
Committed: Wed Jan 24 14:58:37 2018 +0700

----------------------------------------------------------------------
 .../webadmin/routes/MailRepositoriesRoutes.java | 21 ++++++++++++++++----
 .../routes/MailRepositoriesRoutesTest.java      | 10 ++++++++++
 2 files changed, 27 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/452183a1/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/routes/MailRepositoriesRoutes.java
----------------------------------------------------------------------
diff --git a/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/routes/MailRepositoriesRoutes.java b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/routes/MailRepositoriesRoutes.java
index 1cc7a06..529dfd5 100644
--- a/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/routes/MailRepositoriesRoutes.java
+++ b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/routes/MailRepositoriesRoutes.java
@@ -91,9 +91,9 @@ public class MailRepositoriesRoutes implements Routes {
             required = false,
             paramType = "query parameter",
             dataType = "Integer",
-            defaultValue = "0",
+            defaultValue = "absent",
             example = "?limit=100",
-            value = "If present, fixes the maximal number of key returned in that call.")
+            value = "If present, fixes the maximal number of key returned in that call. Must be more than zero if specified.")
     })
     @ApiResponses(value = {
         @ApiResponse(code = HttpStatus.OK_200, message = "The list of all mails in a repository", response = List.class),
@@ -103,8 +103,10 @@ public class MailRepositoriesRoutes implements Routes {
     public void defineListMails() {
         service.get(MAIL_REPOSITORIES + "/:encodedUrl/mails", (request, response) -> {
             int offset = asInteger(request, "offset").orElse(NO_OFFSET);
-            Limit limit = Limit.from(asInteger(request, "limit"));
-            String url = URLDecoder.decode(request.params("encodedUrl"), StandardCharsets.UTF_8.displayName());
+            Limit limit = Limit.from(asInteger(request, "limit")
+                .map(value -> keepNotZero(value, "limit")));
+            String encodedUrl = request.params("encodedUrl");
+            String url = URLDecoder.decode(encodedUrl, StandardCharsets.UTF_8.displayName());
             try {
                 return repositoryStoreService.listMails(url, offset, limit);
             } catch (MailRepositoryStore.MailRepositoryStoreException| MessagingException e) {
@@ -157,4 +159,15 @@ public class MailRepositoriesRoutes implements Routes {
         }
         return value;
     }
+
+    private int keepNotZero(int value, String parameterName) {
+        if (value == 0) {
+            throw ErrorResponder.builder()
+                .statusCode(HttpStatus.BAD_REQUEST_400)
+                .type(ErrorResponder.ErrorType.INVALID_ARGUMENT)
+                .message(parameterName + " can not be equal to zero")
+                .haltError();
+        }
+        return value;
+    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/452183a1/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/routes/MailRepositoriesRoutesTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/routes/MailRepositoriesRoutesTest.java b/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/routes/MailRepositoriesRoutesTest.java
index ddac73d..d318715 100644
--- a/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/routes/MailRepositoriesRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/routes/MailRepositoriesRoutesTest.java
@@ -267,4 +267,14 @@ public class MailRepositoriesRoutesTest {
             .body("mailKey", containsInAnyOrder("name1", "name2"));
     }
 
+    @Test
+    public void zeroLimitShouldNotBeValid() throws Exception {
+        when()
+            .get(MY_REPO_MAILS + "?limit=0")
+        .then()
+            .statusCode(HttpStatus.BAD_REQUEST_400)
+            .body("statusCode", is(400))
+            .body("type", is(ErrorResponder.ErrorType.INVALID_ARGUMENT.getType()))
+            .body("message", is("limit can not be equal to zero"));
+    }
 }


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