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/04 11:23:43 UTC

[james-project] 07/30: JAMES-2939 Prevent mixed case INBOX creation through JMAP

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 b505d74da583712543f0507b651d5a74ff8d41ba
Author: Gautier DI FOLCO <gd...@linagora.com>
AuthorDate: Tue Oct 29 13:05:47 2019 +0100

    JAMES-2939 Prevent mixed case INBOX creation through JMAP
---
 .../org/apache/james/mailbox/MailboxManager.java   | 13 ++++
 .../mailbox/exception/InboxAlreadyCreated.java     | 50 ++++++++++++++
 .../apache/james/mailbox/MailboxManagerTest.java   | 63 ++++++++++++++++++
 .../james/mailbox/store/StoreMailboxManager.java   | 76 +++++++++++++++-------
 .../org/apache/james/imap/scripts/StringArgs.test  |  6 +-
 .../integration/SetMailboxesMethodTest.java        | 32 +++++++++
 .../methods/SetMailboxesCreationProcessor.java     | 14 +++-
 .../james/jmap/draft/model/MailboxFactoryTest.java | 13 ++--
 .../james/jmap/draft/utils/MailboxUtilsTest.java   |  5 +-
 9 files changed, 237 insertions(+), 35 deletions(-)

diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxManager.java b/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxManager.java
index 3af341c..d9bdf61 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxManager.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxManager.java
@@ -256,6 +256,19 @@ public interface MailboxManager extends RequestAware, RightManager, MailboxAnnot
     boolean mailboxExists(MailboxPath mailboxPath, MailboxSession session) throws MailboxException;
 
     /**
+     * Does the user INBOX exist?
+     *
+     * @param session
+     *            the context for this call, not null
+     * @return true when the INBOX exists and is accessible for the given
+     *         user, false otherwise
+     * @throws MailboxException
+     */
+    default boolean hasInbox(MailboxSession session) throws MailboxException {
+        return mailboxExists(MailboxPath.inbox(session), session);
+    }
+
+    /**
      * Creates a new system session.<br>
      * A system session is intended to be used for programmatic access.<br>
      * Use {@link #login(String, String)} when accessing this API from a
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/exception/InboxAlreadyCreated.java b/mailbox/api/src/main/java/org/apache/james/mailbox/exception/InboxAlreadyCreated.java
new file mode 100644
index 0000000..c673c39
--- /dev/null
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/exception/InboxAlreadyCreated.java
@@ -0,0 +1,50 @@
+/**
+ * *************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0                   *
+ * *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ***************************************************************/
+
+package org.apache.james.mailbox.exception;
+
+/**
+ * Indicates that the operation failed since INBOX already exists.
+ */
+public class InboxAlreadyCreated extends MailboxException {
+
+    private static final long serialVersionUID = -486251759505030366L;
+
+    private final String mailboxName;
+
+    public InboxAlreadyCreated(String mailboxName) {
+        super("The mailbox '" + mailboxName + "' already exists as 'INBOX'");
+        this.mailboxName = mailboxName;
+    }
+
+    /**
+     * Gets the name of the mailbox which already exists.
+     *
+     * @return the mailboxName, not null
+     */
+    public final String getMailboxName() {
+        return mailboxName;
+    }
+
+    public String toString() {
+        return getMessage();
+    }
+
+}
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java
index e0a2ad9..eacf95e 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java
@@ -49,7 +49,10 @@ import org.apache.james.mailbox.events.MailboxListener;
 import org.apache.james.mailbox.events.MessageMoveEvent;
 import org.apache.james.mailbox.exception.AnnotationException;
 import org.apache.james.mailbox.exception.HasEmptyMailboxNameInHierarchyException;
+import org.apache.james.mailbox.exception.InboxAlreadyCreated;
 import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.exception.MailboxExistsException;
+import org.apache.james.mailbox.exception.MailboxNotFoundException;
 import org.apache.james.mailbox.exception.TooLongMailboxNameException;
 import org.apache.james.mailbox.extension.PreDeletionHook;
 import org.apache.james.mailbox.mock.DataProvisioner;
@@ -165,6 +168,66 @@ public abstract class MailboxManagerTest<T extends MailboxManager> {
     }
 
     @Nested
