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]
