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:19 UTC
[james-project] 04/05: JAMES-2955 updating a user 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 5eef771357f10771f95c372765b8fb7b054e6414
Author: RĂ©mi KOWALSKI <rk...@linagora.com>
AuthorDate: Mon Nov 4 10:57:35 2019 +0100
JAMES-2955 updating a user quota with null value should reset it
---
.../james/webadmin/service/UserQuotaService.java | 21 +++++--
.../james/webadmin/routes/UserQuotaRoutesTest.java | 64 ++++++++++++++++++++++
2 files changed, 80 insertions(+), 5 deletions(-)
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/UserQuotaService.java b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/UserQuotaService.java
index 03969b4..0a4ff0c 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/UserQuotaService.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/UserQuotaService.java
@@ -61,11 +61,22 @@ public class UserQuotaService {
}
public void defineQuota(User user, QuotaDTO quota) {
- QuotaRoot quotaRoot = userQuotaRootResolver.forUser(user);
- quota.getCount()
- .ifPresent(Throwing.consumer(count -> maxQuotaManager.setMaxMessage(quotaRoot, count)));
- quota.getSize()
- .ifPresent(Throwing.consumer(size -> maxQuotaManager.setMaxStorage(quotaRoot, size)));
+ try {
+ QuotaRoot quotaRoot = userQuotaRootResolver.forUser(user);
+ if (quota.getCount().isPresent()) {
+ maxQuotaManager.setMaxMessage(quotaRoot, quota.getCount().get());
+ } else {
+ maxQuotaManager.removeMaxMessage(quotaRoot);
+ }
+
+ if (quota.getSize().isPresent()) {
+ maxQuotaManager.setMaxStorage(quotaRoot, quota.getSize().get());
+ } else {
+ maxQuotaManager.removeMaxStorage(quotaRoot);
+ }
+ } catch (MailboxException e) {
+ throw new RuntimeException(e);
+ }
}
public QuotaDetailsDTO getQuota(User user) throws MailboxException {
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 af9f1aa..b4e48b8 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
@@ -1091,5 +1091,69 @@ class UserQuotaRoutesTest {
.contains(QuotaSize.size(42));
softly.assertAll();
}
+
+ @Test
+ void putQuotaShouldRemoveCount(WebAdminQuotaSearchTestSystem testSystem) throws Exception {
+ MaxQuotaManager maxQuotaManager = testSystem.getQuotaSearchTestSystem().getMaxQuotaManager();
+ UserQuotaRootResolver userQuotaRootResolver = testSystem.getQuotaSearchTestSystem().getQuotaRootResolver();
+
+ maxQuotaManager.setMaxMessage(userQuotaRootResolver.forUser(BOB), QuotaCount.count(52));
+
+ with()
+ .body("{\"count\":null,\"size\":42}")
+ .put(QUOTA_USERS + "/" + BOB.asString())
+ .then()
+ .statusCode(HttpStatus.NO_CONTENT_204);
+
+ SoftAssertions softly = new SoftAssertions();
+ softly.assertThat(maxQuotaManager.getMaxMessage(userQuotaRootResolver.forUser(BOB)))
+ .isEmpty();
+ softly.assertThat(maxQuotaManager.getMaxStorage(userQuotaRootResolver.forUser(BOB)))
+ .contains(QuotaSize.size(42));
+ softly.assertAll();
+ }
+
+ @Test
+ void putQuotaShouldRemoveSize(WebAdminQuotaSearchTestSystem testSystem) throws Exception {
+ MaxQuotaManager maxQuotaManager = testSystem.getQuotaSearchTestSystem().getMaxQuotaManager();
+ UserQuotaRootResolver userQuotaRootResolver = testSystem.getQuotaSearchTestSystem().getQuotaRootResolver();
+
+ maxQuotaManager.setMaxStorage(userQuotaRootResolver.forUser(BOB), QuotaSize.size(42));
+
+ with()
+ .body("{\"count\":52,\"size\":null}")
+ .put(QUOTA_USERS + "/" + BOB.asString())
+ .then()
+ .statusCode(HttpStatus.NO_CONTENT_204);
+
+ SoftAssertions softly = new SoftAssertions();
+ softly.assertThat(maxQuotaManager.getMaxMessage(userQuotaRootResolver.forUser(BOB)))
+ .contains(QuotaCount.count(52));
+ softly.assertThat(maxQuotaManager.getMaxStorage(userQuotaRootResolver.forUser(BOB)))
+ .isEmpty();
+ softly.assertAll();
+ }
+
+ @Test
+ void putQuotaShouldRemoveBoth(WebAdminQuotaSearchTestSystem testSystem) throws Exception {
+ MaxQuotaManager maxQuotaManager = testSystem.getQuotaSearchTestSystem().getMaxQuotaManager();
+ UserQuotaRootResolver userQuotaRootResolver = testSystem.getQuotaSearchTestSystem().getQuotaRootResolver();
+
+ maxQuotaManager.setMaxStorage(userQuotaRootResolver.forUser(BOB), QuotaSize.size(42));
+
+ with()
+ .body("{\"count\":null,\"size\":null}")
+ .put(QUOTA_USERS + "/" + BOB.asString())
+ .then()
+ .statusCode(HttpStatus.NO_CONTENT_204);
+
+ SoftAssertions softly = new SoftAssertions();
+ softly.assertThat(maxQuotaManager.getMaxMessage(userQuotaRootResolver.forUser(BOB)))
+ .isEmpty();
+ softly.assertThat(maxQuotaManager.getMaxStorage(userQuotaRootResolver.forUser(BOB)))
+ .isEmpty();
+ softly.assertAll();
+ }
+
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org