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 2019/11/05 09:02:18 UTC

[james-project] 03/05: JAMES-2955 updating a domain quota with null value should reset it

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 f1e5546f04041e78d95a50b85756638d1fa74bb0
Author: Rémi KOWALSKI <rk...@linagora.com>
AuthorDate: Thu Oct 31 17:20:02 2019 +0100

    JAMES-2955 updating a domain quota with null value should reset it
---
 .../james/webadmin/service/DomainQuotaService.java | 21 +++++++---
 .../webadmin/routes/DomainQuotaRoutesTest.java     | 48 +++++++++++++++++++++-
 2 files changed, 62 insertions(+), 7 deletions(-)

diff --git a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/DomainQuotaService.java b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/DomainQuotaService.java
index 2b59837..0c30c19 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/DomainQuotaService.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/DomainQuotaService.java
@@ -31,8 +31,6 @@ import org.apache.james.mailbox.quota.MaxQuotaManager;
 import org.apache.james.webadmin.dto.QuotaDTO;
 import org.apache.james.webadmin.dto.QuotaDomainDTO;
 
-import com.github.fge.lambdas.Throwing;
-
 public class DomainQuotaService {
 
     private final MaxQuotaManager maxQuotaManager;
@@ -84,9 +82,20 @@ public class DomainQuotaService {
     }
 
     public void defineQuota(Domain domain, QuotaDTO quota) {
-        quota.getCount()
-            .ifPresent(Throwing.consumer(count -> maxQuotaManager.setDomainMaxMessage(domain, count)));
-        quota.getSize()
-            .ifPresent(Throwing.consumer(size -> maxQuotaManager.setDomainMaxStorage(domain, size)));
+        try {
+            if (quota.getCount().isPresent()) {
+                maxQuotaManager.setDomainMaxMessage(domain, quota.getCount().get());
+            } else {
+                maxQuotaManager.removeDomainMaxMessage(domain);
+            }
+
+            if (quota.getSize().isPresent()) {
+                maxQuotaManager.setDomainMaxStorage(domain, quota.getSize().get());
+            } else {
+                maxQuotaManager.removeDomainMaxStorage(domain);
+            }
+        } catch (MailboxException e) {
+            throw new RuntimeException(e);
+        }
     }
 }
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/DomainQuotaRoutesTest.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/DomainQuotaRoutesTest.java
index 482d241..2c654e2 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/DomainQuotaRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/DomainQuotaRoutesTest.java
@@ -450,7 +450,14 @@ class DomainQuotaRoutesTest {
     @Test
     void putQuotaShouldBeAbleToRemoveBothQuota() {
         given()
-            .body("{\"count\":null,\"count\":null}")
+            .body("{\"count\":52,\"size\":42}")
+            .put(QUOTA_DOMAINS + "/" + TROUVÉ_COM.name())
+        .then()
+            .statusCode(HttpStatus.NO_CONTENT_204);
+
+
+        given()
+            .body("{\"count\":null,\"size\":null}")
             .put(QUOTA_DOMAINS + "/" + TROUVÉ_COM.name())
         .then()
             .statusCode(HttpStatus.NO_CONTENT_204);
@@ -459,4 +466,43 @@ class DomainQuotaRoutesTest {
         assertThat(maxQuotaManager.getDomainMaxMessage(TROUVÉ_COM)).isEmpty();
     }
 
+    @Test
+    void putQuotaShouldBeAbleToRemoveCountQuota() {
+        given()
+            .body("{\"count\":52,\"size\":42}")
+            .put(QUOTA_DOMAINS + "/" + TROUVÉ_COM.name())
+        .then()
+            .statusCode(HttpStatus.NO_CONTENT_204);
+
+
+        given()
+            .body("{\"count\":null,\"size\":42}")
+            .put(QUOTA_DOMAINS + "/" + TROUVÉ_COM.name())
+        .then()
+            .statusCode(HttpStatus.NO_CONTENT_204);
+
+        assertThat(maxQuotaManager.getDomainMaxStorage(TROUVÉ_COM)).contains(QuotaSize.size(42));
+        assertThat(maxQuotaManager.getDomainMaxMessage(TROUVÉ_COM)).isEmpty();
+    }
+
+    @Test
+    void putQuotaShouldBeAbleToRemoveSizeQuota() {
+        given()
+            .body("{\"count\":52,\"size\":42}")
+            .put(QUOTA_DOMAINS + "/" + TROUVÉ_COM.name())
+        .then()
+            .statusCode(HttpStatus.NO_CONTENT_204);
+
+
+        given()
+            .body("{\"count\":52,\"size\":null}")
+            .put(QUOTA_DOMAINS + "/" + TROUVÉ_COM.name())
+        .then()
+            .statusCode(HttpStatus.NO_CONTENT_204);
+
+        assertThat(maxQuotaManager.getDomainMaxStorage(TROUVÉ_COM)).isEmpty();
+        assertThat(maxQuotaManager.getDomainMaxMessage(TROUVÉ_COM)).contains(QuotaCount.count(52));
+    }
+
+
 }


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