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/19 02:43:03 UTC
[james-project] 01/43: JAMES-2983 Add MailboxId as part of
MailboxResponse
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 f26059ef6abbc29d37d4f07fef74318bae91e439
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Mon Nov 18 11:58:48 2019 +0700
JAMES-2983 Add MailboxId as part of MailboxResponse
Currently, several webAdmin APIs relies on mailboxId in their endpoints.
That is a good choice, as mailboxId is immutable and thus more predictable than mailboxPath.
However, mailboxId is not directly exposed to the end user, who can get confused.
Currently, using webadmin, I have no way of linking mailboxPath and mailboxId
Proposal is to add mailboxId as part of the MailboxResponse object.
---
.../apache/james/webadmin/dto/MailboxResponse.java | 10 +++++++++-
.../james/webadmin/service/UserMailboxesService.java | 2 +-
.../webadmin/routes/UserMailboxesRoutesTest.java | 19 ++++++++++++++++---
3 files changed, 26 insertions(+), 5 deletions(-)
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/dto/MailboxResponse.java b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/dto/MailboxResponse.java
index b552f45..a98a421 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/dto/MailboxResponse.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/dto/MailboxResponse.java
@@ -19,15 +19,23 @@
package org.apache.james.webadmin.dto;
+import org.apache.james.mailbox.model.MailboxId;
+
public class MailboxResponse {
private final String mailboxName;
+ private final MailboxId mailboxId;
- public MailboxResponse(String mailboxName) {
+ public MailboxResponse(String mailboxName, MailboxId mailboxId) {
this.mailboxName = mailboxName;
+ this.mailboxId = mailboxId;
}
public String getMailboxName() {
return mailboxName;
}
+
+ public String getMailboxId() {
+ return mailboxId.serialize();
+ }
}
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/UserMailboxesService.java b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/UserMailboxesService.java
index b8b36dc..7b25ba1 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/UserMailboxesService.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/UserMailboxesService.java
@@ -82,7 +82,7 @@ public class UserMailboxesService {
usernamePreconditions(username);
MailboxSession mailboxSession = mailboxManager.createSystemSession(username);
return listUserMailboxes(mailboxSession)
- .map(mailboxMetaData -> new MailboxResponse(mailboxMetaData.getPath().getName()))
+ .map(mailboxMetaData -> new MailboxResponse(mailboxMetaData.getPath().getName(), mailboxMetaData.getId()))
.collect(Guavate.toImmutableList());
}
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java
index aa08e5c..4e636ca 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java
@@ -25,6 +25,7 @@ import static org.apache.james.webadmin.Constants.SEPARATOR;
import static org.apache.james.webadmin.routes.UserMailboxesRoutes.USERS_BASE;
import static org.assertj.core.api.Assertions.assertThat;
import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.collection.IsCollectionWithSize.hasSize;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.mock;
@@ -495,7 +496,9 @@ class UserMailboxesRoutesTest {
.get()
.then()
.statusCode(HttpStatus.OK_200)
- .body(is("[{\"mailboxName\":\"myMailboxName\"}]"));
+ .body(".", hasSize(1))
+ .body("[0].mailboxName", is("myMailboxName"))
+ .body("[0].mailboxId", is("1"));
}
@Test
@@ -676,7 +679,12 @@ class UserMailboxesRoutesTest {
.jsonPath()
.getList(".");
- assertThat(list).containsExactly(ImmutableMap.of("mailboxName", mailboxName));
+ assertThat(list)
+ .hasSize(1)
+ .first()
+ .satisfies(map -> assertThat(map).hasSize(2)
+ .containsKeys("mailboxId")
+ .containsEntry("mailboxName", mailboxName));
}
@Test
@@ -715,7 +723,12 @@ class UserMailboxesRoutesTest {
.jsonPath()
.getList(".");
- assertThat(list).containsExactly(ImmutableMap.of("mailboxName", MAILBOX_NAME));
+ assertThat(list)
+ .hasSize(1)
+ .first()
+ .satisfies(map -> assertThat(map).hasSize(2)
+ .containsKeys("mailboxId")
+ .containsEntry("mailboxName", MAILBOX_NAME));
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org