+    class MailboxCreationTests {
+        @Test
+        void hasInboxShouldBeFalseWhenINBOXIsNotCreated() throws Exception {
+            session = mailboxManager.createSystemSession(USER_1);
+            mailboxManager.startProcessingRequest(session);
+
+            assertThat(mailboxManager.hasInbox(session)).isFalse();
+        }
+
+        @Test
+        void hasInboxShouldBeTrueWhenINBOXIsCreated() throws Exception {
+            session = mailboxManager.createSystemSession(USER_1);
+            mailboxManager.startProcessingRequest(session);
+
+            MailboxPath mailboxPath = MailboxPath.inbox(session);
+            Optional<MailboxId> mailboxId = mailboxManager.createMailbox(mailboxPath, session);
+            MessageManager retrievedMailbox = mailboxManager.getMailbox(mailboxPath, session);
+
+            assertThat(mailboxManager.hasInbox(session)).isTrue();
+            assertThat(mailboxId.get()).isEqualTo(retrievedMailbox.getId());
+        }
+
+        @Test
+        void creatingMixedCaseINBOXShouldCreateItAsINBOX() throws Exception {
+            session = mailboxManager.createSystemSession(USER_1);
+            mailboxManager.startProcessingRequest(session);
+
+            Optional<MailboxId> mailboxId = mailboxManager.createMailbox(MailboxPath.forUser(USER_1, "iNbOx"), session);
+            MessageManager retrievedMailbox = mailboxManager.getMailbox(MailboxPath.inbox(session), session);
+
+            assertThat(mailboxManager.hasInbox(session)).isTrue();
+            assertThat(mailboxId.get()).isEqualTo(retrievedMailbox.getId());
+        }
+
+        @Test
+        void creatingMixedCaseINBOXShouldNotBeRetrievableAsIt() throws Exception {
+            session = mailboxManager.createSystemSession(USER_1);
+            mailboxManager.startProcessingRequest(session);
+
+            MailboxPath mailboxPath = MailboxPath.forUser(USER_1, "iNbOx");
+            Optional<MailboxId> mailboxId = mailboxManager.createMailbox(mailboxPath, session);
+            assertThat(mailboxId).isPresent();
+
+            assertThatThrownBy(() -> mailboxManager.getMailbox(mailboxPath, session))
+                .isInstanceOf(MailboxNotFoundException.class);
+        }
+
+        @Test
+        void creatingMixedCaseINBOXWhenItHasAlreadyBeenCreatedShouldThrow() throws Exception {
+            session = mailboxManager.createSystemSession(USER_1);
+            mailboxManager.startProcessingRequest(session);
+
+            mailboxManager.createMailbox(MailboxPath.inbox(session), session);
+
+            assertThatThrownBy(() -> mailboxManager.createMailbox(MailboxPath.forUser(USER_1, "iNbOx"), session))
+                .isInstanceOf(InboxAlreadyCreated.class);
+        }
+    }
+
+    @Nested
     class MailboxNameLimitTests {
         @Test
         void creatingMailboxShouldNotFailWhenLimitNameLength() throws Exception {
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
index abd895c..c76ae83 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
@@ -44,6 +44,7 @@ import org.apache.james.mailbox.StandardMailboxMetaDataComparator;
 import org.apache.james.mailbox.events.EventBus;
 import org.apache.james.mailbox.events.MailboxIdRegistrationKey;
 import org.apache.james.mailbox.exception.HasEmptyMailboxNameInHierarchyException;
+import org.apache.james.mailbox.exception.InboxAlreadyCreated;
 import org.apache.james.mailbox.exception.InsufficientRightsException;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.exception.MailboxExistsException;
@@ -352,34 +353,64 @@ public class StoreMailboxManager implements MailboxManager {
         return Optional.empty();
     }
 
-    private List<MailboxId> createMailboxesForPath(MailboxSession mailboxSession, MailboxPath sanitizedMailboxPath) throws MailboxException {
+    private List<MailboxId> createMailboxesForPath(MailboxSession mailboxSession, MailboxPath sanitizedMailboxPath) {
         // Create parents first
         // If any creation fails then the mailbox will not be created
         // TODO: transaction
+        List<MailboxPath> intermediatePaths = sanitizedMailboxPath.getHierarchyLevels(getDelimiter());
+        boolean isRootPath = intermediatePaths.size() == 1;
+
+        return intermediatePaths
+            .stream()
+            .flatMap(Throwing.<MailboxPath, Stream<MailboxId>>function(mailbox -> manageMailboxCreation(mailboxSession, isRootPath, mailbox)).sneakyThrow())
+            .collect(Guavate.toImmutableList());
+    }
+
+    private Stream<MailboxId> manageMailboxCreation(MailboxSession mailboxSession, boolean isRootPath, MailboxPath mailbox) throws MailboxException {
+        if (mailbox.isInbox()) {
+            if (hasInbox(mailboxSession)) {
+                return duplicatedINBOXCreation(isRootPath, mailbox);
+            }
+
+            return performConcurrentMailboxCreation(mailboxSession, MailboxPath.inbox(mailboxSession)).stream();
+        }
+
+        return performConcurrentMailboxCreation(mailboxSession, mailbox).stream();
+    }
+
+
+    private Stream<MailboxId> duplicatedINBOXCreation(boolean isRootPath, MailboxPath mailbox) throws InboxAlreadyCreated {
+        if (isRootPath) {
+            throw new InboxAlreadyCreated(mailbox.getName());
+        }
+
+        return Stream.empty();
+    }
+
+    private List<MailboxId> performConcurrentMailboxCreation(MailboxSession mailboxSession, MailboxPath mailbox) throws MailboxException {
         List<MailboxId> mailboxIds = new ArrayList<>();
-        for (MailboxPath mailbox : sanitizedMailboxPath.getHierarchyLevels(getDelimiter())) {
-            locker.executeWithLock(mailboxSession, mailbox, (LockAwareExecution<Void>) () -> {
-                if (!mailboxExists(mailbox, mailboxSession)) {
-                    Mailbox m = doCreateMailbox(mailbox);
-                    MailboxMapper mapper = mailboxSessionMapperFactory.getMailboxMapper(mailboxSession);
-                    try {
-                        mapper.execute(Mapper.toTransaction(() -> mailboxIds.add(mapper.save(m))));
-                        // notify listeners
-                        eventBus.dispatch(EventFactory.mailboxAdded()
-                            .randomEventId()
-                            .mailboxSession(mailboxSession)
-                            .mailbox(m)
-                            .build(),
-                            new MailboxIdRegistrationKey(m.getMailboxId()))
-                            .block();
-                    } catch (MailboxExistsException e) {
-                        LOGGER.info("{} mailbox was created concurrently", m.generateAssociatedPath());
-                    }
+        locker.executeWithLock(mailboxSession, mailbox, (LockAwareExecution<Void>) () -> {
+            if (!mailboxExists(mailbox, mailboxSession)) {
+                Mailbox m = doCreateMailbox(mailbox);
+                MailboxMapper mapper = mailboxSessionMapperFactory.getMailboxMapper(mailboxSession);
+                try {
+                    mapper.execute(Mapper.toTransaction(() -> mailboxIds.add(mapper.save(m))));
+                    // notify listeners
+                    eventBus.dispatch(EventFactory.mailboxAdded()
+                        .randomEventId()
+                        .mailboxSession(mailboxSession)
+                        .mailbox(m)
+                        .build(),
+                        new MailboxIdRegistrationKey(m.getMailboxId()))
+                        .block();
+                } catch (MailboxExistsException e) {
+                    LOGGER.info("{} mailbox was created concurrently", m.generateAssociatedPath());
                 }
-                return null;
+            }
+            return null;
+
+        }, true);
 
-            }, true);
-        }
         return mailboxIds;
     }
 
@@ -645,7 +676,6 @@ public class StoreMailboxManager implements MailboxManager {
         } catch (MailboxNotFoundException e) {
             return false;
         }
-
     }
 
     /**
diff --git a/mpt/impl/imap-mailbox/core/src/main/resources/org/apache/james/imap/scripts/StringArgs.test b/mpt/impl/imap-mailbox/core/src/main/resources/org/apache/james/imap/scripts/StringArgs.test
index eb81a9a..220a42c 100644
--- a/mpt/impl/imap-mailbox/core/src/main/resources/org/apache/james/imap/scripts/StringArgs.test
+++ b/mpt/impl/imap-mailbox/core/src/main/resources/org/apache/james/imap/scripts/StringArgs.test
@@ -28,11 +28,15 @@ C: a001 STATUS INBOX (MESSAGES)
 S: \* STATUS \"INBOX\" \(MESSAGES \d+\)
 S: a001 OK STATUS completed.
 
-# Case-insensitive inbox
+# Case-insensitive INBOX
 C: a001 STATUS InBoX (MESSAGES)
 S: \* STATUS \"INBOX\" \(MESSAGES \d+\)
 S: a001 OK STATUS completed.
 
+# Case-insensitive INBOX creation check
+C: a1 CREATE "iNbOx"
+S: a1 NO CREATE failed. Mailbox already exists.
+
 # Tests with an atomic mailbox name.
 C: a1 CREATE atomMailbox
 S: a1 OK CREATE completed.
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMailboxesMethodTest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMailboxesMethodTest.java
index 919b640..c55f9d1 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMailboxesMethodTest.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMailboxesMethodTest.java
@@ -275,6 +275,38 @@ public abstract class SetMailboxesMethodTest {
         assertThat(mailboxProbe.listSubscriptions(username)).contains("foo");
     }
 
+    @Category(BasicFeature.class)
+    @Test
+    public void userShouldGetAnErrorWhenNotBeAbleToCreateACaseVariationOfINBOX() throws Exception {
+        String requestBody =
+            "[" +
+                "  [ \"setMailboxes\"," +
+                "    {" +
+                "      \"create\": {" +
+                "        \"create-id01\" : {" +
+                "          \"name\" : \"iNbOx\"" +
+                "        }" +
+                "      }" +
+                "    }," +
+                "    \"#0\"" +
+                "  ]" +
+                "]";
+
+        given()
+            .header("Authorization", accessToken.serialize())
+            .body(requestBody)
+        .when()
+            .post("/jmap")
+        .then()
+            .statusCode(200)
+            .body(NAME, equalTo("mailboxesSet"))
+            .body(ARGUMENTS + ".notCreated", hasKey("create-id01"))
+            .body(ARGUMENTS + ".notCreated.create-id01.type", equalTo("invalidArguments"))
+            .body(ARGUMENTS + ".notCreated.create-id01.description", equalTo("The mailbox 'iNbOx' already exists as 'INBOX'"));
+
+        assertThat(mailboxProbe.listUserMailboxes(username)).doesNotContain("iNbOx");
+    }
+
     @Test
     public void userShouldBeSubscribedOnCreatedMailboxWhenCreateChildOfInboxMailbox() throws Exception {
         MailboxId inboxId = mailboxProbe.getMailboxId(MailboxConstants.USER_NAMESPACE, username, MailboxConstants.INBOX);
diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/SetMailboxesCreationProcessor.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/SetMailboxesCreationProcessor.java
index 84c0c01..7663c5b 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/SetMailboxesCreationProcessor.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/SetMailboxesCreationProcessor.java
@@ -41,6 +41,7 @@ import org.apache.james.jmap.draft.utils.SortingHierarchicalCollections;
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.SubscriptionManager;
+import org.apache.james.mailbox.exception.InboxAlreadyCreated;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.exception.MailboxExistsException;
 import org.apache.james.mailbox.exception.MailboxNameException;
@@ -153,13 +154,20 @@ public class SetMailboxesCreationProcessor implements SetMailboxesProcessor {
                     .type(SetError.Type.INVALID_ARGUMENTS)
                     .description(message)
                     .build());
+        } catch (InboxAlreadyCreated e) {
+            String message = String.format("The mailbox '%s' already exists as 'INBOX'", e.getMailboxName());
+            LOGGER.error(message, e);
+            builder.notCreated(mailboxCreationId, SetError.builder()
+                .type(SetError.Type.INVALID_ARGUMENTS)
+                .description(message)
+                .build());
         } catch (MailboxException e) {
             String message = String.format("An error occurred when creating the mailbox '%s'", mailboxCreationId.getCreationId());
             LOGGER.error(message, e);
             builder.notCreated(mailboxCreationId, SetError.builder()
-                    .type(SetError.Type.ERROR)
-                    .description(message)
-                    .build());
+                .type(SetError.Type.ERROR)
+                .description(message)
+                .build());
         }
     }
 
diff --git a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/MailboxFactoryTest.java b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/MailboxFactoryTest.java
index 36edf82..e507930 100644
--- a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/MailboxFactoryTest.java
+++ b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/MailboxFactoryTest.java
@@ -29,6 +29,7 @@ import org.apache.james.mailbox.inmemory.InMemoryId;
 import org.apache.james.mailbox.inmemory.manager.InMemoryIntegrationResources;
 import org.apache.james.mailbox.manager.ManagerTestProvisionner;
 import org.apache.james.mailbox.model.MailboxACL;
+import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxMetaData;
 import org.apache.james.mailbox.model.MailboxPath;
@@ -132,11 +133,11 @@ public class MailboxFactoryTest {
 
     @Test
     public void getParentIdFromMailboxPathShouldReturnParentIdWhenChildMailbox() throws Exception {
-        MailboxPath parentMailboxPath = MailboxPath.forUser(user, "inbox");
+        MailboxPath parentMailboxPath = MailboxPath.forUser(user, MailboxConstants.INBOX);
         mailboxManager.createMailbox(parentMailboxPath, mailboxSession);
         MailboxId parentId = mailboxManager.getMailbox(parentMailboxPath, mailboxSession).getId();
 
-        MailboxPath mailboxPath = MailboxPath.forUser(user, "inbox.mailbox");
+        MailboxPath mailboxPath = MailboxPath.forUser(user, "INBOX.mailbox");
         mailboxManager.createMailbox(mailboxPath, mailboxSession);
 
         Optional<MailboxId> id = sut.getParentIdFromMailboxPath(mailboxPath, Optional.empty(), mailboxSession);
@@ -192,7 +193,7 @@ public class MailboxFactoryTest {
 
     @Test
     public void getNamespaceShouldReturnDelegatedNamespaceWhenUserMailboxPathAndUserMailboxSessionAreNotTheSame() throws Exception {
-        MailboxPath inbox = MailboxPath.forUser(user, "inbox");
+        MailboxPath inbox = MailboxPath.forUser(user, MailboxConstants.INBOX);
         Optional<MailboxId> mailboxId = mailboxManager.createMailbox(inbox, mailboxSession);
         mailboxManager.applyRightsCommand(inbox,
             MailboxACL.command()
@@ -232,7 +233,7 @@ public class MailboxFactoryTest {
 
     @Test
     public void delegatedUserShouldHaveMayAddItemsWhenAllowedToInsert() throws Exception {
-        MailboxPath inbox = MailboxPath.forUser(user, "inbox");
+        MailboxPath inbox = MailboxPath.forUser(user, MailboxConstants.INBOX);
         Optional<MailboxId> mailboxId = mailboxManager.createMailbox(inbox, mailboxSession);
         mailboxManager.applyRightsCommand(inbox,
             MailboxACL.command()
@@ -257,7 +258,7 @@ public class MailboxFactoryTest {
 
     @Test
     public void delegatedUserShouldHaveMayReadItemsWhenAllowedToRead() throws Exception {
-        MailboxPath inbox = MailboxPath.forUser(user, "inbox");
+        MailboxPath inbox = MailboxPath.forUser(user, MailboxConstants.INBOX);
         Optional<MailboxId> mailboxId = mailboxManager.createMailbox(inbox, mailboxSession);
         mailboxManager.applyRightsCommand(inbox,
             MailboxACL.command()
@@ -282,7 +283,7 @@ public class MailboxFactoryTest {
 
     @Test
     public void delegatedUserShouldHaveMayRemoveItemsWhenAllowedToRemoveItems() throws Exception {
-        MailboxPath inbox = MailboxPath.forUser(user, "inbox");
+        MailboxPath inbox = MailboxPath.forUser(user, MailboxConstants.INBOX);
         Optional<MailboxId> mailboxId = mailboxManager.createMailbox(inbox, mailboxSession);
         mailboxManager.applyRightsCommand(inbox,
             MailboxACL.command()
diff --git a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/utils/MailboxUtilsTest.java b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/utils/MailboxUtilsTest.java
index 7a48a3a..5269169 100644
--- a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/utils/MailboxUtilsTest.java
+++ b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/utils/MailboxUtilsTest.java
@@ -24,6 +24,7 @@ import static org.assertj.core.api.Assertions.assertThat;
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.inmemory.manager.InMemoryIntegrationResources;
+import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.junit.Before;
@@ -55,11 +56,11 @@ public class MailboxUtilsTest {
 
     @Test
     public void hasChildrenShouldReturnTrueWhenHasAChild() throws Exception {
-        MailboxPath parentMailboxPath = MailboxPath.forUser(user, "inbox");
+        MailboxPath parentMailboxPath = MailboxPath.forUser(user, MailboxConstants.INBOX);
         mailboxManager.createMailbox(parentMailboxPath, mailboxSession);
         MailboxId parentId = mailboxManager.getMailbox(parentMailboxPath, mailboxSession).getId();
 
-        MailboxPath mailboxPath = MailboxPath.forUser(user, "inbox.myBox");
+        MailboxPath mailboxPath = MailboxPath.forUser(user, "INBOX.myBox");
         mailboxManager.createMailbox(mailboxPath, mailboxSession);
 
         assertThat(sut.hasChildren(parentId, mailboxSession)).isTrue();


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