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