This is an automated email from the ASF dual-hosted git repository.

rouazana pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 1d6849e0dbe8829e70972dd0f52fcbc2d033df50
Author: Tran Tien Duc <[email protected]>
AuthorDate: Wed Jun 5 10:55:10 2019 +0700

    JAMES-2621 MailboxManager should throw when creating a mailbox containing
    another user path
---
 .../java/org/apache/james/mailbox/MailboxManagerTest.java     |  9 +++++----
 .../apache/james/mailbox/backup/DefaultMailboxBackupTest.java |  2 +-
 .../org/apache/james/mailbox/store/StoreMailboxManager.java   | 11 +++++++++++
 .../james/transport/mailets/delivery/MailboxAppenderTest.java |  2 +-
 4 files changed, 18 insertions(+), 6 deletions(-)

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 4661852..234f2e5 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
@@ -696,7 +696,8 @@ public abstract class MailboxManagerTest<T extends 
MailboxManager> {
         @Test
         void searchShouldNotReturnResultsFromOtherUsers() throws Exception {
             session = mailboxManager.createSystemSession(USER_1);
-            mailboxManager.createMailbox(MailboxPath.forUser(USER_2, "Other"), 
session);
+            MailboxSession session2 = 
mailboxManager.createSystemSession(USER_2);
+            mailboxManager.createMailbox(MailboxPath.forUser(USER_2, "Other"), 
session2);
             mailboxManager.createMailbox(MailboxPath.inbox(session), session);
             List<MailboxMetaData> metaDatas = mailboxManager.search(
                 MailboxQuery.privateMailboxesBuilder(session)
@@ -1336,12 +1337,12 @@ public abstract class MailboxManagerTest<T extends 
MailboxManager> {
         }
 
         @Test
-        void createMailboxDoesNotThrowWhenMailboxPathBelongsToAnotherUser() 
throws MailboxException {
+        void createMailboxShouldThrowWhenMailboxPathBelongsToAnotherUser() 
throws MailboxException {
             session = mailboxManager.createSystemSession(USER_1);
 
-            assertThatCode(() -> mailboxManager
+            assertThatThrownBy(() -> mailboxManager
                     .createMailbox(MailboxPath.forUser(USER_2, "mailboxName"), 
session))
-                .doesNotThrowAnyException();
+                .isInstanceOf(MailboxException.class);
         }
     }
 
diff --git 
a/mailbox/backup/src/test/java/org/apache/james/mailbox/backup/DefaultMailboxBackupTest.java
 
b/mailbox/backup/src/test/java/org/apache/james/mailbox/backup/DefaultMailboxBackupTest.java
index 533150c..e47806f 100644
--- 
a/mailbox/backup/src/test/java/org/apache/james/mailbox/backup/DefaultMailboxBackupTest.java
+++ 
b/mailbox/backup/src/test/java/org/apache/james/mailbox/backup/DefaultMailboxBackupTest.java
@@ -197,7 +197,7 @@ class DefaultMailboxBackupTest implements 
MailboxMessageFixture {
     @Test
     void restoringAccountInNonEmptyAccountShouldNotBeDone() throws Exception {
         createMailbox(sessionUser, MAILBOX_PATH_USER1_MAILBOX1);
-        createMailbox(sessionUser, MAILBOX_PATH_OTHER_USER_MAILBOX1);
+        createMailbox(sessionOtherUser, MAILBOX_PATH_OTHER_USER_MAILBOX1);
 
         ByteArrayOutputStream destination = new 
ByteArrayOutputStream(BUFFER_SIZE);
         backup.backupAccount(USER1, destination);
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 437b289..901efe6 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
@@ -43,6 +43,7 @@ import org.apache.james.mailbox.MetadataWithMailboxId;
 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.InsufficientRightsException;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.exception.MailboxExistsException;
 import org.apache.james.mailbox.exception.MailboxNotFoundException;
@@ -322,6 +323,9 @@ public class StoreMailboxManager implements MailboxManager {
     public Optional<MailboxId> createMailbox(MailboxPath mailboxPath, 
MailboxSession mailboxSession)
             throws MailboxException {
         LOGGER.debug("createMailbox {}", mailboxPath);
+
+        assertMailboxPathBelongToUser(mailboxSession, mailboxPath);
+
         if (mailboxPath.getName().isEmpty()) {
             LOGGER.warn("Ignoring mailbox with empty name");
         } else {
@@ -367,6 +371,13 @@ public class StoreMailboxManager implements MailboxManager 
{
         return Optional.empty();
     }
 
+    private void assertMailboxPathBelongToUser(MailboxSession mailboxSession, 
MailboxPath mailboxPath) throws MailboxException {
+        if (!mailboxPath.belongsTo(mailboxSession)) {
+            throw new InsufficientRightsException("mailboxPath '" + 
mailboxPath.asString() + "'"
+                + " does not belong to user '" + 
mailboxSession.getUser().asString() + "'");
+        }
+    }
+
     public boolean isMailboxNameTooLong(MailboxPath mailboxPath) {
         return mailboxPath.getName().length() > MAX_MAILBOX_NAME_LENGTH;
     }
diff --git 
a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailboxAppenderTest.java
 
b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailboxAppenderTest.java
index 39f377e..c12aaf6 100644
--- 
a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailboxAppenderTest.java
+++ 
b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailboxAppenderTest.java
@@ -63,7 +63,7 @@ public class MailboxAppenderTest {
         mailboxManager = 
InMemoryIntegrationResources.defaultResources().getMailboxManager();
         testee = new MailboxAppender(mailboxManager);
 
-        session = mailboxManager.createSystemSession("TEST");
+        session = mailboxManager.createSystemSession(USER);
     }
 
     @Test


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to