Index: oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/GroupImplTest.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/GroupImplTest.java (revision 1853651) +++ oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/GroupImplTest.java (date 1550252596000) @@ -20,14 +20,21 @@ import java.util.Iterator; import java.util.UUID; +import com.google.common.collect.ImmutableList; import com.google.common.collect.Iterators; import org.apache.jackrabbit.api.security.user.Authorizable; import org.apache.jackrabbit.api.security.user.Group; +import org.apache.jackrabbit.api.security.user.User; import org.apache.jackrabbit.oak.AbstractSecurityTest; +import org.apache.jackrabbit.oak.api.PropertyState; +import org.apache.jackrabbit.oak.api.Tree; +import org.apache.jackrabbit.oak.api.Type; +import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters; import org.apache.jackrabbit.oak.spi.security.principal.EveryonePrincipal; import org.junit.Test; import org.mockito.Mockito; +import static org.apache.jackrabbit.oak.spi.security.user.UserConstants.REP_MEMBERS; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertSame; @@ -121,4 +128,36 @@ Iterator members = groupPrincipal.getMembers(); assertTrue(Iterators.elementsEqual(group.getMembers(), members)); } + + @Test + public void testImpactOfOak8054AddingMembers() throws Exception { + Tree groupTree = root.getTree(group.getPath()); + groupTree.setProperty(REP_MEMBERS, ImmutableList.of(new UserProvider(root, ConfigurationParameters.EMPTY).getContentID(getTestUser().getID())), Type.STRINGS); + root.commit(); + + group.addMember(uMgr.createUser("userid", null)); + root.commit(); + + groupTree = root.getTree(group.getPath()); + PropertyState membersProp = groupTree.getProperty(REP_MEMBERS); + assertEquals(Type.WEAKREFERENCES, membersProp.getType()); + assertEquals(2, membersProp.count()); + } + + @Test + public void testImpactOfOak8054RemovingMembers() throws Exception { + User user = uMgr.createUser("userid", null); + UserProvider up = new UserProvider(root, ConfigurationParameters.EMPTY); + Tree groupTree = root.getTree(group.getPath()); + groupTree.setProperty(REP_MEMBERS, ImmutableList.of(up.getContentID(getTestUser().getID()), up.getContentID(user.getID())), Type.STRINGS); + root.commit(); + + group.removeMembers(user.getID()); + root.commit(); + + groupTree = root.getTree(group.getPath()); + PropertyState membersProp = groupTree.getProperty(REP_MEMBERS); + assertEquals(Type.WEAKREFERENCES, membersProp.getType()); + assertEquals(1, membersProp.count()); + } } \ No newline at end of file