MAILBOX-310 Introduce ACL capability
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/5de2d001 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/5de2d001 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/5de2d001 Branch: refs/heads/master Commit: 5de2d001fe3bd630a388359801a513b2debd8ecb Parents: d26baea Author: Antoine Duprat <adup...@linagora.com> Authored: Mon Oct 2 15:09:01 2017 +0200 Committer: Matthieu Baechler <matth...@apache.org> Committed: Thu Oct 5 20:00:37 2017 +0200 ---------------------------------------------------------------------- .../org/apache/james/mailbox/MailboxManager.java | 3 ++- .../apache/james/mailbox/MailboxManagerTest.java | 2 +- .../mailbox/cassandra/CassandraMailboxManager.java | 2 +- .../mailbox/inmemory/InMemoryMailboxManager.java | 6 +++++- .../apache/james/JamesCapabilitiesServerTest.java | 17 +++++++++++++++++ .../java/org/apache/james/jmap/JMAPModule.java | 2 ++ 6 files changed, 28 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/5de2d001/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxManager.java ---------------------------------------------------------------------- diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxManager.java b/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxManager.java index 093219a..38414cc 100644 --- a/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxManager.java +++ b/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxManager.java @@ -80,7 +80,8 @@ public interface MailboxManager extends RequestAware, MailboxListenerSupport { Annotation, Move, Namespace, - UserFlag + UserFlag, + ACL } EnumSet<MailboxCapabilities> getSupportedMailboxCapabilities(); http://git-wip-us.apache.org/repos/asf/james-project/blob/5de2d001/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java ---------------------------------------------------------------------- diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java index 66ff86c..f33ffcf 100644 --- a/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java +++ b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java @@ -441,7 +441,7 @@ public abstract class MailboxManagerTest { @Test public void searchShouldIncludeDelegatedMailboxes() throws MailboxException { - Assume.assumeTrue(mailboxManager.hasCapability(MailboxCapabilities.RightSearch)); + Assume.assumeTrue(mailboxManager.hasCapability(MailboxCapabilities.ACL)); MailboxSession session1 = mailboxManager.createSystemSession(USER_1); MailboxSession session2 = mailboxManager.createSystemSession(USER_2); MailboxPath inbox1 = MailboxPath.inbox(session1); http://git-wip-us.apache.org/repos/asf/james-project/blob/5de2d001/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxManager.java ---------------------------------------------------------------------- diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxManager.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxManager.java index b17deb1..57cfc9c 100644 --- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxManager.java +++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxManager.java @@ -111,7 +111,7 @@ public class CassandraMailboxManager extends StoreMailboxManager { @Override public EnumSet<MailboxManager.MailboxCapabilities> getSupportedMailboxCapabilities() { - return EnumSet.of(MailboxCapabilities.Move, MailboxCapabilities.UserFlag, MailboxCapabilities.Namespace, MailboxCapabilities.Annotation); + return EnumSet.of(MailboxCapabilities.Move, MailboxCapabilities.UserFlag, MailboxCapabilities.Namespace, MailboxCapabilities.Annotation, MailboxCapabilities.ACL); } @Override http://git-wip-us.apache.org/repos/asf/james-project/blob/5de2d001/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxManager.java ---------------------------------------------------------------------- diff --git a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxManager.java b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxManager.java index adf3044..9aca010 100644 --- a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxManager.java +++ b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxManager.java @@ -73,7 +73,11 @@ public class InMemoryMailboxManager extends StoreMailboxManager { @Override public EnumSet<MailboxCapabilities> getSupportedMailboxCapabilities() { - return EnumSet.of(MailboxCapabilities.Move, MailboxCapabilities.UserFlag, MailboxCapabilities.Namespace, MailboxCapabilities.Annotation); + return EnumSet.of(MailboxCapabilities.Move, + MailboxCapabilities.UserFlag, + MailboxCapabilities.Namespace, + MailboxCapabilities.Annotation, + MailboxCapabilities.ACL); } @Override http://git-wip-us.apache.org/repos/asf/james-project/blob/5de2d001/server/container/guice/cassandra-guice/src/test/java/org/apache/james/JamesCapabilitiesServerTest.java ---------------------------------------------------------------------- diff --git a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/JamesCapabilitiesServerTest.java b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/JamesCapabilitiesServerTest.java index 5b03a23..48eca9d 100644 --- a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/JamesCapabilitiesServerTest.java +++ b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/JamesCapabilitiesServerTest.java @@ -86,6 +86,21 @@ public class JamesCapabilitiesServerTest { } @Test + public void startShouldFailWhenNoACLCapability() throws Exception { + MailboxManager mailboxManager = mock(MailboxManager.class); + when(mailboxManager.getSupportedMailboxCapabilities()) + .thenReturn(EnumSet.complementOf(EnumSet.of(MailboxManager.MailboxCapabilities.ACL))); + when(mailboxManager.getSupportedMessageCapabilities()) + .thenReturn(EnumSet.allOf(MailboxManager.MessageCapabilities.class)); + when(mailboxManager.getSupportedSearchCapabilities()) + .thenReturn(EnumSet.allOf(MailboxManager.SearchCapabilities.class)); + + server = createCassandraJamesServer(mailboxManager); + + assertThatThrownBy(() -> server.start()).isInstanceOf(IllegalArgumentException.class); + } + + @Test public void startShouldFailWhenNoAttachmentCapability() throws Exception { MailboxManager mailboxManager = mock(MailboxManager.class); when(mailboxManager.getSupportedMailboxCapabilities()) @@ -150,6 +165,8 @@ public class JamesCapabilitiesServerTest { MailboxManager mailboxManager = mock(MailboxManager.class); when(mailboxManager.hasCapability(MailboxManager.MailboxCapabilities.Move)) .thenReturn(true); + when(mailboxManager.hasCapability(MailboxManager.MailboxCapabilities.ACL)) + .thenReturn(true); when(mailboxManager.getSupportedMessageCapabilities()) .thenReturn(EnumSet.allOf(MailboxManager.MessageCapabilities.class)); when(mailboxManager.getSupportedSearchCapabilities()) http://git-wip-us.apache.org/repos/asf/james-project/blob/5de2d001/server/container/guice/protocols/jmap/src/main/java/org/apache/james/jmap/JMAPModule.java ---------------------------------------------------------------------- diff --git a/server/container/guice/protocols/jmap/src/main/java/org/apache/james/jmap/JMAPModule.java b/server/container/guice/protocols/jmap/src/main/java/org/apache/james/jmap/JMAPModule.java index b0909a5..f5f6a29 100644 --- a/server/container/guice/protocols/jmap/src/main/java/org/apache/james/jmap/JMAPModule.java +++ b/server/container/guice/protocols/jmap/src/main/java/org/apache/james/jmap/JMAPModule.java @@ -141,6 +141,8 @@ public class JMAPModule extends AbstractModule { public void initModule() { Preconditions.checkArgument(mailboxManager.hasCapability(MailboxManager.MailboxCapabilities.Move), "MOVE support in MailboxManager is required by JMAP Module"); + Preconditions.checkArgument(mailboxManager.hasCapability(MailboxManager.MailboxCapabilities.ACL), + "ACL support in MailboxManager is required by JMAP Module"); EnumSet<MailboxManager.MessageCapabilities> messageCapabilities = mailboxManager.getSupportedMessageCapabilities(); Preconditions.checkArgument(messageCapabilities.contains(MailboxManager.MessageCapabilities.Attachment), --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org