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