MAILBOX-307 Correct error while removing rights on a non existing key

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

Branch: refs/heads/master
Commit: 998446bc1df0c6cd4fc6faf39afcde3cf51c71ef
Parents: 43887f4
Author: benwa <btell...@linagora.com>
Authored: Thu Sep 28 15:18:52 2017 +0700
Committer: Matthieu Baechler <matth...@apache.org>
Committed: Fri Sep 29 09:20:41 2017 +0200

----------------------------------------------------------------------
 .../apache/james/mailbox/model/MailboxACL.java  | 12 +++++----
 .../james/mailbox/model/MailboxACLTest.java     | 27 +++++++++-----------
 2 files changed, 19 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/998446bc/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 b4c9d2e..711f95c 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
@@ -740,11 +740,13 @@ public class MailboxACL {
                     .filter(pair -> pair.getValue() != null && 
!pair.getValue().isEmpty())
                     .collect(Guavate.toImmutableMap(Pair::getKey, 
Pair::getValue)));
         } else {
-            return new MailboxACL(
-                ImmutableMap.<EntryKey, Rfc4314Rights>builder()
-                    .putAll(entries)
-                    .put(key, replacement)
-                    .build());
+            return Optional.ofNullable(replacement)
+                .map(replacementValue ->  new MailboxACL(
+                    ImmutableMap.<EntryKey, Rfc4314Rights>builder()
+                        .putAll(entries)
+                        .put(key, replacementValue)
+                        .build()))
+                .orElse(this);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/998446bc/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 2412fbb..9da7152 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
@@ -90,9 +90,7 @@ public class MailboxACLTest {
 
         Map<EntryKey, Rfc4314Rights> foundEntries = result.getEntries();
 
-        assertThat(foundEntries)
-            .hasSize(expectedEntries.size())
-            .containsAllEntriesOf(expectedEntries);
+        assertThat(foundEntries).isEqualTo(expectedEntries);
     }
 
     @Test
@@ -170,9 +168,7 @@ public class MailboxACLTest {
 
         Map<EntryKey, Rfc4314Rights> foundEntries = result.getEntries();
 
-        assertThat(foundEntries)
-            .hasSize(expectedEntries.size())
-            .containsAllEntriesOf(expectedEntries);
+        assertThat(foundEntries).isEqualTo(expectedEntries);
     }
 
     @Test
@@ -185,9 +181,7 @@ public class MailboxACLTest {
 
         Map<EntryKey, Rfc4314Rights> foundEntries = result.getEntries();
 
-        assertThat(foundEntries)
-            .hasSize(expectedEntries.size())
-            .containsAllEntriesOf(expectedEntries);
+        assertThat(foundEntries).isEqualTo(expectedEntries);
     }
 
     @Test
@@ -201,9 +195,7 @@ public class MailboxACLTest {
 
         Map<EntryKey, Rfc4314Rights> foundEntries = result.getEntries();
 
-        assertThat(foundEntries)
-            .hasSize(expectedEntries.size())
-            .containsAllEntriesOf(expectedEntries);
+        assertThat(foundEntries).isEqualTo(expectedEntries);
     }
 
     @Test
@@ -216,9 +208,7 @@ public class MailboxACLTest {
 
         Map<EntryKey, Rfc4314Rights> foundEntries = result.getEntries();
 
-        assertThat(foundEntries)
-            .hasSize(expectedEntries.size())
-            .containsAllEntriesOf(expectedEntries);
+        assertThat(foundEntries).isEqualTo(expectedEntries);
     }
 
     @Test
@@ -227,4 +217,11 @@ public class MailboxACLTest {
             .isEqualTo(MailboxACL.EMPTY);
     }
 
+    @Test
+    public void applyShouldNotThrowWhenRemovingANonExistingEntry() throws 
Exception{
+        assertThat(MailboxACL.EMPTY
+            .apply(new MailboxACL.ACLCommand(EntryKey.createUser("bob"), 
MailboxACL.EditMode.REPLACE, null)))
+            .isEqualTo(MailboxACL.EMPTY);
+    }
+
 }


---------------------------------------------------------------------
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