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 ro...@apache.org on 2016/12/21 08:48:45 UTC
[1/4] james-project git commit: JAMES-1888: MessageIdManager,
persist and delete must be attached to MailboxSession
Repository: james-project
Updated Branches:
refs/heads/master 27f1e48d4 -> 36b0ef6e8
JAMES-1888: MessageIdManager, persist and delete must be attached to MailboxSession
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/36b0ef6e
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/36b0ef6e
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/36b0ef6e
Branch: refs/heads/master
Commit: 36b0ef6e89e3eea5941322450ebff623e4028c19
Parents: 81832ae
Author: Quynh Nguyen <qn...@linagora.com>
Authored: Tue Dec 20 17:16:47 2016 +0700
Committer: Quynh Nguyen <qn...@linagora.com>
Committed: Wed Dec 21 09:08:18 2016 +0700
----------------------------------------------------------------------
.../mailbox/manager/MailboxManagerFixture.java | 34 +++++
.../CassandraMessageIdManagerTestSystem.java | 33 ++---
.../inmemory/InMemoryMessageIdManager.java | 21 +--
.../InMemoryMessageIdManagerTestSystem.java | 31 +++--
.../MessageIdManagerTestSystemProvider.java | 44 +-----
.../mailbox/store/StoreMessageIdManager.java | 9 +-
.../mailbox/store/StoreMessageManager.java | 4 +-
.../AbstractMessageIdManagerSideEffectTest.java | 35 ++---
.../AbstractMessageIdManagerStorageTest.java | 136 ++++++++-----------
.../store/MessageIdManagerTestSystem.java | 35 +----
.../StoreMessageIdManagerSideEffectTest.java | 4 -
.../store/StoreMessageIdManagerTestSystem.java | 19 ++-
.../store/TestMailboxSessionMapperFactory.java | 26 +++-
.../apache/mailet/base/MailAddressFixture.java | 1 -
14 files changed, 202 insertions(+), 230 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/36b0ef6e/mailbox/api/src/test/java/org/apache/james/mailbox/manager/MailboxManagerFixture.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/manager/MailboxManagerFixture.java b/mailbox/api/src/test/java/org/apache/james/mailbox/manager/MailboxManagerFixture.java
new file mode 100644
index 0000000..516e578
--- /dev/null
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/manager/MailboxManagerFixture.java
@@ -0,0 +1,34 @@
+/****************************************************************
+ * 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.manager;
+
+import org.apache.james.mailbox.model.MailboxPath;
+
+public class MailboxManagerFixture {
+ public static final String PRIVATE_NAMESPACE = "#private";
+
+ public static final String USER = "user";
+ public static final String OTHER_USER = "otheruser";
+
+ public static final MailboxPath MAILBOX_PATH1 = new MailboxPath(PRIVATE_NAMESPACE, USER, "INBOX");
+ public static final MailboxPath MAILBOX_PATH2 = new MailboxPath(PRIVATE_NAMESPACE, USER, "OUTBOX");
+ public static final MailboxPath MAILBOX_PATH3 = new MailboxPath(PRIVATE_NAMESPACE, USER, "SENT");
+ public static final MailboxPath MAILBOX_PATH4 = new MailboxPath(PRIVATE_NAMESPACE, OTHER_USER, "INBOX");
+}
http://git-wip-us.apache.org/repos/asf/james-project/blob/36b0ef6e/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerTestSystem.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerTestSystem.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerTestSystem.java
index fcbdca3..b5faa01 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerTestSystem.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerTestSystem.java
@@ -44,7 +44,7 @@ import org.apache.james.mailbox.cassandra.modules.CassandraMailboxModule;
import org.apache.james.mailbox.cassandra.modules.CassandraMessageModule;
import org.apache.james.mailbox.cassandra.modules.CassandraModSeqModule;
import org.apache.james.mailbox.cassandra.modules.CassandraUidModule;
-import org.apache.james.mailbox.mock.MockMailboxSession;
+import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.MessageId;
@@ -54,12 +54,10 @@ import org.apache.james.mailbox.store.MessageIdManagerTestSystem;
import org.apache.james.mailbox.store.NoMailboxPathLocker;
import org.apache.james.mailbox.store.StoreMessageIdManager;
import org.apache.james.mailbox.store.event.MailboxEventDispatcher;
-import org.apache.james.mailbox.store.mail.MailboxMapper;
import org.apache.james.mailbox.store.mail.model.Mailbox;
import org.apache.james.mailbox.store.mail.model.MailboxMessage;
import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder;
-import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
import org.apache.james.mailbox.store.mail.model.impl.SimpleMailboxMessage;
import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver;
@@ -101,39 +99,32 @@ public class CassandraMessageIdManagerTestSystem extends MessageIdManagerTestSys
new CassandraMessageId.Factory(),
quotaManager,
new DefaultQuotaRootResolver(mapperFactory));
- SimpleMailbox mailbox1 = new SimpleMailbox(new MailboxPath("#private", "user", "INBOX"), UID_VALIDITY, CassandraId.timeBased());
- SimpleMailbox mailbox2 = new SimpleMailbox(new MailboxPath("#private", "user", "OUTBOX"), UID_VALIDITY, CassandraId.timeBased());
- SimpleMailbox mailbox3 = new SimpleMailbox(new MailboxPath("#private", "user", "SENT"), UID_VALIDITY, CassandraId.timeBased());
- SimpleMailbox mailbox4 = new SimpleMailbox(new MailboxPath("#public", "otheruser", "INBOX"), UID_VALIDITY, CassandraId.timeBased());
- MockMailboxSession mailboxSession = new MockMailboxSession("user");
- MailboxMapper mailboxMapper = mapperFactory.getMailboxMapper(mailboxSession);
- mailboxMapper.save(mailbox1);
- mailboxMapper.save(mailbox2);
- mailboxMapper.save(mailbox3);
- mailboxMapper.save(mailbox4);
CassandraMailboxManager cassandraMailboxManager = new CassandraMailboxManager(mapperFactory, mock(Authenticator.class), new NoMailboxPathLocker(), new MessageParser(), messageIdFactory);
cassandraMailboxManager.init();
- return new CassandraMessageIdManagerTestSystem(messageIdManager, mailboxSession, mailbox1, mailbox2, mailbox3, mailbox4,
- messageIdFactory, mapperFactory, mailboxSession, cassandraMailboxManager);
+ return new CassandraMessageIdManagerTestSystem(messageIdManager, messageIdFactory, mapperFactory, cassandraMailboxManager);
}
private final CassandraMessageId.Factory messageIdFactory;
private final CassandraMailboxSessionMapperFactory mapperFactory;
- private final MailboxSession mailboxSession;
private final CassandraMailboxManager cassandraMailboxManager;
- public CassandraMessageIdManagerTestSystem(MessageIdManager messageIdManager, MailboxSession session, Mailbox mailbox1, Mailbox mailbox2, Mailbox mailbox3, Mailbox mailbox4, CassandraMessageId.Factory messageIdFactory, CassandraMailboxSessionMapperFactory mapperFactory, MailboxSession mailboxSession, CassandraMailboxManager cassandraMailboxManager) {
- super(messageIdManager, session, mailbox1, mailbox2, mailbox3, mailbox4);
+ public CassandraMessageIdManagerTestSystem(MessageIdManager messageIdManager, CassandraMessageId.Factory messageIdFactory, CassandraMailboxSessionMapperFactory mapperFactory, CassandraMailboxManager cassandraMailboxManager) {
+ super(messageIdManager);
this.messageIdFactory = messageIdFactory;
this.mapperFactory = mapperFactory;
- this.mailboxSession = mailboxSession;
this.cassandraMailboxManager = cassandraMailboxManager;
}
@Override
- public MessageId persist(MailboxId mailboxId, MessageUid uid, Flags flags) {
+ public Mailbox createMailbox(MailboxPath mailboxPath, MailboxSession session) throws MailboxException {
+ cassandraMailboxManager.createMailbox(mailboxPath, session);
+ return mapperFactory.getMailboxMapper(session).findMailboxByPath(mailboxPath);
+ }
+
+ @Override
+ public MessageId persist(MailboxId mailboxId, MessageUid uid, Flags flags, MailboxSession mailboxSession) {
try {
CassandraMessageId messageId = messageIdFactory.generate();
Mailbox mailbox = mapperFactory.getMailboxMapper(mailboxSession).findMailboxById(mailboxId);
@@ -150,7 +141,7 @@ public class CassandraMessageIdManagerTestSystem extends MessageIdManagerTestSys
}
@Override
- public void deleteMailbox(MailboxId mailboxId) {
+ public void deleteMailbox(MailboxId mailboxId, MailboxSession mailboxSession) {
try {
Mailbox mailbox = mapperFactory.getMailboxMapper(mailboxSession).findMailboxById(mailboxId);
cassandraMailboxManager.deleteMailbox(new MailboxPath(mailbox.getNamespace(), mailbox.getUser(), mailbox.getName()), mailboxSession);
http://git-wip-us.apache.org/repos/asf/james-project/blob/36b0ef6e/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManager.java
----------------------------------------------------------------------
diff --git a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManager.java b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManager.java
index b10b599..4d40e1b 100644
--- a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManager.java
+++ b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManager.java
@@ -27,7 +27,6 @@ import javax.mail.Flags;
import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxSession;
-import org.apache.james.mailbox.MailboxSession.SessionType;
import org.apache.james.mailbox.MessageIdManager;
import org.apache.james.mailbox.MessageManager;
import org.apache.james.mailbox.MessageManager.FlagsUpdateMode;
@@ -202,18 +201,22 @@ public class InMemoryMessageIdManager implements MessageIdManager {
});
}
- private Optional<MessageResult> findMessageWithId(MailboxId mailboxId, final MessageId messageId, FetchGroup fetchGroup, MailboxSession mailboxSession) throws MailboxException {
+ private Optional<MessageResult> findMessageWithId(MailboxId mailboxId, MessageId messageId, FetchGroup fetchGroup, MailboxSession mailboxSession) throws MailboxException {
return FluentIterable.from(retrieveAllMessages(mailboxId, fetchGroup, mailboxSession))
- .filter(new Predicate<MessageResult>() {
-
- @Override
- public boolean apply(MessageResult messageResult) {
- return messageResult.getMessageId().equals(messageId);
- }
- })
+ .filter(filterByMessageId(messageId))
.first();
}
+ private Predicate<MessageResult> filterByMessageId(final MessageId messageId) {
+ return new Predicate<MessageResult>() {
+
+ @Override
+ public boolean apply(MessageResult messageResult) {
+ return messageResult.getMessageId().equals(messageId);
+ }
+ };
+ }
+
private ImmutableList<MessageResult> retrieveAllMessages(MailboxId mailboxId, FetchGroup fetchGroup, MailboxSession mailboxSession) throws MailboxException {
MessageManager messageManager = mailboxManager.getMailbox(mailboxId, mailboxSession);
return ImmutableList.copyOf(messageManager.getMessages(MessageRange.all(), fetchGroup, mailboxSession));
http://git-wip-us.apache.org/repos/asf/james-project/blob/36b0ef6e/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerTestSystem.java
----------------------------------------------------------------------
diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerTestSystem.java b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerTestSystem.java
index 466d698..649f6cb 100644
--- a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerTestSystem.java
+++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerTestSystem.java
@@ -30,10 +30,12 @@ import org.apache.james.mailbox.MessageUid;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxMetaData;
+import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.MailboxQuery;
import org.apache.james.mailbox.model.MessageId;
import org.apache.james.mailbox.store.MessageIdManagerTestSystem;
import org.apache.james.mailbox.store.mail.model.Mailbox;
+import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
import com.google.common.base.Optional;
import com.google.common.base.Predicate;
@@ -44,24 +46,29 @@ public class InMemoryMessageIdManagerTestSystem extends MessageIdManagerTestSyst
private static final MessageId FIRST_MESSAGE_ID = InMemoryMessageId.of(1);
private static final long ONE_HUNDRED = 100;
+ private static final int UID_VALIDITY = 1024;
private final MailboxManager mailboxManager;
- private final MailboxSession mailboxSession;
private Optional<MessageId> lastMessageIdUsed;
- public InMemoryMessageIdManagerTestSystem(MailboxManager mailboxManager, MailboxSession mailboxSession,
- Mailbox mailbox1, Mailbox mailbox2, Mailbox mailbox3, Mailbox mailbox4) {
- super(new InMemoryMessageIdManager(mailboxManager), mailboxSession, mailbox1, mailbox2, mailbox3, mailbox4);
+ public InMemoryMessageIdManagerTestSystem(MailboxManager mailboxManager) {
+ super(new InMemoryMessageIdManager(mailboxManager));
this.mailboxManager = mailboxManager;
- this.mailboxSession = mailboxSession;
this.lastMessageIdUsed = Optional.absent();
}
@Override
- public MessageId persist(MailboxId mailboxId, MessageUid uid, Flags flags) {
+ public Mailbox createMailbox(MailboxPath mailboxPath, MailboxSession mailboxSession) throws MailboxException {
+ mailboxManager.createMailbox(mailboxPath, mailboxSession);
+ MessageManager messageManager = mailboxManager.getMailbox(mailboxPath, mailboxSession);
+ return new SimpleMailbox(mailboxPath, UID_VALIDITY, messageManager.getId());
+ }
+
+ @Override
+ public MessageId persist(MailboxId mailboxId, MessageUid uid, Flags flags, MailboxSession session) {
try {
- MessageManager messageManager = mailboxManager.getMailbox(mailboxId, mailboxSession);
- MessageId messageId = messageManager.appendMessage(new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), mailboxSession, false, flags)
+ MessageManager messageManager = mailboxManager.getMailbox(mailboxId, session);
+ MessageId messageId = messageManager.appendMessage(new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), session, false, flags)
.getMessageId();
lastMessageIdUsed = Optional.of(messageId);
return messageId;
@@ -76,18 +83,18 @@ public class InMemoryMessageIdManagerTestSystem extends MessageIdManagerTestSyst
}
@Override
- public void deleteMailbox(final MailboxId mailboxId) {
+ public void deleteMailbox(final MailboxId mailboxId, MailboxSession session) {
try {
- Optional<MailboxMetaData> mailbox = retrieveMailbox(mailboxId);
+ Optional<MailboxMetaData> mailbox = retrieveMailbox(mailboxId, session);
if (mailbox.isPresent()) {
- mailboxManager.deleteMailbox(mailbox.get().getPath(), mailboxSession);
+ mailboxManager.deleteMailbox(mailbox.get().getPath(), session);
}
} catch (MailboxException e) {
Throwables.propagate(e);
}
}
- private Optional<MailboxMetaData> retrieveMailbox(final MailboxId mailboxId) throws MailboxException {
+ private Optional<MailboxMetaData> retrieveMailbox(final MailboxId mailboxId, MailboxSession mailboxSession) throws MailboxException {
MailboxQuery userMailboxesQuery = MailboxQuery.builder(mailboxSession).expression("*").build();
return FluentIterable.from(mailboxManager.search(userMailboxesQuery, mailboxSession))
.filter(new Predicate<MailboxMetaData>() {
http://git-wip-us.apache.org/repos/asf/james-project/blob/36b0ef6e/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MessageIdManagerTestSystemProvider.java
----------------------------------------------------------------------
diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MessageIdManagerTestSystemProvider.java b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MessageIdManagerTestSystemProvider.java
index 206c0d3..35736fe 100644
--- a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MessageIdManagerTestSystemProvider.java
+++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MessageIdManagerTestSystemProvider.java
@@ -18,22 +18,16 @@
****************************************************************/
package org.apache.james.mailbox.inmemory;
-import org.apache.james.mailbox.MailboxSession;
-import org.apache.james.mailbox.MessageManager;
import org.apache.james.mailbox.acl.GroupMembershipResolver;
import org.apache.james.mailbox.acl.MailboxACLResolver;
import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver;
import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
-import org.apache.james.mailbox.exception.BadCredentialsException;
import org.apache.james.mailbox.exception.MailboxException;
-import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.manager.MailboxManagerFixture;
import org.apache.james.mailbox.model.MessageId;
import org.apache.james.mailbox.store.FakeAuthenticator;
import org.apache.james.mailbox.store.MessageIdManagerTestSystem;
import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
-import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import com.google.common.base.Throwables;
@@ -41,39 +35,11 @@ public class MessageIdManagerTestSystemProvider {
private static final int LIMIT_ANNOTATIONS = 3;
private static final int LIMIT_ANNOTATION_SIZE = 30;
- private static final int UID_VALIDITY = 1024;
- private static final Logger LOGGER = LoggerFactory.getLogger(InMemoryMessageIdManagerStorageTest.class);
- private static final String USER = "user";
- private static final String OTHER_USER = "otheruser";
+
private static final String PASSWORD = "password";
public static MessageIdManagerTestSystem createTestingData() {
- InMemoryMailboxManager mailboxManager = createMailboxManager();
-
- MailboxSession mailboxSession = createMailboxSession(mailboxManager);
- MailboxPath mailboxPath = new MailboxPath("#private", USER, "INBOX");
- SimpleMailbox mailbox1 = createMailbox(mailboxManager, mailboxPath, mailboxSession);
- MailboxPath mailboxPath2 = new MailboxPath("#private", USER, "mailbox2");
- SimpleMailbox mailbox2 = createMailbox(mailboxManager, mailboxPath2, mailboxSession);
- MailboxPath mailboxPath3 = new MailboxPath("#private", USER, "mailbox3");
- SimpleMailbox mailbox3 = createMailbox(mailboxManager, mailboxPath3, mailboxSession);
- MailboxPath mailboxPath4 = new MailboxPath("#public", OTHER_USER, "mailbox4");
- SimpleMailbox mailbox4 = createMailbox(mailboxManager, mailboxPath4, mailboxSession);
- return new InMemoryMessageIdManagerTestSystem(mailboxManager, mailboxSession, mailbox1, mailbox2, mailbox3, mailbox4);
- }
-
- private static MailboxSession createMailboxSession(InMemoryMailboxManager mailboxManager) {
- return mailboxManager.createSystemSession(USER, LOGGER);
- }
-
- private static SimpleMailbox createMailbox(InMemoryMailboxManager mailboxManager, MailboxPath mailboxPath, MailboxSession mailboxSession) {
- try {
- mailboxManager.createMailbox(mailboxPath, mailboxSession);
- MessageManager messageManager = mailboxManager.getMailbox(mailboxPath, mailboxSession);
- return new SimpleMailbox(mailboxPath, UID_VALIDITY, messageManager.getId());
- } catch (MailboxException e) {
- throw Throwables.propagate(e);
- }
+ return new InMemoryMessageIdManagerTestSystem(createMailboxManager());
}
private static InMemoryMailboxManager createMailboxManager() {
@@ -84,8 +50,8 @@ public class MessageIdManagerTestSystemProvider {
InMemoryMailboxSessionMapperFactory mailboxSessionMapperFactory = new InMemoryMailboxSessionMapperFactory();
MessageId.Factory messageIdFactory = new InMemoryMessageId.Factory();
FakeAuthenticator authenticator = new FakeAuthenticator();
- authenticator.addUser(USER, PASSWORD);
- authenticator.addUser(OTHER_USER, PASSWORD);
+ authenticator.addUser(MailboxManagerFixture.USER, PASSWORD);
+ authenticator.addUser(MailboxManagerFixture.OTHER_USER, PASSWORD);
InMemoryMailboxManager mailboxManager = new InMemoryMailboxManager(mailboxSessionMapperFactory, authenticator,
aclResolver, groupMembershipResolver, messageParser, messageIdFactory, LIMIT_ANNOTATIONS, LIMIT_ANNOTATION_SIZE);
http://git-wip-us.apache.org/repos/asf/james-project/blob/36b0ef6e/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
index fcbc10a..6f436a1 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
@@ -31,7 +31,6 @@ import javax.mail.Flags;
import javax.mail.internet.SharedInputStream;
import org.apache.james.mailbox.MailboxSession;
-import org.apache.james.mailbox.MailboxSession.SessionType;
import org.apache.james.mailbox.MessageIdManager;
import org.apache.james.mailbox.MessageManager;
import org.apache.james.mailbox.MessageUid;
@@ -274,12 +273,12 @@ public class StoreMessageIdManager implements MessageIdManager {
}
private void allowOnMailboxSession(List<MailboxId> mailboxIds, MailboxSession mailboxSession, MailboxMapper mailboxMapper) throws MailboxNotFoundException {
- boolean isForbidden = FluentIterable.from(mailboxIds)
+ Optional<MailboxId> mailboxForbidden = FluentIterable.from(mailboxIds)
.firstMatch(isMailboxOfOtherUser(mailboxSession, mailboxMapper))
- .isPresent();
+ .or(Optional.<MailboxId>absent());
- if (isForbidden) {
- throw new MailboxNotFoundException("Mailbox does not belong to session: ");
+ if (mailboxForbidden.isPresent()) {
+ throw new MailboxNotFoundException("Mailbox with Id " + mailboxForbidden.get() + " does not belong to session");
}
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/36b0ef6e/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
index 452d877..4a394d3 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
@@ -41,7 +41,6 @@ import org.apache.commons.io.input.TeeInputStream;
import org.apache.james.mailbox.MailboxListener;
import org.apache.james.mailbox.MailboxPathLocker;
import org.apache.james.mailbox.MailboxSession;
-import org.apache.james.mailbox.MailboxSession.SessionType;
import org.apache.james.mailbox.MailboxSession.User;
import org.apache.james.mailbox.MessageManager;
import org.apache.james.mailbox.MessageUid;
@@ -456,8 +455,7 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana
* @throws MailboxException
*/
public boolean isWriteable(MailboxSession session) throws MailboxException {
- return session.getType() == SessionType.System
- || aclResolver.isReadWrite(myRights(session), getSharedPermanentFlags(session));
+ return aclResolver.isReadWrite(myRights(session), getSharedPermanentFlags(session));
}
/**
http://git-wip-us.apache.org/repos/asf/james-project/blob/36b0ef6e/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
index 957d51d..ccf3aae 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
@@ -40,6 +40,7 @@ import org.apache.james.mailbox.MessageManager.FlagsUpdateMode;
import org.apache.james.mailbox.MessageUid;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.exception.OverQuotaException;
+import org.apache.james.mailbox.manager.MailboxManagerFixture;
import org.apache.james.mailbox.mock.MockMailboxSession;
import org.apache.james.mailbox.model.FetchGroupImpl;
import org.apache.james.mailbox.model.MailboxId;
@@ -63,7 +64,6 @@ import com.google.common.collect.FluentIterable;
import com.google.common.collect.ImmutableList;
public abstract class AbstractMessageIdManagerSideEffectTest {
-
private static final Quota OVER_QUOTA = QuotaImpl.quota(102, 100);
private static final MessageUid messageUid1 = MessageUid.of(111);
@@ -91,9 +91,10 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
session = new MockMailboxSession("user");
testingData = createTestSystem(quotaManager, dispatcher);
messageIdManager = testingData.getMessageIdManager();
- mailbox1 = testingData.getMailbox1();
- mailbox2 = testingData.getMailbox2();
- mailbox3 = testingData.getMailbox3();
+
+ mailbox1 = testingData.createMailbox(MailboxManagerFixture.MAILBOX_PATH1, session);
+ mailbox2 = testingData.createMailbox(MailboxManagerFixture.MAILBOX_PATH2, session);
+ mailbox3 = testingData.createMailbox(MailboxManagerFixture.MAILBOX_PATH3, session);
}
@After
@@ -104,7 +105,7 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
@Test
public void deleteShouldCallEventDispatcher() throws Exception {
givenUnlimitedQuota();
- MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS);
+ MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS, session);
reset(dispatcher);
MessageResult messageResult = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session).get(0);
@@ -119,7 +120,7 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
@Test
public void deleteShouldNotCallEventDispatcherWhenMessageIsInWrongMailbox() throws Exception {
givenUnlimitedQuota();
- MessageId messageId = testingData.persist(mailbox2.getMailboxId(), messageUid1, FLAGS);
+ MessageId messageId = testingData.persist(mailbox2.getMailboxId(), messageUid1, FLAGS, session);
reset(dispatcher);
messageIdManager.delete(messageId, ImmutableList.of(mailbox1.getMailboxId()), session);
@@ -130,7 +131,7 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
@Test
public void setInMailboxesShouldNotCallDispatcherWhenMessageAlreadyInMailbox() throws Exception {
givenUnlimitedQuota();
- MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS);
+ MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS, session);
reset(dispatcher);
messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId()), session);
@@ -141,7 +142,7 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
@Test
public void setInMailboxesShouldCallDispatcher() throws Exception {
givenUnlimitedQuota();
- MessageId messageId = testingData.persist(mailbox2.getMailboxId(), messageUid1, FLAGS);
+ MessageId messageId = testingData.persist(mailbox2.getMailboxId(), messageUid1, FLAGS, session);
reset(dispatcher);
messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session);
@@ -159,7 +160,7 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
@Test
public void setInMailboxesShouldCallDispatcherWithMultipleMailboxes() throws Exception {
givenUnlimitedQuota();
- MessageId messageId = testingData.persist(mailbox2.getMailboxId(), messageUid1, FLAGS);
+ MessageId messageId = testingData.persist(mailbox2.getMailboxId(), messageUid1, FLAGS, session);
reset(dispatcher);
messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId(), mailbox3.getMailboxId()), session);
@@ -183,7 +184,7 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
@Test
public void setInMailboxesShouldThrowExceptionWhenOverQuota() throws Exception {
- MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS);
+ MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS, session);
reset(dispatcher);
when(quotaManager.getStorageQuota(any(QuotaRoot.class))).thenReturn(QuotaImpl.unlimited());
when(quotaManager.getMessageQuota(any(QuotaRoot.class))).thenReturn(OVER_QUOTA);
@@ -197,7 +198,7 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
@Test
public void setInMailboxesShouldCallDispatchForOnlyAddedAndRemovedMailboxes() throws Exception {
givenUnlimitedQuota();
- MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS);
+ MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS, session);
messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session);
reset(dispatcher);
@@ -214,7 +215,7 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
public void setFlagsShouldNotDispatchWhenFlagAlreadySet() throws Exception {
givenUnlimitedQuota();
Flags newFlags = new Flags(Flags.Flag.SEEN);
- MessageId messageId = testingData.persist(mailbox2.getMailboxId(), messageUid1, newFlags);
+ MessageId messageId = testingData.persist(mailbox2.getMailboxId(), messageUid1, newFlags, session);
reset(dispatcher);
messageIdManager.setFlags(newFlags, MessageManager.FlagsUpdateMode.ADD, messageId, ImmutableList.of(mailbox2.getMailboxId()), session);
@@ -226,7 +227,7 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
public void setFlagsShouldNotDispatchWhenMessageAlreadyInMailbox() throws Exception {
givenUnlimitedQuota();
Flags newFlags = new Flags(Flags.Flag.SEEN);
- MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, newFlags);
+ MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, newFlags, session);
messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox2.getMailboxId()), session);
reset(dispatcher);
@@ -239,7 +240,7 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
public void setFlagsShouldNotDispatchWhenMessageDoesNotBelongToMailbox() throws Exception {
givenUnlimitedQuota();
Flags newFlags = new Flags(Flags.Flag.SEEN);
- MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS);
+ MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS, session);
reset(dispatcher);
messageIdManager.setFlags(newFlags, MessageManager.FlagsUpdateMode.ADD, messageId, ImmutableList.of(mailbox2.getMailboxId()), session);
@@ -251,7 +252,7 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
public void setFlagsShouldNotDispatchWhenEmptyMailboxes() throws Exception {
givenUnlimitedQuota();
Flags newFlags = new Flags(Flags.Flag.SEEN);
- MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS);
+ MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS, session);
reset(dispatcher);
messageIdManager.setFlags(newFlags, MessageManager.FlagsUpdateMode.ADD, messageId, ImmutableList.<MailboxId>of(), session);
@@ -263,7 +264,7 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
public void setFlagsShouldDispatchWhenMessageBelongsToAllMailboxes() throws Exception {
givenUnlimitedQuota();
Flags newFlags = new Flags(Flags.Flag.SEEN);
- MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS);
+ MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS, session);
messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session);
reset(dispatcher);
@@ -276,7 +277,7 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
@Test
public void setFlagsShouldDispatchWhenMessageBelongsToTheMailboxes() throws Exception {
givenUnlimitedQuota();
- MessageId messageId = testingData.persist(mailbox2.getMailboxId(), messageUid1, FLAGS);
+ MessageId messageId = testingData.persist(mailbox2.getMailboxId(), messageUid1, FLAGS, session);
reset(dispatcher);
Flags newFlags = new Flags(Flags.Flag.SEEN);
http://git-wip-us.apache.org/repos/asf/james-project/blob/36b0ef6e/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerStorageTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerStorageTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerStorageTest.java
index b8c8565..97d35fe 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerStorageTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerStorageTest.java
@@ -33,6 +33,7 @@ import org.apache.james.mailbox.MessageIdManager;
import org.apache.james.mailbox.MessageManager;
import org.apache.james.mailbox.MessageUid;
import org.apache.james.mailbox.exception.MailboxNotFoundException;
+import org.apache.james.mailbox.manager.MailboxManagerFixture;
import org.apache.james.mailbox.mock.MockMailboxSession;
import org.apache.james.mailbox.model.FetchGroupImpl;
import org.apache.james.mailbox.model.MailboxId;
@@ -54,8 +55,8 @@ import com.google.common.collect.ImmutableMap;
public abstract class AbstractMessageIdManagerStorageTest {
public static final Flags FLAGS = new Flags();
- private static final MailboxSession OTHER_USER = new MockMailboxSession("otheruser");
private static final MailboxSession SYSTEM_USER = new MockMailboxSession("systemuser", SessionType.System);
+
private static final MessageUid messageUid1 = MessageUid.of(111);
private static final MessageUid messageUid2 = MessageUid.of(222);
@@ -93,6 +94,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
private Mailbox mailbox3;
private Mailbox mailbox4;
private MailboxSession session;
+ private MailboxSession otherSession;
@Rule
public ExpectedException expectedException = ExpectedException.none();
@@ -101,14 +103,15 @@ public abstract class AbstractMessageIdManagerStorageTest {
@Before
public void setUp() throws Exception {
+ session = new MockMailboxSession(MailboxManagerFixture.USER);
+ otherSession = new MockMailboxSession(MailboxManagerFixture.OTHER_USER);
testingData = createTestingData();
messageIdManager = testingData.getMessageIdManager();
- mailbox1 = testingData.getMailbox1();
- mailbox2 = testingData.getMailbox2();
- mailbox3 = testingData.getMailbox3();
- mailbox4 = testingData.getMailbox4();
- session = new MockMailboxSession("user");
+ mailbox1 = testingData.createMailbox(MailboxManagerFixture.MAILBOX_PATH1, session);
+ mailbox2 = testingData.createMailbox(MailboxManagerFixture.MAILBOX_PATH2, session);
+ mailbox3 = testingData.createMailbox(MailboxManagerFixture.MAILBOX_PATH3, session);
+ mailbox4 = testingData.createMailbox(MailboxManagerFixture.MAILBOX_PATH4, otherSession);
}
@After
@@ -147,31 +150,23 @@ public abstract class AbstractMessageIdManagerStorageTest {
@Test
public void getMessagesShouldReturnStoredResults() throws Exception {
- MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS);
+ MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS, session);
assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session))
.hasSize(1);
}
@Test
- public void getMessageShouldReturnMessageBelongToUser() throws Exception {
- MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS);
+ public void getMessageShouldReturnOnlyMessageBelongingToCurrentUser() throws Exception {
+ MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS, session);
assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session)).hasSize(1);
- assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, OTHER_USER)).isEmpty();
- }
-
- @Test
- public void getMessageShouldReturnAllWithSystemSession() throws Exception {
- MessageId messageId = testingData.persist(mailbox4.getMailboxId(), messageUid1, FLAGS);
-
- assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session)).isEmpty();;
- assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, SYSTEM_USER)).hasSize(1);
+ assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, otherSession)).isEmpty();
}
@Test
public void setInMailboxesShouldSetMessageInBothMailboxes() throws Exception {
- MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS);
+ MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS, session);
messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session);
@@ -181,7 +176,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
@Test
public void setInMailboxesShouldNotDuplicateMessageIfSameMailbox() throws Exception {
- MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS);
+ MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS, session);
messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId()), session);
@@ -191,8 +186,8 @@ public abstract class AbstractMessageIdManagerStorageTest {
@Test
public void setInMailboxesShouldSetHighestUidInNewMailbox() throws Exception {
- MessageId messageId1 = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS);
- MessageId messageId2 = testingData.persist(mailbox2.getMailboxId(), messageUid2, FLAGS);
+ MessageId messageId1 = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS, session);
+ MessageId messageId2 = testingData.persist(mailbox2.getMailboxId(), messageUid2, FLAGS, session);
messageIdManager.setInMailboxes(messageId2, ImmutableList.of(mailbox1.getMailboxId()), session);
@@ -211,8 +206,8 @@ public abstract class AbstractMessageIdManagerStorageTest {
@Test
public void setInMailboxesShouldSetHighestModSeqInNewMailbox() throws Exception {
- MessageId messageId1 = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS);
- MessageId messageId2 = testingData.persist(mailbox2.getMailboxId(), messageUid2, FLAGS);
+ MessageId messageId1 = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS, session);
+ MessageId messageId2 = testingData.persist(mailbox2.getMailboxId(), messageUid2, FLAGS, session);
messageIdManager.setInMailboxes(messageId2, ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session);
@@ -231,7 +226,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
@Test
public void setInMailboxesShouldNotChangeUidAndModSeqInOriginalMailbox() throws Exception {
- MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS);
+ MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS, session);
MessageResult messageResult1 = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session).get(0);
MessageUid messageUid1 = messageResult1.getUid();
long modSeq1 = messageResult1.getModSeq();
@@ -252,7 +247,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
@Test
public void setInMailboxesShouldAddAndRemoveMailboxes() throws Exception {
- MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS);
+ MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS, session);
messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session);
messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox3.getMailboxId()), session);
@@ -266,7 +261,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
@Test
public void setInMailboxesShouldReplaceFlagsOfMessageInAddedMailboxes() throws Exception {
Flags newFlags = new Flags(Flags.Flag.SEEN);
- MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS);
+ MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS, session);
messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session);
messageIdManager.setFlags(newFlags, MessageManager.FlagsUpdateMode.ADD, messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session);
@@ -284,23 +279,23 @@ public abstract class AbstractMessageIdManagerStorageTest {
public void setInMailboxesShouldThrowExceptionWhenSetInMailboxesInAnotherSession() throws Exception {
expectedException.expect(MailboxNotFoundException.class);
- MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS);
+ MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS, session);
- messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), OTHER_USER);
+ messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), otherSession);
}
@Test
public void setInMailboxesShouldThrowExceptionWhenOneMailboxDoesNotBelongToMailboxSession() throws Exception {
expectedException.expect(MailboxNotFoundException.class);
- MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS);
+ MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS, session);
messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox4.getMailboxId()), session);
}
@Test
public void setInMailboxesShouldIgnoreMessagesBelongingToOtherUsers() throws Exception {
- MessageId messageId = testingData.persist(mailbox4.getMailboxId(), messageUid1, FLAGS);
+ MessageId messageId = testingData.persist(mailbox4.getMailboxId(), messageUid1, FLAGS, otherSession);
messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId()), session);
@@ -308,18 +303,8 @@ public abstract class AbstractMessageIdManagerStorageTest {
}
@Test
- public void setInMailboxesShouldSetMessageWhenSystemSession() throws Exception {
- MessageId messageId = testingData.persist(mailbox4.getMailboxId(), messageUid1, FLAGS);
-
- messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId()), SYSTEM_USER);
-
- assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session)).hasSize(1);
- assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, SYSTEM_USER)).hasSize(1);
- }
-
- @Test
public void deleteMessageShouldRemoveMessageFromMailbox() throws Exception {
- MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS);
+ MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS, session);
messageIdManager.delete(messageId, ImmutableList.of(mailbox1.getMailboxId()), session);
@@ -328,7 +313,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
@Test
public void deleteMessageShouldRemoveMessageOnlyFromMailbox() throws Exception {
- MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS);
+ MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS, session);
messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session);
messageIdManager.delete(messageId, ImmutableList.of(mailbox1.getMailboxId()), session);
@@ -340,7 +325,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
@Test
public void deleteMessageShouldNotRemoveMessageOnAnotherMailbox() throws Exception {
- MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS);
+ MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS, session);
messageIdManager.delete(messageId, ImmutableList.of(mailbox2.getMailboxId()), session);
@@ -353,24 +338,25 @@ public abstract class AbstractMessageIdManagerStorageTest {
public void deleteMessageShouldThrowExceptionWhenDeletingOnOtherSession() throws Exception {
expectedException.expect(MailboxNotFoundException.class);
- MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS);
+ MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS, session);
- messageIdManager.delete(messageId, ImmutableList.of(mailbox1.getMailboxId()), OTHER_USER);
+ messageIdManager.delete(messageId, ImmutableList.of(mailbox1.getMailboxId()), otherSession);
}
@Test
- public void deleteMessageShouldWorkWhenDeletingOnSystemSession() throws Exception {
- MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS);
+ public void deleteMessageShouldThrowExceptionWhenDeletingOnSystemSession() throws Exception {
+ expectedException.expect(MailboxNotFoundException.class);
- messageIdManager.delete(messageId, ImmutableList.of(mailbox1.getMailboxId()), SYSTEM_USER);
+ MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS, session);
- assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session)).isEmpty();
+ messageIdManager.delete(messageId, ImmutableList.of(mailbox1.getMailboxId()), SYSTEM_USER);
}
@Test
public void deleteMessageShouldThrowExceptionWhenOneMailboxDoesNotBelongToUser() throws Exception {
expectedException.expect(MailboxNotFoundException.class);
- MessageId messageId = testingData.persist(mailbox4.getMailboxId(), messageUid1, FLAGS);
+
+ MessageId messageId = testingData.persist(mailbox4.getMailboxId(), messageUid1, FLAGS, otherSession);
messageIdManager.delete(messageId, ImmutableList.of(mailbox4.getMailboxId()), session);
}
@@ -378,7 +364,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
@Test
public void setFlagsShouldUpdateFlags() throws Exception {
Flags newFlags = new Flags(Flags.Flag.SEEN);
- MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS);
+ MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS, session);
messageIdManager.setFlags(newFlags, MessageManager.FlagsUpdateMode.ADD, messageId, ImmutableList.of(mailbox1.getMailboxId()), session);
@@ -389,7 +375,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
@Test
public void setFlagsShouldNotChangeTheUid() throws Exception {
Flags newFlags = new Flags(Flags.Flag.SEEN);
- MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS);
+ MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS, session);
MessageResult messageResult1 = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session).get(0);
MessageUid messageUid1 = messageResult1.getUid();
@@ -405,7 +391,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
@Test
public void setFlagsShouldChangeTheModSeq() throws Exception {
Flags newFlags = new Flags(Flags.Flag.SEEN);
- MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS);
+ MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS, session);
MessageResult messageResult1 = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session).get(0);
long modSeq1 = messageResult1.getModSeq();
@@ -421,7 +407,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
@Test
public void setFlagsShouldChangeFlagsInAllMailboxes() throws Exception {
Flags newFlags = new Flags(Flags.Flag.SEEN);
- MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS);
+ MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS, session);
messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session);
messageIdManager.setFlags(newFlags, MessageManager.FlagsUpdateMode.ADD, messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session);
@@ -439,8 +425,8 @@ public abstract class AbstractMessageIdManagerStorageTest {
@Test
public void setFlagsShouldNotChangeFlagsOfAnotherMessageInSameMailbox() throws Exception {
Flags newFlags = new Flags(Flags.Flag.SEEN);
- MessageId messageId1 = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS);
- MessageId messageId2 = testingData.persist(mailbox1.getMailboxId(), messageUid2, FLAGS);
+ MessageId messageId1 = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS, session);
+ MessageId messageId2 = testingData.persist(mailbox1.getMailboxId(), messageUid2, FLAGS, session);
messageIdManager.setFlags(newFlags, MessageManager.FlagsUpdateMode.ADD, messageId2, ImmutableList.of(mailbox1.getMailboxId()), session);
@@ -456,7 +442,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
@Test
public void setFlagsShouldNotChangeFlagsWhenEmptyMailboxes() throws Exception {
Flags newFlags = new Flags(Flags.Flag.SEEN);
- MessageId messageId1 = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS);
+ MessageId messageId1 = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS, session);
messageIdManager.setFlags(newFlags, MessageManager.FlagsUpdateMode.ADD, messageId1, ImmutableList.<MailboxId>of(), session);
@@ -472,7 +458,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
@Test
public void setFlagsShouldNotChangeFlagsWhenMessageDoesNotBelongToTheMailboxes() throws Exception {
Flags newFlags = new Flags(Flags.Flag.SEEN);
- MessageId messageId1 = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS);
+ MessageId messageId1 = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS, session);
messageIdManager.setFlags(newFlags, MessageManager.FlagsUpdateMode.ADD, messageId1, ImmutableList.of(mailbox2.getMailboxId()), session);
@@ -488,8 +474,8 @@ public abstract class AbstractMessageIdManagerStorageTest {
@Test
public void setFlagsShouldChangeFlagsWhenMessageBelongsToTheMailboxes() throws Exception {
Flags newFlags = new Flags(Flags.Flag.SEEN);
- MessageId messageId1 = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS);
- MessageId messageId2 = testingData.persist(mailbox2.getMailboxId(), messageUid2, FLAGS);
+ MessageId messageId1 = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS, session);
+ MessageId messageId2 = testingData.persist(mailbox2.getMailboxId(), messageUid2, FLAGS, session);
messageIdManager.setFlags(newFlags, MessageManager.FlagsUpdateMode.ADD, messageId1, ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session);
@@ -512,32 +498,26 @@ public abstract class AbstractMessageIdManagerStorageTest {
expectedException.expect(MailboxNotFoundException.class);
Flags newFlags = new Flags(Flags.Flag.SEEN);
- MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS);
+ MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS, session);
- messageIdManager.setFlags(newFlags, MessageManager.FlagsUpdateMode.ADD, messageId, ImmutableList.of(mailbox1.getMailboxId()), OTHER_USER);
+ messageIdManager.setFlags(newFlags, MessageManager.FlagsUpdateMode.ADD, messageId, ImmutableList.of(mailbox1.getMailboxId()), otherSession);
}
@Test
- public void setFlagsShouldShouldWorkWhenSetFlagsOnSystemSession() throws Exception {
+ public void setFlagsShouldThrowExceptionWhenSetFlagsOnSystemSession() throws Exception {
+ expectedException.expect(MailboxNotFoundException.class);
+
Flags newFlags = new Flags(Flags.Flag.SEEN);
- MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS);
+ MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS, session);
messageIdManager.setFlags(newFlags, MessageManager.FlagsUpdateMode.ADD, messageId, ImmutableList.of(mailbox1.getMailboxId()), SYSTEM_USER);
-
- List<Flags> flags = FluentIterable
- .from(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session))
- .transform(getFlags())
- .toList();
-
- assertThat(flags).hasSize(1);
- assertThat(flags.get(0)).isEqualTo(newFlags);
}
@Test
public void setFlagsShouldThrowExceptionWhenMailboxDoesNotBelongToMailboxSession() throws Exception {
expectedException.expect(MailboxNotFoundException.class);
Flags newFlags = new Flags(Flags.Flag.SEEN);
- MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS);
+ MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS, session);
messageIdManager.setFlags(newFlags, MessageManager.FlagsUpdateMode.ADD, messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox4.getMailboxId()), session);
@@ -545,19 +525,19 @@ public abstract class AbstractMessageIdManagerStorageTest {
@Test
public void getMessageShouldBeEmptyWhenMessageHasNoMoreMailboxes() throws Exception {
- MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS);
+ MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS, session);
- testingData.deleteMailbox(mailbox1.getMailboxId());
+ testingData.deleteMailbox(mailbox1.getMailboxId(), session);
assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session)).isEmpty();
}
@Test
public void setInMailboxesShouldPreserveMessageFromOneMailboxDeletion() throws Exception {
- MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS);
+ MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS, session);
messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox2.getMailboxId()), session);
- testingData.deleteMailbox(mailbox1.getMailboxId());
+ testingData.deleteMailbox(mailbox1.getMailboxId(), session);
List<MessageResult> messageResults = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session);
assertThat(messageResults).hasSize(1);
http://git-wip-us.apache.org/repos/asf/james-project/blob/36b0ef6e/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageIdManagerTestSystem.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageIdManagerTestSystem.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageIdManagerTestSystem.java
index 06f1a1e..eeae592 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageIdManagerTestSystem.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageIdManagerTestSystem.java
@@ -24,48 +24,25 @@ import javax.mail.Flags;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.MessageIdManager;
import org.apache.james.mailbox.MessageUid;
+import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.model.MailboxId;
+import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.MessageId;
import org.apache.james.mailbox.store.mail.model.Mailbox;
public abstract class MessageIdManagerTestSystem {
private final MessageIdManager messageIdManager;
- private final MailboxSession session;
- private final Mailbox mailbox1;
- private final Mailbox mailbox2;
- private final Mailbox mailbox3;
- private final Mailbox mailbox4;
- public MessageIdManagerTestSystem(MessageIdManager messageIdManager, MailboxSession session,
- Mailbox mailbox1, Mailbox mailbox2, Mailbox mailbox3, Mailbox mailbox4) {
+ public MessageIdManagerTestSystem(MessageIdManager messageIdManager) {
this.messageIdManager = messageIdManager;
- this.session = session;
- this.mailbox1 = mailbox1;
- this.mailbox2 = mailbox2;
- this.mailbox3 = mailbox3;
- this.mailbox4 = mailbox4;
}
public MessageIdManager getMessageIdManager() {
return messageIdManager;
}
- public Mailbox getMailbox1() {
- return mailbox1;
- }
-
- public Mailbox getMailbox2() {
- return mailbox2;
- }
-
- public Mailbox getMailbox3() {
- return mailbox3;
- }
-
- public Mailbox getMailbox4() {
- return mailbox4;
- }
+ public abstract Mailbox createMailbox(MailboxPath mailboxPath, MailboxSession session) throws MailboxException;
/**
* Should take care of find returning the MailboxMessage
@@ -77,11 +54,11 @@ public abstract class MessageIdManagerTestSystem {
* @param flags
* @return the id of persisted message
*/
- public abstract MessageId persist(MailboxId mailboxId, MessageUid uid, Flags flags);
+ public abstract MessageId persist(MailboxId mailboxId, MessageUid uid, Flags flags, MailboxSession session);
public abstract MessageId createNotUsedMessageId();
- public abstract void deleteMailbox(MailboxId mailboxId);
+ public abstract void deleteMailbox(MailboxId mailboxId, MailboxSession session);
public abstract void clean();
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/36b0ef6e/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerSideEffectTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerSideEffectTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerSideEffectTest.java
index bfc0f93..d4445e9 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerSideEffectTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerSideEffectTest.java
@@ -38,10 +38,6 @@ public class StoreMessageIdManagerSideEffectTest extends AbstractMessageIdManage
quotaManager, new DefaultQuotaRootResolver(testMailboxSessionMapperFactory));
return new StoreMessageIdManagerTestSystem(messageIdManager,
- testMailboxSessionMapperFactory.getMailbox1(),
- testMailboxSessionMapperFactory.getMailbox2(),
- testMailboxSessionMapperFactory.getMailbox3(),
- testMailboxSessionMapperFactory.getMailbox4(),
messageIdFactory,
testMailboxSessionMapperFactory);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/36b0ef6e/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerTestSystem.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerTestSystem.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerTestSystem.java
index 5c2d84e..7c0c1fa 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerTestSystem.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerTestSystem.java
@@ -35,6 +35,7 @@ import org.apache.james.mailbox.MessageUid;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.mock.MockMailboxSession;
import org.apache.james.mailbox.model.MailboxId;
+import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.MessageId;
import org.apache.james.mailbox.store.mail.model.Mailbox;
import org.apache.james.mailbox.store.mail.model.MailboxMessage;
@@ -42,26 +43,30 @@ import org.apache.james.mailbox.store.mail.model.MailboxMessage;
import com.google.common.base.Throwables;
public class StoreMessageIdManagerTestSystem extends MessageIdManagerTestSystem {
- private static final MailboxSession EMPTY_MAILBOX_SESSION = new MockMailboxSession("user", SessionType.System);
+ private static final MailboxSession DEFAULT_MAILBOX_SESSION = new MockMailboxSession("user", SessionType.System);
private static final long MOD_SEQ = 18;
private static final ByteArrayInputStream ARRAY_INPUT_STREAM = new ByteArrayInputStream("".getBytes());
private final MessageId.Factory messageIdFactory;
private final TestMailboxSessionMapperFactory mapperFactory;
- public StoreMessageIdManagerTestSystem(MessageIdManager messageIdManager, Mailbox mailbox1, Mailbox mailbox2, Mailbox mailbox3, Mailbox mailbox4,
- MessageId.Factory messageIdFactory, TestMailboxSessionMapperFactory mapperFactory) {
- super(messageIdManager, EMPTY_MAILBOX_SESSION, mailbox1, mailbox2, mailbox3, mailbox4);
+ public StoreMessageIdManagerTestSystem(MessageIdManager messageIdManager, MessageId.Factory messageIdFactory, TestMailboxSessionMapperFactory mapperFactory) {
+ super(messageIdManager);
this.messageIdFactory = messageIdFactory;
this.mapperFactory = mapperFactory;
}
@Override
- public MessageId persist(MailboxId mailboxId, MessageUid uid, Flags flags) {
+ public Mailbox createMailbox(MailboxPath mailboxPath, MailboxSession session) throws MailboxException{
+ return mapperFactory.createMailboxMapper(session).findMailboxByPath(mailboxPath);
+ }
+
+ @Override
+ public MessageId persist(MailboxId mailboxId, MessageUid uid, Flags flags, MailboxSession session) {
MessageId messageId = messageIdFactory.generate();
try {
- mapperFactory.createMessageIdMapper(EMPTY_MAILBOX_SESSION)
+ mapperFactory.createMessageIdMapper(DEFAULT_MAILBOX_SESSION)
.save(createMessage(mailboxId, flags, messageId, uid));
return messageId;
} catch (MailboxException e) {
@@ -70,7 +75,7 @@ public class StoreMessageIdManagerTestSystem extends MessageIdManagerTestSystem
}
@Override
- public void deleteMailbox(MailboxId mailboxId) {
+ public void deleteMailbox(MailboxId mailboxId, MailboxSession mailboxSession) {
throw new NotImplementedException();
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/36b0ef6e/mailbox/store/src/test/java/org/apache/james/mailbox/store/TestMailboxSessionMapperFactory.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/TestMailboxSessionMapperFactory.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/TestMailboxSessionMapperFactory.java
index 9e8e236..e90e982 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/TestMailboxSessionMapperFactory.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/TestMailboxSessionMapperFactory.java
@@ -36,6 +36,7 @@ import org.apache.james.mailbox.MessageManager;
import org.apache.james.mailbox.MessageUid;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.exception.SubscriptionException;
+import org.apache.james.mailbox.manager.MailboxManagerFixture;
import org.apache.james.mailbox.model.MailboxACL;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxPath;
@@ -70,15 +71,18 @@ public class TestMailboxSessionMapperFactory extends MailboxSessionMapperFactory
private final SimpleMailbox mailbox2;
private final SimpleMailbox mailbox3;
private final SimpleMailbox mailbox4;
+
private final List<MailboxMessage> messages = new ArrayList<MailboxMessage>();
private final MailboxMapper mailboxMapper;
private final MessageIdMapper messageIdMapper;
public TestMailboxSessionMapperFactory() {
- mailbox1 = new SimpleMailbox(new MailboxPath("#private", "user", "INBOX"), UID_VALIDITY, TestId.of(36));
- mailbox2 = new SimpleMailbox(new MailboxPath("#private", "user", "OUTBOX"), UID_VALIDITY, TestId.of(46));
- mailbox3 = new SimpleMailbox(new MailboxPath("#private", "user", "SENT"), UID_VALIDITY, TestId.of(56));
- mailbox4 = new SimpleMailbox(new MailboxPath("#public", "otheruser", "INBOX"), UID_VALIDITY, TestId.of(66));
+
+
+ mailbox1 = new SimpleMailbox(MailboxManagerFixture.MAILBOX_PATH1, UID_VALIDITY, TestId.of(36));
+ mailbox2 = new SimpleMailbox(MailboxManagerFixture.MAILBOX_PATH2, UID_VALIDITY, TestId.of(46));
+ mailbox3 = new SimpleMailbox(MailboxManagerFixture.MAILBOX_PATH3, UID_VALIDITY, TestId.of(56));
+ mailbox4 = new SimpleMailbox(MailboxManagerFixture.MAILBOX_PATH4, UID_VALIDITY, TestId.of(66));
mailboxMapper = new MailboxMapper() {
@Override
@@ -94,7 +98,19 @@ public class TestMailboxSessionMapperFactory extends MailboxSessionMapperFactory
@Override
public Mailbox findMailboxByPath(MailboxPath mailboxName) throws MailboxException {
- throw new NotImplementedException();
+ if (mailboxName.equals(MailboxManagerFixture.MAILBOX_PATH1)) {
+ return mailbox1;
+ }
+ if (mailboxName.equals(MailboxManagerFixture.MAILBOX_PATH2)) {
+ return mailbox2;
+ }
+ if (mailboxName.equals(MailboxManagerFixture.MAILBOX_PATH3)) {
+ return mailbox3;
+ }
+ throw new IllegalArgumentException("Unknown mailbox : " + mailboxName + " must be one of "
+ + MailboxManagerFixture.MAILBOX_PATH1 + " "
+ + MailboxManagerFixture.MAILBOX_PATH2 + " "
+ + MailboxManagerFixture.MAILBOX_PATH3);
}
@Override
http://git-wip-us.apache.org/repos/asf/james-project/blob/36b0ef6e/mailet/base/src/test/java/org/apache/mailet/base/MailAddressFixture.java
----------------------------------------------------------------------
diff --git a/mailet/base/src/test/java/org/apache/mailet/base/MailAddressFixture.java b/mailet/base/src/test/java/org/apache/mailet/base/MailAddressFixture.java
index d3ffb36..ca1725d 100644
--- a/mailet/base/src/test/java/org/apache/mailet/base/MailAddressFixture.java
+++ b/mailet/base/src/test/java/org/apache/mailet/base/MailAddressFixture.java
@@ -26,7 +26,6 @@ import org.apache.mailet.MailAddress;
import com.google.common.base.Throwables;
public class MailAddressFixture {
-
public static final String JAMES_LOCAL = "localhost";
public static final String JAMES_APACHE_ORG = "james.apache.org";
public static final String JAMES2_APACHE_ORG = "james2.apache.org";
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[2/4] james-project git commit: JAMES-1888: MockMailboxSession allows
to create system session
Posted by ro...@apache.org.
JAMES-1888: MockMailboxSession allows to create system session
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/cc8bac68
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/cc8bac68
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/cc8bac68
Branch: refs/heads/master
Commit: cc8bac6884908ff33960bfe4d3cc4e2113a81480
Parents: 82f4b30
Author: Quynh Nguyen <qn...@linagora.com>
Authored: Mon Dec 19 16:38:02 2016 +0700
Committer: Quynh Nguyen <qn...@linagora.com>
Committed: Wed Dec 21 09:08:18 2016 +0700
----------------------------------------------------------------------
.../org/apache/james/mailbox/mock/MockMailboxSession.java | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/cc8bac68/mailbox/api/src/test/java/org/apache/james/mailbox/mock/MockMailboxSession.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/mock/MockMailboxSession.java b/mailbox/api/src/test/java/org/apache/james/mailbox/mock/MockMailboxSession.java
index 9a241a7..be13c68 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/mock/MockMailboxSession.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/mock/MockMailboxSession.java
@@ -39,6 +39,7 @@ public class MockMailboxSession implements MailboxSession{
private final static Random RANDOM = new Random();
private final long sessionId = RANDOM.nextLong();
+ private SessionType type = SessionType.User;
public MockMailboxSession(final String username) {
this.user = new User() {
@@ -64,7 +65,11 @@ public class MockMailboxSession implements MailboxSession{
}
};
}
-
+
+ public MockMailboxSession(final String username, SessionType type) {
+ this(username);
+ this.type = type;
+ }
public void close() {
this.close = true;
}
@@ -106,7 +111,7 @@ public class MockMailboxSession implements MailboxSession{
}
public SessionType getType() {
- return SessionType.User;
+ return type;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[3/4] james-project git commit: JAMES-1888: Add more testing on
MessageIdManager with different user sessions.
Posted by ro...@apache.org.
JAMES-1888: Add more testing on MessageIdManager with different user sessions.
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/81832aed
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/81832aed
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/81832aed
Branch: refs/heads/master
Commit: 81832aed62b571e454f76e35fa65d7cc00a7999e
Parents: cc8bac6
Author: Quynh Nguyen <qn...@linagora.com>
Authored: Mon Dec 19 16:39:51 2016 +0700
Committer: Quynh Nguyen <qn...@linagora.com>
Committed: Wed Dec 21 09:08:18 2016 +0700
----------------------------------------------------------------------
.../CassandraMessageIdManagerTestSystem.java | 8 +-
.../inmemory/InMemoryMessageIdManager.java | 142 +++++++++++++------
.../mailbox/store/StoreMailboxManager.java | 3 -
.../mailbox/store/StoreMessageIdManager.java | 60 +++++++-
.../mailbox/store/StoreMessageManager.java | 4 +-
.../AbstractMessageIdManagerSideEffectTest.java | 3 +-
.../AbstractMessageIdManagerStorageTest.java | 131 ++++++++++++++++-
.../store/StoreMessageIdManagerTestSystem.java | 4 +-
8 files changed, 300 insertions(+), 55 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/81832aed/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerTestSystem.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerTestSystem.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerTestSystem.java
index 41749ed..fcbdca3 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerTestSystem.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerTestSystem.java
@@ -104,16 +104,18 @@ public class CassandraMessageIdManagerTestSystem extends MessageIdManagerTestSys
SimpleMailbox mailbox1 = new SimpleMailbox(new MailboxPath("#private", "user", "INBOX"), UID_VALIDITY, CassandraId.timeBased());
SimpleMailbox mailbox2 = new SimpleMailbox(new MailboxPath("#private", "user", "OUTBOX"), UID_VALIDITY, CassandraId.timeBased());
SimpleMailbox mailbox3 = new SimpleMailbox(new MailboxPath("#private", "user", "SENT"), UID_VALIDITY, CassandraId.timeBased());
+ SimpleMailbox mailbox4 = new SimpleMailbox(new MailboxPath("#public", "otheruser", "INBOX"), UID_VALIDITY, CassandraId.timeBased());
MockMailboxSession mailboxSession = new MockMailboxSession("user");
MailboxMapper mailboxMapper = mapperFactory.getMailboxMapper(mailboxSession);
mailboxMapper.save(mailbox1);
mailboxMapper.save(mailbox2);
mailboxMapper.save(mailbox3);
+ mailboxMapper.save(mailbox4);
CassandraMailboxManager cassandraMailboxManager = new CassandraMailboxManager(mapperFactory, mock(Authenticator.class), new NoMailboxPathLocker(), new MessageParser(), messageIdFactory);
cassandraMailboxManager.init();
- return new CassandraMessageIdManagerTestSystem(messageIdManager, mailboxSession, mailbox1, mailbox2, mailbox3,
+ return new CassandraMessageIdManagerTestSystem(messageIdManager, mailboxSession, mailbox1, mailbox2, mailbox3, mailbox4,
messageIdFactory, mapperFactory, mailboxSession, cassandraMailboxManager);
}
@@ -122,8 +124,8 @@ public class CassandraMessageIdManagerTestSystem extends MessageIdManagerTestSys
private final MailboxSession mailboxSession;
private final CassandraMailboxManager cassandraMailboxManager;
- public CassandraMessageIdManagerTestSystem(MessageIdManager messageIdManager, MailboxSession session, Mailbox mailbox1, Mailbox mailbox2, Mailbox mailbox3, CassandraMessageId.Factory messageIdFactory, CassandraMailboxSessionMapperFactory mapperFactory, MailboxSession mailboxSession, CassandraMailboxManager cassandraMailboxManager) {
- super(messageIdManager, session, mailbox1, mailbox2, mailbox3);
+ public CassandraMessageIdManagerTestSystem(MessageIdManager messageIdManager, MailboxSession session, Mailbox mailbox1, Mailbox mailbox2, Mailbox mailbox3, Mailbox mailbox4, CassandraMessageId.Factory messageIdFactory, CassandraMailboxSessionMapperFactory mapperFactory, MailboxSession mailboxSession, CassandraMailboxManager cassandraMailboxManager) {
+ super(messageIdManager, session, mailbox1, mailbox2, mailbox3, mailbox4);
this.messageIdFactory = messageIdFactory;
this.mapperFactory = mapperFactory;
this.mailboxSession = mailboxSession;
http://git-wip-us.apache.org/repos/asf/james-project/blob/81832aed/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManager.java
----------------------------------------------------------------------
diff --git a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManager.java b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManager.java
index bbde9cc..b10b599 100644
--- a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManager.java
+++ b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManager.java
@@ -27,13 +27,16 @@ import javax.mail.Flags;
import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.MailboxSession.SessionType;
import org.apache.james.mailbox.MessageIdManager;
import org.apache.james.mailbox.MessageManager;
import org.apache.james.mailbox.MessageManager.FlagsUpdateMode;
import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.exception.MailboxNotFoundException;
import org.apache.james.mailbox.model.FetchGroupImpl;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxMetaData;
+import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.MailboxQuery;
import org.apache.james.mailbox.model.MessageId;
import org.apache.james.mailbox.model.MessageRange;
@@ -43,6 +46,7 @@ import org.apache.james.mailbox.model.MessageResult.FetchGroup;
import com.google.common.base.Function;
import com.google.common.base.Optional;
import com.google.common.base.Predicate;
+import com.google.common.base.Throwables;
import com.google.common.collect.FluentIterable;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
@@ -59,23 +63,6 @@ public class InMemoryMessageIdManager implements MessageIdManager {
this.mailboxManager = mailboxManager;
}
- private Optional<MessageResult> findMessageWithId(MailboxId mailboxId, final MessageId messageId, FetchGroup fetchGroup, MailboxSession mailboxSession) throws MailboxException {
- return FluentIterable.from(retrieveAllMessages(mailboxId, fetchGroup, mailboxSession))
- .filter(new Predicate<MessageResult>() {
-
- @Override
- public boolean apply(MessageResult messageResult) {
- return messageResult.getMessageId().equals(messageId);
- }
- })
- .first();
- }
-
- private ImmutableList<MessageResult> retrieveAllMessages(MailboxId mailboxId, FetchGroup fetchGroup, MailboxSession mailboxSession) throws MailboxException {
- MessageManager messageManager = mailboxManager.getMailbox(mailboxId, mailboxSession);
- return ImmutableList.copyOf(messageManager.getMessages(MessageRange.all(), fetchGroup, mailboxSession));
- }
-
@Override
public void setFlags(Flags newState, FlagsUpdateMode flagsUpdateMode, MessageId messageId, List<MailboxId> mailboxIds, MailboxSession mailboxSession) throws MailboxException {
for (MailboxId mailboxId: mailboxIds) {
@@ -88,29 +75,11 @@ public class InMemoryMessageIdManager implements MessageIdManager {
}
@Override
- public List<MessageResult> getMessages(List<MessageId> messages, FetchGroup fetchGroup, MailboxSession mailboxSession) throws MailboxException {
- ImmutableList.Builder<MessageResult> builder = ImmutableList.builder();
- List<MailboxMetaData> userMailboxes = mailboxManager.search(userMailboxes(mailboxSession), mailboxSession);
- for (MailboxMetaData mailboxMetaData: userMailboxes) {
- builder.addAll(retrieveMailboxMessages(mailboxMetaData.getId(), messages, fetchGroup, mailboxSession));
- }
- return builder.build();
- }
-
- private MailboxQuery userMailboxes(MailboxSession mailboxSession) {
- return MailboxQuery.builder()
- .matchesAll()
- .username(mailboxSession.getUser().getUserName())
- .build();
- }
-
- private List<MessageResult> retrieveMailboxMessages(MailboxId mailboxId, List<MessageId> messages, FetchGroup fetchGroup, MailboxSession mailboxSession) throws MailboxException {
+ public List<MessageResult> getMessages(List<MessageId> messages, FetchGroup fetchGroup, final MailboxSession mailboxSession) throws MailboxException {
ImmutableList.Builder<MessageResult> builder = ImmutableList.builder();
- for (MessageId messageId: messages) {
- Optional<MessageResult> maybeMessage = findMessageWithId(mailboxId, messageId, fetchGroup, mailboxSession);
- if (maybeMessage.isPresent()) {
- builder.add(maybeMessage.get());
- }
+ List<MailboxId> userMailboxIds = getUsersMailboxIds(mailboxSession);
+ for (MailboxId mailboxId: userMailboxIds) {
+ builder.addAll(retrieveMailboxMessages(mailboxId, messages, fetchGroup, mailboxSession));
}
return builder.build();
}
@@ -131,13 +100,16 @@ public class InMemoryMessageIdManager implements MessageIdManager {
@Override
public void setInMailboxes(MessageId messageId, List<MailboxId> mailboxIds, MailboxSession mailboxSession) throws MailboxException {
List<MessageResult> messages = getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, mailboxSession);
+
+ filterOnMailboxSession(mailboxIds, mailboxSession);
+
if (!messages.isEmpty()) {
ImmutableSet<MailboxId> currentMailboxes = currentMailboxes(messages).toSet();
-
+
HashSet<MailboxId> targetMailboxes = Sets.newHashSet(mailboxIds);
List<MailboxId> mailboxesToRemove = ImmutableList.copyOf(Sets.difference(currentMailboxes, targetMailboxes));
SetView<MailboxId> mailboxesToAdd = Sets.difference(targetMailboxes, currentMailboxes);
-
+
MessageResult referenceMessage = Iterables.getLast(messages);
for (MailboxId mailboxId: mailboxesToAdd) {
MessageRange messageRange = referenceMessage.getUid().toRange();
@@ -145,13 +117,82 @@ public class InMemoryMessageIdManager implements MessageIdManager {
mailboxManager.getMailbox(mailboxId, mailboxSession)
.setFlags(referenceMessage.getFlags(), FlagsUpdateMode.REPLACE, messageRange, mailboxSession);
}
-
+
for (MessageResult message: messages) {
delete(message.getMessageId(), mailboxesToRemove, mailboxSession);
}
}
}
+ private List<MailboxId> getUsersMailboxIds(final MailboxSession mailboxSession) throws MailboxException {
+ return FluentIterable.from(mailboxManager.search(userMailboxes(mailboxSession), mailboxSession))
+ .transform(getMailboxIdFromMetadata()).toList();
+ }
+
+ private Function<MailboxMetaData, MailboxId> getMailboxIdFromMetadata() {
+ return new Function<MailboxMetaData, MailboxId>() {
+ @Override
+ public MailboxId apply(MailboxMetaData input) {
+ return input.getId();
+ }
+ };
+ }
+
+ private Function<MailboxPath, MailboxId> getMailboxIdFromMailboxPath(final MailboxSession mailboxSession) {
+ return new Function<MailboxPath, MailboxId>() {
+ @Override
+ public MailboxId apply(MailboxPath input) {
+ try {
+ return mailboxManager.getMailbox(input, mailboxSession).getId();
+ } catch (MailboxException e) {
+ throw Throwables.propagate(e);
+ }
+ }
+ };
+ }
+
+ private MailboxQuery userMailboxes(MailboxSession mailboxSession) {
+ return MailboxQuery.builder()
+ .matchesAll()
+ .username(mailboxSession.getUser().getUserName())
+ .build();
+ }
+
+ private List<MessageResult> retrieveMailboxMessages(MailboxId mailboxId, List<MessageId> messages, FetchGroup fetchGroup, MailboxSession mailboxSession) throws MailboxException {
+ ImmutableList.Builder<MessageResult> builder = ImmutableList.builder();
+ for (MessageId messageId: messages) {
+ Optional<MessageResult> maybeMessage = findMessageWithId(mailboxId, messageId, fetchGroup, mailboxSession);
+ if (maybeMessage.isPresent()) {
+ builder.add(maybeMessage.get());
+ }
+ }
+ return builder.build();
+ }
+
+ private void filterOnMailboxSession(List<MailboxId> mailboxIds, MailboxSession mailboxSession) throws MailboxNotFoundException {
+ boolean isForbidden = FluentIterable.from(mailboxIds)
+ .firstMatch(findMailboxBelongsToAnotherSession(mailboxSession))
+ .isPresent();
+
+ if (isForbidden) {
+ throw new MailboxNotFoundException("Mailbox does not belong to session");
+ }
+ }
+
+ private Predicate<MailboxId> findMailboxBelongsToAnotherSession(final MailboxSession mailboxSession) {
+ return new Predicate<MailboxId>() {
+ @Override
+ public boolean apply(MailboxId input) {
+ try {
+ MailboxPath currentMailbox = mailboxManager.getMailbox(input, mailboxSession).getMailboxPath();
+ return !mailboxSession.getUser().isSameUser(currentMailbox.getUser());
+ } catch (MailboxException e) {
+ return true;
+ }
+ }
+ };
+ }
+
private FluentIterable<MailboxId> currentMailboxes(List<MessageResult> messages) {
return FluentIterable.from(messages).transform(new Function<MessageResult, MailboxId>() {
@Override
@@ -161,4 +202,21 @@ public class InMemoryMessageIdManager implements MessageIdManager {
});
}
+ private Optional<MessageResult> findMessageWithId(MailboxId mailboxId, final MessageId messageId, FetchGroup fetchGroup, MailboxSession mailboxSession) throws MailboxException {
+ return FluentIterable.from(retrieveAllMessages(mailboxId, fetchGroup, mailboxSession))
+ .filter(new Predicate<MessageResult>() {
+
+ @Override
+ public boolean apply(MessageResult messageResult) {
+ return messageResult.getMessageId().equals(messageId);
+ }
+ })
+ .first();
+ }
+
+ private ImmutableList<MessageResult> retrieveAllMessages(MailboxId mailboxId, FetchGroup fetchGroup, MailboxSession mailboxSession) throws MailboxException {
+ MessageManager messageManager = mailboxManager.getMailbox(mailboxId, mailboxSession);
+ return ImmutableList.copyOf(messageManager.getMessages(MessageRange.all(), fetchGroup, mailboxSession));
+ }
+
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/81832aed/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
----------------------------------------------------------------------
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 760ea6c..8bee086 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
@@ -496,9 +496,6 @@ public class StoreMailboxManager implements MailboxManager {
}
private boolean belongsToCurrentUser(Mailbox mailbox, MailboxSession session) {
- if (session.getUser() == null) {
- return mailbox.getUser() == null;
- }
return session.getUser().isSameUser(mailbox.getUser());
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/81832aed/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
index 0a482c1..fcbc10a 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
@@ -31,10 +31,12 @@ import javax.mail.Flags;
import javax.mail.internet.SharedInputStream;
import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.MailboxSession.SessionType;
import org.apache.james.mailbox.MessageIdManager;
import org.apache.james.mailbox.MessageManager;
import org.apache.james.mailbox.MessageUid;
import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.exception.MailboxNotFoundException;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.MessageAttachment;
@@ -100,6 +102,10 @@ public class StoreMessageIdManager implements MessageIdManager {
@Override
public void setFlags(Flags newState, MessageManager.FlagsUpdateMode replace, MessageId messageId, List<MailboxId> mailboxIds, MailboxSession mailboxSession) throws MailboxException {
MessageIdMapper messageIdMapper = mailboxSessionMapperFactory.getMessageIdMapper(mailboxSession);
+ MailboxMapper mailboxMapper = mailboxSessionMapperFactory.getMailboxMapper(mailboxSession);
+
+ allowOnMailboxSession(mailboxIds, mailboxSession, mailboxMapper);
+
Map<MailboxId, UpdatedFlags> updatedFlags = messageIdMapper.setFlags(messageId, mailboxIds, newState, replace);
for (Map.Entry<MailboxId, UpdatedFlags> entry : updatedFlags.entrySet()) {
dispatchFlagsChange(mailboxSession, entry.getKey(), entry.getValue());
@@ -107,10 +113,12 @@ public class StoreMessageIdManager implements MessageIdManager {
}
@Override
- public List<MessageResult> getMessages(List<MessageId> messageIds, final MessageResult.FetchGroup fetchGroup, MailboxSession mailboxSession) throws MailboxException {
+ public List<MessageResult> getMessages(List<MessageId> messageIds, final MessageResult.FetchGroup fetchGroup, final MailboxSession mailboxSession) throws MailboxException {
try {
MessageIdMapper messageIdMapper = mailboxSessionMapperFactory.getMessageIdMapper(mailboxSession);
+ final MailboxMapper mailboxMapper = mailboxSessionMapperFactory.getMailboxMapper(mailboxSession);
return FluentIterable.from(messageIdMapper.find(messageIds, MessageMapper.FetchType.Full))
+ .filter(belongsToUser(mailboxSession, mailboxMapper))
.transform(messageResultConverter(fetchGroup))
.toList();
} catch (WrappedException wrappedException) {
@@ -123,6 +131,8 @@ public class StoreMessageIdManager implements MessageIdManager {
MessageIdMapper messageIdMapper = mailboxSessionMapperFactory.getMessageIdMapper(mailboxSession);
MailboxMapper mailboxMapper = mailboxSessionMapperFactory.getMailboxMapper(mailboxSession);
+ allowOnMailboxSession(mailboxIds, mailboxSession, mailboxMapper);
+
Iterable<MetadataWithMailboxId> metadatasWithMailbox = FluentIterable
.from(messageIdMapper.find(ImmutableList.of(messageId), MessageMapper.FetchType.Metadata))
.filter(inMailbox(mailboxIds))
@@ -138,8 +148,13 @@ public class StoreMessageIdManager implements MessageIdManager {
@Override
public void setInMailboxes(MessageId messageId, List<MailboxId> mailboxIds, MailboxSession mailboxSession) throws MailboxException {
MessageIdMapper messageIdMapper = mailboxSessionMapperFactory.getMessageIdMapper(mailboxSession);
+ MailboxMapper mailboxMapper = mailboxSessionMapperFactory.getMailboxMapper(mailboxSession);
+
+ allowOnMailboxSession(mailboxIds, mailboxSession, mailboxMapper);
- List<MailboxMessage> mailboxMessages = messageIdMapper.find(ImmutableList.of(messageId), MessageMapper.FetchType.Full);
+ List<MailboxMessage> mailboxMessages = FluentIterable.from(messageIdMapper.find(ImmutableList.of(messageId), MessageMapper.FetchType.Full))
+ .filter(belongsToUser(mailboxSession, mailboxMapper))
+ .toList();
if (!mailboxMessages.isEmpty()) {
ImmutableSet<MailboxId> currentMailboxes = FluentIterable.from(mailboxMessages)
@@ -244,6 +259,47 @@ public class StoreMessageIdManager implements MessageIdManager {
};
}
+ private Predicate<MailboxMessage> belongsToUser(final MailboxSession mailboxSession, final MailboxMapper mailboxMapper) {
+ return new Predicate<MailboxMessage>() {
+ @Override
+ public boolean apply(MailboxMessage input) {
+ try {
+ Mailbox currentMailbox = mailboxMapper.findMailboxById(input.getMailboxId());
+ return belongsToCurrentUser(currentMailbox, mailboxSession);
+ } catch (MailboxException e) {
+ return false;
+ }
+ }
+ };
+ }
+
+ private void allowOnMailboxSession(List<MailboxId> mailboxIds, MailboxSession mailboxSession, MailboxMapper mailboxMapper) throws MailboxNotFoundException {
+ boolean isForbidden = FluentIterable.from(mailboxIds)
+ .firstMatch(isMailboxOfOtherUser(mailboxSession, mailboxMapper))
+ .isPresent();
+
+ if (isForbidden) {
+ throw new MailboxNotFoundException("Mailbox does not belong to session: ");
+ }
+ }
+
+ private Predicate<MailboxId> isMailboxOfOtherUser(final MailboxSession mailboxSession, final MailboxMapper mailboxMapper) {
+ return new Predicate<MailboxId>() {
+ @Override
+ public boolean apply(MailboxId mailboxId) {
+ try {
+ return !belongsToCurrentUser(mailboxMapper.findMailboxById(mailboxId), mailboxSession);
+ } catch (MailboxException e) {
+ return true;
+ }
+ }
+ };
+ }
+
+ private boolean belongsToCurrentUser(Mailbox mailbox, MailboxSession session) {
+ return session.getUser().isSameUser(mailbox.getUser());
+ }
+
private static class MetadataWithMailboxId {
private final MessageMetaData messageMetaData;
private final MailboxId mailboxId;
http://git-wip-us.apache.org/repos/asf/james-project/blob/81832aed/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
index 4a394d3..452d877 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
@@ -41,6 +41,7 @@ import org.apache.commons.io.input.TeeInputStream;
import org.apache.james.mailbox.MailboxListener;
import org.apache.james.mailbox.MailboxPathLocker;
import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.MailboxSession.SessionType;
import org.apache.james.mailbox.MailboxSession.User;
import org.apache.james.mailbox.MessageManager;
import org.apache.james.mailbox.MessageUid;
@@ -455,7 +456,8 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana
* @throws MailboxException
*/
public boolean isWriteable(MailboxSession session) throws MailboxException {
- return aclResolver.isReadWrite(myRights(session), getSharedPermanentFlags(session));
+ return session.getType() == SessionType.System
+ || aclResolver.isReadWrite(myRights(session), getSharedPermanentFlags(session));
}
/**
http://git-wip-us.apache.org/repos/asf/james-project/blob/81832aed/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
index 9151a70..957d51d 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
@@ -40,6 +40,7 @@ import org.apache.james.mailbox.MessageManager.FlagsUpdateMode;
import org.apache.james.mailbox.MessageUid;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.exception.OverQuotaException;
+import org.apache.james.mailbox.mock.MockMailboxSession;
import org.apache.james.mailbox.model.FetchGroupImpl;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MessageId;
@@ -85,9 +86,9 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
@Before
public void setUp() throws Exception {
dispatcher = mock(MailboxEventDispatcher.class);
- session = mock(MailboxSession.class);
quotaManager = mock(QuotaManager.class);
+ session = new MockMailboxSession("user");
testingData = createTestSystem(quotaManager, dispatcher);
messageIdManager = testingData.getMessageIdManager();
mailbox1 = testingData.getMailbox1();
http://git-wip-us.apache.org/repos/asf/james-project/blob/81832aed/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerStorageTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerStorageTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerStorageTest.java
index 82684f9..b8c8565 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerStorageTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerStorageTest.java
@@ -28,9 +28,12 @@ import java.util.Map;
import javax.mail.Flags;
import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.MailboxSession.SessionType;
import org.apache.james.mailbox.MessageIdManager;
import org.apache.james.mailbox.MessageManager;
import org.apache.james.mailbox.MessageUid;
+import org.apache.james.mailbox.exception.MailboxNotFoundException;
+import org.apache.james.mailbox.mock.MockMailboxSession;
import org.apache.james.mailbox.model.FetchGroupImpl;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MessageId;
@@ -38,7 +41,9 @@ import org.apache.james.mailbox.model.MessageResult;
import org.apache.james.mailbox.store.mail.model.Mailbox;
import org.junit.After;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
+import org.junit.rules.ExpectedException;
import com.google.common.base.Function;
import com.google.common.base.Predicate;
@@ -47,8 +52,10 @@ import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
public abstract class AbstractMessageIdManagerStorageTest {
-
public static final Flags FLAGS = new Flags();
+
+ private static final MailboxSession OTHER_USER = new MockMailboxSession("otheruser");
+ private static final MailboxSession SYSTEM_USER = new MockMailboxSession("systemuser", SessionType.System);
private static final MessageUid messageUid1 = MessageUid.of(111);
private static final MessageUid messageUid2 = MessageUid.of(222);
@@ -84,8 +91,12 @@ public abstract class AbstractMessageIdManagerStorageTest {
private Mailbox mailbox1;
private Mailbox mailbox2;
private Mailbox mailbox3;
+ private Mailbox mailbox4;
private MailboxSession session;
+ @Rule
+ public ExpectedException expectedException = ExpectedException.none();
+
protected abstract MessageIdManagerTestSystem createTestingData() throws Exception;
@Before
@@ -95,8 +106,9 @@ public abstract class AbstractMessageIdManagerStorageTest {
mailbox1 = testingData.getMailbox1();
mailbox2 = testingData.getMailbox2();
mailbox3 = testingData.getMailbox3();
+ mailbox4 = testingData.getMailbox4();
- session = testingData.getSession();
+ session = new MockMailboxSession("user");
}
@After
@@ -142,6 +154,22 @@ public abstract class AbstractMessageIdManagerStorageTest {
}
@Test
+ public void getMessageShouldReturnMessageBelongToUser() throws Exception {
+ MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS);
+
+ assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session)).hasSize(1);
+ assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, OTHER_USER)).isEmpty();
+ }
+
+ @Test
+ public void getMessageShouldReturnAllWithSystemSession() throws Exception {
+ MessageId messageId = testingData.persist(mailbox4.getMailboxId(), messageUid1, FLAGS);
+
+ assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session)).isEmpty();;
+ assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, SYSTEM_USER)).hasSize(1);
+ }
+
+ @Test
public void setInMailboxesShouldSetMessageInBothMailboxes() throws Exception {
MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS);
@@ -253,6 +281,43 @@ public abstract class AbstractMessageIdManagerStorageTest {
}
@Test
+ public void setInMailboxesShouldThrowExceptionWhenSetInMailboxesInAnotherSession() throws Exception {
+ expectedException.expect(MailboxNotFoundException.class);
+
+ MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS);
+
+ messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), OTHER_USER);
+ }
+
+ @Test
+ public void setInMailboxesShouldThrowExceptionWhenOneMailboxDoesNotBelongToMailboxSession() throws Exception {
+ expectedException.expect(MailboxNotFoundException.class);
+
+ MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS);
+
+ messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox4.getMailboxId()), session);
+ }
+
+ @Test
+ public void setInMailboxesShouldIgnoreMessagesBelongingToOtherUsers() throws Exception {
+ MessageId messageId = testingData.persist(mailbox4.getMailboxId(), messageUid1, FLAGS);
+
+ messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId()), session);
+
+ assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session)).isEmpty();
+ }
+
+ @Test
+ public void setInMailboxesShouldSetMessageWhenSystemSession() throws Exception {
+ MessageId messageId = testingData.persist(mailbox4.getMailboxId(), messageUid1, FLAGS);
+
+ messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId()), SYSTEM_USER);
+
+ assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session)).hasSize(1);
+ assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, SYSTEM_USER)).hasSize(1);
+ }
+
+ @Test
public void deleteMessageShouldRemoveMessageFromMailbox() throws Exception {
MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS);
@@ -285,6 +350,32 @@ public abstract class AbstractMessageIdManagerStorageTest {
}
@Test
+ public void deleteMessageShouldThrowExceptionWhenDeletingOnOtherSession() throws Exception {
+ expectedException.expect(MailboxNotFoundException.class);
+
+ MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS);
+
+ messageIdManager.delete(messageId, ImmutableList.of(mailbox1.getMailboxId()), OTHER_USER);
+ }
+
+ @Test
+ public void deleteMessageShouldWorkWhenDeletingOnSystemSession() throws Exception {
+ MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS);
+
+ messageIdManager.delete(messageId, ImmutableList.of(mailbox1.getMailboxId()), SYSTEM_USER);
+
+ assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session)).isEmpty();
+ }
+
+ @Test
+ public void deleteMessageShouldThrowExceptionWhenOneMailboxDoesNotBelongToUser() throws Exception {
+ expectedException.expect(MailboxNotFoundException.class);
+ MessageId messageId = testingData.persist(mailbox4.getMailboxId(), messageUid1, FLAGS);
+
+ messageIdManager.delete(messageId, ImmutableList.of(mailbox4.getMailboxId()), session);
+ }
+
+ @Test
public void setFlagsShouldUpdateFlags() throws Exception {
Flags newFlags = new Flags(Flags.Flag.SEEN);
MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS);
@@ -417,6 +508,42 @@ public abstract class AbstractMessageIdManagerStorageTest {
}
@Test
+ public void setFlagsShouldThrowExceptionWhenSetFlagsOnOtherSession() throws Exception {
+ expectedException.expect(MailboxNotFoundException.class);
+
+ Flags newFlags = new Flags(Flags.Flag.SEEN);
+ MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS);
+
+ messageIdManager.setFlags(newFlags, MessageManager.FlagsUpdateMode.ADD, messageId, ImmutableList.of(mailbox1.getMailboxId()), OTHER_USER);
+ }
+
+ @Test
+ public void setFlagsShouldShouldWorkWhenSetFlagsOnSystemSession() throws Exception {
+ Flags newFlags = new Flags(Flags.Flag.SEEN);
+ MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS);
+
+ messageIdManager.setFlags(newFlags, MessageManager.FlagsUpdateMode.ADD, messageId, ImmutableList.of(mailbox1.getMailboxId()), SYSTEM_USER);
+
+ List<Flags> flags = FluentIterable
+ .from(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session))
+ .transform(getFlags())
+ .toList();
+
+ assertThat(flags).hasSize(1);
+ assertThat(flags.get(0)).isEqualTo(newFlags);
+ }
+
+ @Test
+ public void setFlagsShouldThrowExceptionWhenMailboxDoesNotBelongToMailboxSession() throws Exception {
+ expectedException.expect(MailboxNotFoundException.class);
+ Flags newFlags = new Flags(Flags.Flag.SEEN);
+ MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS);
+
+ messageIdManager.setFlags(newFlags, MessageManager.FlagsUpdateMode.ADD, messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox4.getMailboxId()), session);
+
+ }
+
+ @Test
public void getMessageShouldBeEmptyWhenMessageHasNoMoreMailboxes() throws Exception {
MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS);
http://git-wip-us.apache.org/repos/asf/james-project/blob/81832aed/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerTestSystem.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerTestSystem.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerTestSystem.java
index a5cd64e..5c2d84e 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerTestSystem.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerTestSystem.java
@@ -29,9 +29,11 @@ import javax.mail.Flags;
import org.apache.commons.lang.NotImplementedException;
import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.MailboxSession.SessionType;
import org.apache.james.mailbox.MessageIdManager;
import org.apache.james.mailbox.MessageUid;
import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.mock.MockMailboxSession;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MessageId;
import org.apache.james.mailbox.store.mail.model.Mailbox;
@@ -40,7 +42,7 @@ import org.apache.james.mailbox.store.mail.model.MailboxMessage;
import com.google.common.base.Throwables;
public class StoreMessageIdManagerTestSystem extends MessageIdManagerTestSystem {
- private static final MailboxSession EMPTY_MAILBOX_SESSION = null;
+ private static final MailboxSession EMPTY_MAILBOX_SESSION = new MockMailboxSession("user", SessionType.System);
private static final long MOD_SEQ = 18;
private static final ByteArrayInputStream ARRAY_INPUT_STREAM = new ByteArrayInputStream("".getBytes());
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[4/4] james-project git commit: JAMES-1888: Add more mailbox4 for
testing which belong to another session
Posted by ro...@apache.org.
JAMES-1888: Add more mailbox4 for testing which belong to another session
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/82f4b30d
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/82f4b30d
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/82f4b30d
Branch: refs/heads/master
Commit: 82f4b30d26e54c9cb69e0dc515a74c00311b1528
Parents: 27f1e48
Author: Quynh Nguyen <qn...@linagora.com>
Authored: Mon Dec 19 16:33:05 2016 +0700
Committer: Quynh Nguyen <qn...@linagora.com>
Committed: Wed Dec 21 09:08:18 2016 +0700
----------------------------------------------------------------------
.../inmemory/InMemoryMessageIdManagerTestSystem.java | 4 ++--
.../inmemory/MessageIdManagerTestSystemProvider.java | 14 ++++++--------
.../mailbox/store/MessageIdManagerTestSystem.java | 12 +++++++-----
.../store/StoreMessageIdManagerSideEffectTest.java | 8 ++++++--
.../store/StoreMessageIdManagerTestSystem.java | 4 ++--
.../store/TestMailboxSessionMapperFactory.java | 6 ++++++
6 files changed, 29 insertions(+), 19 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/82f4b30d/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerTestSystem.java
----------------------------------------------------------------------
diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerTestSystem.java b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerTestSystem.java
index 6c6b271..466d698 100644
--- a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerTestSystem.java
+++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerTestSystem.java
@@ -50,8 +50,8 @@ public class InMemoryMessageIdManagerTestSystem extends MessageIdManagerTestSyst
private Optional<MessageId> lastMessageIdUsed;
public InMemoryMessageIdManagerTestSystem(MailboxManager mailboxManager, MailboxSession mailboxSession,
- Mailbox mailbox1, Mailbox mailbox2, Mailbox mailbox3) {
- super(new InMemoryMessageIdManager(mailboxManager), mailboxSession, mailbox1, mailbox2, mailbox3);
+ Mailbox mailbox1, Mailbox mailbox2, Mailbox mailbox3, Mailbox mailbox4) {
+ super(new InMemoryMessageIdManager(mailboxManager), mailboxSession, mailbox1, mailbox2, mailbox3, mailbox4);
this.mailboxManager = mailboxManager;
this.mailboxSession = mailboxSession;
this.lastMessageIdUsed = Optional.absent();
http://git-wip-us.apache.org/repos/asf/james-project/blob/82f4b30d/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MessageIdManagerTestSystemProvider.java
----------------------------------------------------------------------
diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MessageIdManagerTestSystemProvider.java b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MessageIdManagerTestSystemProvider.java
index 7049360..206c0d3 100644
--- a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MessageIdManagerTestSystemProvider.java
+++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MessageIdManagerTestSystemProvider.java
@@ -44,6 +44,7 @@ public class MessageIdManagerTestSystemProvider {
private static final int UID_VALIDITY = 1024;
private static final Logger LOGGER = LoggerFactory.getLogger(InMemoryMessageIdManagerStorageTest.class);
private static final String USER = "user";
+ private static final String OTHER_USER = "otheruser";
private static final String PASSWORD = "password";
public static MessageIdManagerTestSystem createTestingData() {
@@ -56,17 +57,13 @@ public class MessageIdManagerTestSystemProvider {
SimpleMailbox mailbox2 = createMailbox(mailboxManager, mailboxPath2, mailboxSession);
MailboxPath mailboxPath3 = new MailboxPath("#private", USER, "mailbox3");
SimpleMailbox mailbox3 = createMailbox(mailboxManager, mailboxPath3, mailboxSession);
- return new InMemoryMessageIdManagerTestSystem(mailboxManager, mailboxSession, mailbox1, mailbox2, mailbox3);
+ MailboxPath mailboxPath4 = new MailboxPath("#public", OTHER_USER, "mailbox4");
+ SimpleMailbox mailbox4 = createMailbox(mailboxManager, mailboxPath4, mailboxSession);
+ return new InMemoryMessageIdManagerTestSystem(mailboxManager, mailboxSession, mailbox1, mailbox2, mailbox3, mailbox4);
}
private static MailboxSession createMailboxSession(InMemoryMailboxManager mailboxManager) {
- try {
- return mailboxManager.login(USER, PASSWORD, LOGGER);
- } catch (BadCredentialsException e) {
- throw Throwables.propagate(e);
- } catch (MailboxException e) {
- throw Throwables.propagate(e);
- }
+ return mailboxManager.createSystemSession(USER, LOGGER);
}
private static SimpleMailbox createMailbox(InMemoryMailboxManager mailboxManager, MailboxPath mailboxPath, MailboxSession mailboxSession) {
@@ -88,6 +85,7 @@ public class MessageIdManagerTestSystemProvider {
MessageId.Factory messageIdFactory = new InMemoryMessageId.Factory();
FakeAuthenticator authenticator = new FakeAuthenticator();
authenticator.addUser(USER, PASSWORD);
+ authenticator.addUser(OTHER_USER, PASSWORD);
InMemoryMailboxManager mailboxManager = new InMemoryMailboxManager(mailboxSessionMapperFactory, authenticator,
aclResolver, groupMembershipResolver, messageParser, messageIdFactory, LIMIT_ANNOTATIONS, LIMIT_ANNOTATION_SIZE);
http://git-wip-us.apache.org/repos/asf/james-project/blob/82f4b30d/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageIdManagerTestSystem.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageIdManagerTestSystem.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageIdManagerTestSystem.java
index b57aff1..06f1a1e 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageIdManagerTestSystem.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageIdManagerTestSystem.java
@@ -35,24 +35,22 @@ public abstract class MessageIdManagerTestSystem {
private final Mailbox mailbox1;
private final Mailbox mailbox2;
private final Mailbox mailbox3;
+ private final Mailbox mailbox4;
public MessageIdManagerTestSystem(MessageIdManager messageIdManager, MailboxSession session,
- Mailbox mailbox1, Mailbox mailbox2, Mailbox mailbox3) {
+ Mailbox mailbox1, Mailbox mailbox2, Mailbox mailbox3, Mailbox mailbox4) {
this.messageIdManager = messageIdManager;
this.session = session;
this.mailbox1 = mailbox1;
this.mailbox2 = mailbox2;
this.mailbox3 = mailbox3;
+ this.mailbox4 = mailbox4;
}
public MessageIdManager getMessageIdManager() {
return messageIdManager;
}
- public MailboxSession getSession() {
- return session;
- }
-
public Mailbox getMailbox1() {
return mailbox1;
}
@@ -65,6 +63,10 @@ public abstract class MessageIdManagerTestSystem {
return mailbox3;
}
+ public Mailbox getMailbox4() {
+ return mailbox4;
+ }
+
/**
* Should take care of find returning the MailboxMessage
* Should take care of findMailboxes returning the mailbox the message is in
http://git-wip-us.apache.org/repos/asf/james-project/blob/82f4b30d/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerSideEffectTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerSideEffectTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerSideEffectTest.java
index d397526..bfc0f93 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerSideEffectTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerSideEffectTest.java
@@ -37,8 +37,12 @@ public class StoreMessageIdManagerSideEffectTest extends AbstractMessageIdManage
MessageIdManager messageIdManager = new StoreMessageIdManager(testMailboxSessionMapperFactory, dispatcher, messageIdFactory,
quotaManager, new DefaultQuotaRootResolver(testMailboxSessionMapperFactory));
- return new StoreMessageIdManagerTestSystem(messageIdManager, testMailboxSessionMapperFactory.getMailbox1(),
- testMailboxSessionMapperFactory.getMailbox2(), testMailboxSessionMapperFactory.getMailbox3(), messageIdFactory,
+ return new StoreMessageIdManagerTestSystem(messageIdManager,
+ testMailboxSessionMapperFactory.getMailbox1(),
+ testMailboxSessionMapperFactory.getMailbox2(),
+ testMailboxSessionMapperFactory.getMailbox3(),
+ testMailboxSessionMapperFactory.getMailbox4(),
+ messageIdFactory,
testMailboxSessionMapperFactory);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/82f4b30d/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerTestSystem.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerTestSystem.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerTestSystem.java
index ea946a1..a5cd64e 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerTestSystem.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerTestSystem.java
@@ -47,9 +47,9 @@ public class StoreMessageIdManagerTestSystem extends MessageIdManagerTestSystem
private final MessageId.Factory messageIdFactory;
private final TestMailboxSessionMapperFactory mapperFactory;
- public StoreMessageIdManagerTestSystem(MessageIdManager messageIdManager, Mailbox mailbox1, Mailbox mailbox2, Mailbox mailbox3,
+ public StoreMessageIdManagerTestSystem(MessageIdManager messageIdManager, Mailbox mailbox1, Mailbox mailbox2, Mailbox mailbox3, Mailbox mailbox4,
MessageId.Factory messageIdFactory, TestMailboxSessionMapperFactory mapperFactory) {
- super(messageIdManager, EMPTY_MAILBOX_SESSION, mailbox1, mailbox2, mailbox3);
+ super(messageIdManager, EMPTY_MAILBOX_SESSION, mailbox1, mailbox2, mailbox3, mailbox4);
this.messageIdFactory = messageIdFactory;
this.mapperFactory = mapperFactory;
http://git-wip-us.apache.org/repos/asf/james-project/blob/82f4b30d/mailbox/store/src/test/java/org/apache/james/mailbox/store/TestMailboxSessionMapperFactory.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/TestMailboxSessionMapperFactory.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/TestMailboxSessionMapperFactory.java
index 531bd8e..9e8e236 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/TestMailboxSessionMapperFactory.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/TestMailboxSessionMapperFactory.java
@@ -69,6 +69,7 @@ public class TestMailboxSessionMapperFactory extends MailboxSessionMapperFactory
private final SimpleMailbox mailbox1;
private final SimpleMailbox mailbox2;
private final SimpleMailbox mailbox3;
+ private final SimpleMailbox mailbox4;
private final List<MailboxMessage> messages = new ArrayList<MailboxMessage>();
private final MailboxMapper mailboxMapper;
private final MessageIdMapper messageIdMapper;
@@ -77,6 +78,7 @@ public class TestMailboxSessionMapperFactory extends MailboxSessionMapperFactory
mailbox1 = new SimpleMailbox(new MailboxPath("#private", "user", "INBOX"), UID_VALIDITY, TestId.of(36));
mailbox2 = new SimpleMailbox(new MailboxPath("#private", "user", "OUTBOX"), UID_VALIDITY, TestId.of(46));
mailbox3 = new SimpleMailbox(new MailboxPath("#private", "user", "SENT"), UID_VALIDITY, TestId.of(56));
+ mailbox4 = new SimpleMailbox(new MailboxPath("#public", "otheruser", "INBOX"), UID_VALIDITY, TestId.of(66));
mailboxMapper = new MailboxMapper() {
@Override
@@ -207,6 +209,10 @@ public class TestMailboxSessionMapperFactory extends MailboxSessionMapperFactory
return mailbox3;
}
+ public SimpleMailbox getMailbox4() {
+ return mailbox4;
+ }
+
@Override
public UidProvider getUidProvider() {
UidProvider uidProvider = mock(UidProvider.class);
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org