Repository: james-project
Updated Branches:
  refs/heads/master 10da4351c -> f52eaa62a


MAILBOX-310 MailboxACL should present only users ACL


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/929f31dc
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/929f31dc
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/929f31dc

Branch: refs/heads/master
Commit: 929f31dcb9f24e132c0eba6ec6358e4a3a8ab8ab
Parents: 434e040
Author: Antoine Duprat <adup...@linagora.com>
Authored: Fri Sep 29 15:26:38 2017 +0200
Committer: benwa <btell...@linagora.com>
Committed: Wed Oct 4 16:29:09 2017 +0700

----------------------------------------------------------------------
 .../apache/james/mailbox/model/MailboxACL.java  |  6 +++
 .../james/mailbox/model/MailboxACLTest.java     | 41 ++++++++++++++++++++
 2 files changed, 47 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/929f31dc/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxACL.java
----------------------------------------------------------------------
diff --git 
a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxACL.java 
b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxACL.java
index e414ebc..a38e601 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxACL.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxACL.java
@@ -878,4 +878,10 @@ public class MailboxACL {
         return union(new MailboxACL(new Entry(key, mailboxACLRights)));
     }
 
+    public Map<EntryKey, Rfc4314Rights> ofPositiveNameType(NameType nameType) {
+        return this.entries.entrySet().stream()
+            .filter(entry -> !entry.getKey().isNegative())
+            .filter(entry -> entry.getKey().getNameType().equals(nameType))
+            .collect(Guavate.entriesToMap());
+    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/929f31dc/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxACLTest.java
----------------------------------------------------------------------
diff --git 
a/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxACLTest.java 
b/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxACLTest.java
index 7bbb4eb..fccabd0 100644
--- 
a/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxACLTest.java
+++ 
b/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxACLTest.java
@@ -30,10 +30,14 @@ import java.util.Properties;
 import org.apache.james.mailbox.exception.UnsupportedRightException;
 import org.apache.james.mailbox.model.MailboxACL.Entry;
 import org.apache.james.mailbox.model.MailboxACL.EntryKey;
+import org.apache.james.mailbox.model.MailboxACL.NameType;
 import org.apache.james.mailbox.model.MailboxACL.Rfc4314Rights;
+import org.assertj.core.data.MapEntry;
 import org.junit.Before;
 import org.junit.Test;
 
+import com.google.common.collect.ImmutableMap;
+
 /**
  * @author Peter Palaga
  */
@@ -41,6 +45,7 @@ public class MailboxACLTest {
 
     private static final String USER_1 = "user1";
     private static final String USER_2 = "user2";
+    private static final boolean NEGATIVE = true;
 
     private static final String ae = "ae";
     private static final String ik = "ik";
@@ -224,4 +229,40 @@ public class MailboxACLTest {
             .isEqualTo(MailboxACL.EMPTY);
     }
 
+    @Test
+    public void usersACLShouldReturnEmptyMapWhenEmpty() {
+        assertThat(MailboxACL.EMPTY.ofPositiveNameType(NameType.user))
+            .isEmpty();
+    }
+
+    @Test
+    public void usersACLShouldReturnEmptyMapWhenNoUserEntry() {
+        MailboxACL mailboxACL = new MailboxACL(
+                ImmutableMap.of(EntryKey.createGroupEntryKey("group"), 
MailboxACL.FULL_RIGHTS,
+                    EntryKey.createGroupEntryKey("group2"), 
MailboxACL.NO_RIGHTS));
+        assertThat(mailboxACL.ofPositiveNameType(NameType.user))
+            .isEmpty();
+    }
+
+    @Test
+    public void usersACLShouldReturnOnlyUsersMapWhenSomeUserEntries() throws 
Exception {
+        MailboxACL.Rfc4314Rights rights = 
MailboxACL.Rfc4314Rights.fromSerializedRfc4314Rights("aei");
+        MailboxACL mailboxACL = new MailboxACL(
+            ImmutableMap.of(EntryKey.createUserEntryKey("user1"), 
MailboxACL.FULL_RIGHTS,
+                EntryKey.createGroupEntryKey("group"), MailboxACL.FULL_RIGHTS,
+                EntryKey.createUserEntryKey("user2"), rights,
+                EntryKey.createGroupEntryKey("group2"), MailboxACL.NO_RIGHTS));
+        assertThat(mailboxACL.ofPositiveNameType(NameType.user))
+            .containsOnly(
+                MapEntry.entry(EntryKey.createUserEntryKey("user1"), 
MailboxACL.FULL_RIGHTS),
+                MapEntry.entry(EntryKey.createUserEntryKey("user2"), rights));
+    }
+
+    @Test
+    public void ofPositiveNameTypeShouldFilterOutNegativeEntries() throws 
Exception {
+        MailboxACL mailboxACL = new MailboxACL(
+            ImmutableMap.of(EntryKey.createUserEntryKey("user1", NEGATIVE), 
MailboxACL.FULL_RIGHTS));
+        assertThat(mailboxACL.ofPositiveNameType(NameType.user))
+            .isEmpty();
+    }
 }


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

Reply via email to