Author: angela
Date: Tue Feb 28 14:31:55 2017
New Revision: 1784743
URL: http://svn.apache.org/viewvc?rev=1784743&view=rev
Log:
OAK-5793 : Improve coverage for security code in oak-core (wip)
Added:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/PrincipalManagerImplTest.java
- copied, changed from r1784697,
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/security/principal/PrincipalManagerTest.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/SystemPrincipalTest.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/TestPrincipalProvider.java
Modified:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/credentials/SimpleCredentialsSupportTest.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/CompositePrincipalProviderTest.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/EmptyPrincipalProviderTest.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/EveryonePrincipalTest.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/PrincipalImplTest.java
Modified:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/credentials/SimpleCredentialsSupportTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/credentials/SimpleCredentialsSupportTest.java?rev=1784743&r1=1784742&r2=1784743&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/credentials/SimpleCredentialsSupportTest.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/credentials/SimpleCredentialsSupportTest.java
Tue Feb 28 14:31:55 2017
@@ -92,5 +92,26 @@ public class SimpleCredentialsSupportTes
assertEquals(expected, attributes);
}
+ @Test
+ public void testSetAttributes() {
+ Map<String, ?> attributes = credentialsSupport.getAttributes(new
TestCredentials());
+ assertNotNull(attributes);
+ assertTrue(attributes.isEmpty());
+
+ SimpleCredentials sc = new SimpleCredentials("uid", new char[0]);
+
+ Map<String, ?> expected = ImmutableMap.of("a", "a", "b", Boolean.TRUE,
"c", new TestCredentials());
+ credentialsSupport.setAttributes(sc, expected);
+
+ for (Map.Entry<String, ?> entry : expected.entrySet()) {
+ assertEquals(entry.getValue(), sc.getAttribute(entry.getKey()));
+ }
+
+ attributes = credentialsSupport.getAttributes(sc);
+ assertNotNull(attributes);
+ assertEquals(3, attributes.size());
+ assertEquals(expected, attributes);
+ }
+
private static final class TestCredentials implements Credentials {}
}
\ No newline at end of file
Modified:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/CompositePrincipalProviderTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/CompositePrincipalProviderTest.java?rev=1784743&r1=1784742&r2=1784743&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/CompositePrincipalProviderTest.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/CompositePrincipalProviderTest.java
Tue Feb 28 14:31:55 2017
@@ -16,16 +16,38 @@
*/
package org.apache.jackrabbit.oak.spi.security.principal;
+import java.security.Principal;
+import java.security.acl.Group;
+import java.util.Iterator;
+import javax.annotation.Nonnull;
+
+import com.google.common.base.Predicate;
import com.google.common.collect.ImmutableList;
-import org.apache.jackrabbit.oak.AbstractSecurityTest;
-import org.apache.jackrabbit.oak.namepath.NamePathMapper;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Iterables;
+import org.apache.jackrabbit.api.security.principal.PrincipalManager;
import org.junit.Test;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotSame;
+import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
-public class CompositePrincipalProviderTest extends AbstractSecurityTest{
+public class CompositePrincipalProviderTest {
+
+ private final TestPrincipalProvider pp1 = new TestPrincipalProvider();
+ private final TestPrincipalProvider pp2 = new TestPrincipalProvider("p1",
"p2");
+ private final PrincipalProvider cpp =
CompositePrincipalProvider.of(ImmutableList.<PrincipalProvider>of(pp1, pp2));
+
+ private Iterable<Principal> testPrincipals() {
+ return Iterables.concat(pp1.getTestPrincipals(),
pp2.getTestPrincipals());
+ }
+
+ private static void assertIterator(@Nonnull Iterable<? extends Principal>
expected, @Nonnull Iterator<? extends Principal> result) {
+ assertEquals(ImmutableSet.copyOf(expected),
ImmutableSet.copyOf(result));
+ }
@Test
public void testOfEmptyList() {
@@ -34,16 +56,83 @@ public class CompositePrincipalProviderT
@Test
public void testOfSingletonList() {
- PrincipalProvider pp =
getSecurityProvider().getConfiguration(PrincipalConfiguration.class).getPrincipalProvider(root,
NamePathMapper.DEFAULT);
+ PrincipalProvider pp = new TestPrincipalProvider(true);
assertSame(pp, CompositePrincipalProvider.of(ImmutableList.of(pp)));
}
@Test
public void testOfList() {
- PrincipalProvider pp =
getSecurityProvider().getConfiguration(PrincipalConfiguration.class).getPrincipalProvider(root,
NamePathMapper.DEFAULT);
+ assertNotSame(pp1, cpp);
+ assertNotSame(pp2, cpp);
+ assertTrue(cpp instanceof CompositePrincipalProvider);
+ }
+
+ @Test
+ public void getPrincipalUnknown() {
+ assertNull(cpp.getPrincipal(TestPrincipalProvider.UNKNOWN.getName()));
+ }
+
+ @Test
+ public void getPrincipal() {
+ for (Principal principal : testPrincipals()) {
+ assertEquals(principal, cpp.getPrincipal(principal.getName()));
+ }
+ }
+
+ @Test
+ public void getGroupMembership() {
+ for (Principal principal : testPrincipals()) {
+ boolean atleastEveryone =
cpp.getGroupMembership(principal).contains(EveryonePrincipal.getInstance());
+ assertTrue("All principals (except everyone) must be member of the
everyone group. Violation: "+principal.getName(), atleastEveryone);
+ }
+ }
+
+ @Test
+ public void getGroupMembershipUnknown() {
+
assertTrue(cpp.getGroupMembership(TestPrincipalProvider.UNKNOWN).isEmpty());
+ }
+
+ @Test
+ public void testGetPrincipalsByUnknownId() {
+
assertTrue(cpp.getPrincipals(TestPrincipalProvider.getIDFromPrincipal(TestPrincipalProvider.UNKNOWN)).isEmpty());
+ }
- PrincipalProvider of =
CompositePrincipalProvider.of(ImmutableList.of(pp, pp));
- assertNotSame(pp, of);
- assertTrue(of instanceof CompositePrincipalProvider);
+ @Test
+ public void findPrincipalsUnknown() {
+
assertFalse(cpp.findPrincipals(TestPrincipalProvider.UNKNOWN.getName(),
PrincipalManager.SEARCH_TYPE_ALL).hasNext());
+
assertFalse(cpp.findPrincipals(TestPrincipalProvider.UNKNOWN.getName(),
PrincipalManager.SEARCH_TYPE_NOT_GROUP).hasNext());
+
assertFalse(cpp.findPrincipals(TestPrincipalProvider.UNKNOWN.getName(),
PrincipalManager.SEARCH_TYPE_GROUP).hasNext());
+ }
+
+ @Test
+ public void findPrincipalsByTypeGroup() {
+ Iterable<? extends Principal> expected =
Iterables.concat(ImmutableSet.of(EveryonePrincipal.getInstance()),
Iterables.filter(testPrincipals(), new Predicate<Principal>() {
+ @Override
+ public boolean apply(Principal input) {
+ return input instanceof Group;
+ }
+ }));
+
+ Iterator<? extends Principal> result =
cpp.findPrincipals(PrincipalManager.SEARCH_TYPE_GROUP);
+ assertIterator(expected, result);
+ }
+
+ @Test
+ public void findPrincipalsByTypeNotGroup() {
+ Iterable<? extends Principal> expected =
Iterables.filter(testPrincipals(), new Predicate<Principal>() {
+ @Override
+ public boolean apply(Principal input) {
+ return !(input instanceof Group);
+ }
+ });
+
+ Iterator<? extends Principal> result =
cpp.findPrincipals(PrincipalManager.SEARCH_TYPE_NOT_GROUP);
+ assertIterator(expected, result);
+ }
+
+ @Test
+ public void findPrincipalsByTypeAll() {
+ Iterator<? extends Principal> result =
cpp.findPrincipals(PrincipalManager.SEARCH_TYPE_ALL);
+
assertIterator(Iterables.concat(ImmutableSet.of(EveryonePrincipal.getInstance()),
testPrincipals()), result);
}
}
\ No newline at end of file
Modified:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/EmptyPrincipalProviderTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/EmptyPrincipalProviderTest.java?rev=1784743&r1=1784742&r2=1784743&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/EmptyPrincipalProviderTest.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/EmptyPrincipalProviderTest.java
Tue Feb 28 14:31:55 2017
@@ -19,23 +19,17 @@ package org.apache.jackrabbit.oak.spi.se
import java.security.Principal;
import org.apache.jackrabbit.api.security.principal.PrincipalManager;
-import org.apache.jackrabbit.oak.AbstractSecurityTest;
import org.junit.Test;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
-public class EmptyPrincipalProviderTest extends AbstractSecurityTest {
+public class EmptyPrincipalProviderTest {
private PrincipalProvider principalProvider =
EmptyPrincipalProvider.INSTANCE;
- private Principal testPrincipal;
+ private Principal testPrincipal = new PrincipalImpl("testUser");
- @Override
- public void before() throws Exception {
- super.before();
- testPrincipal = getTestUser().getPrincipal();
- }
@Test
public void testGetPrincipal() {
@@ -52,7 +46,7 @@ public class EmptyPrincipalProviderTest
@Test
public void testGetPrincipals() throws Exception {
-
assertTrue(principalProvider.getPrincipals(getTestUser().getID()).isEmpty());
+ assertTrue(principalProvider.getPrincipals("userId").isEmpty());
}
@Test
Modified:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/EveryonePrincipalTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/EveryonePrincipalTest.java?rev=1784743&r1=1784742&r2=1784743&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/EveryonePrincipalTest.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/EveryonePrincipalTest.java
Tue Feb 28 14:31:55 2017
@@ -24,6 +24,8 @@ import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
@@ -103,6 +105,12 @@ public class EveryonePrincipalTest {
assertEquals(everyone, someotherEveryone);
}
+ @Test
+ public void testToString() {
+ assertNotNull(everyone.toString());
+ assertNotEquals(EveryonePrincipal.NAME, everyone.toString());
+ }
+
//--------------------------------------------------------------------------
private class OtherEveryone implements JackrabbitPrincipal {
Modified:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/PrincipalImplTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/PrincipalImplTest.java?rev=1784743&r1=1784742&r2=1784743&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/PrincipalImplTest.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/PrincipalImplTest.java
Tue Feb 28 14:31:55 2017
@@ -25,6 +25,8 @@ import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
/**
@@ -77,6 +79,13 @@ public class PrincipalImplTest {
}
}
+ @Test
+ public void testToString() {
+ assertNotNull(principal.toString());
+ assertTrue(principal.toString().endsWith(principal.getName()));
+
assertTrue(principal.toString().startsWith(principal.getClass().getName()));
+ }
+
//--------------------------------------------------------------------------
private class TestPrincipal extends PrincipalImpl {
Copied:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/PrincipalManagerImplTest.java
(from r1784697,
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/security/principal/PrincipalManagerTest.java)
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/PrincipalManagerImplTest.java?p2=jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/PrincipalManagerImplTest.java&p1=jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/security/principal/PrincipalManagerTest.java&r1=1784697&r2=1784743&rev=1784743&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/security/principal/PrincipalManagerTest.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/PrincipalManagerImplTest.java
Tue Feb 28 14:31:55 2017
@@ -14,141 +14,100 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.jackrabbit.oak.jcr.security.principal;
+package org.apache.jackrabbit.oak.spi.security.principal;
import java.security.Principal;
import java.security.acl.Group;
import java.util.Enumeration;
-import java.util.HashSet;
-import java.util.Set;
-import javax.jcr.Credentials;
-import javax.jcr.Session;
-import javax.jcr.SimpleCredentials;
+import java.util.Iterator;
+import javax.annotation.Nonnull;
-import org.apache.jackrabbit.api.JackrabbitSession;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Iterators;
import org.apache.jackrabbit.api.security.principal.PrincipalIterator;
import org.apache.jackrabbit.api.security.principal.PrincipalManager;
-import org.apache.jackrabbit.api.security.user.Authorizable;
-import org.apache.jackrabbit.oak.spi.security.principal.EveryonePrincipal;
-import org.apache.jackrabbit.test.AbstractJCRTest;
-import org.apache.jackrabbit.test.NotExecutableException;
-import org.junit.Before;
import org.junit.Test;
-/**
- * {@code PrincipalManagerTest}...
- */
-public class PrincipalManagerTest extends AbstractJCRTest {
-
- private PrincipalManager principalMgr;
- private Group everyone;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+
+public class PrincipalManagerImplTest {
+
+ private final TestPrincipalProvider provider = new TestPrincipalProvider();
+ private final PrincipalManagerImpl principalMgr = new
PrincipalManagerImpl(provider);
+ private Iterable<Principal> testPrincipals = provider.getTestPrincipals();
- private Principal[] adminPrincipals;
-
- @Before
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- if (!(superuser instanceof JackrabbitSession)) {
- superuser.logout();
- throw new NotExecutableException();
- }
- principalMgr = ((JackrabbitSession) superuser).getPrincipalManager();
- everyone = (Group) principalMgr.getEveryone();
-
- adminPrincipals = getPrincipals(getHelper().getSuperuserCredentials());
- }
-
- private Principal[] getPrincipals(Credentials credentials) throws
Exception {
- Set<Principal> principals = new HashSet<Principal>();
- if (credentials instanceof SimpleCredentials) {
- Principal p = principalMgr.getPrincipal(((SimpleCredentials)
credentials).getUserID());
- if (p != null) {
- principals.add(p);
- PrincipalIterator principalIterator =
principalMgr.getGroupMembership(p);
- while (principalIterator.hasNext()) {
- principals.add(principalIterator.nextPrincipal());
- }
- }
- }
- return principals.toArray(new Principal[principals.size()]);
+ private static boolean isGroup(Principal p) {
+ return p instanceof Group;
}
- private static boolean isGroup(Principal p) {
- return p instanceof java.security.acl.Group;
+ private static void assertIterator(@Nonnull Iterator<? extends Principal>
expected, @Nonnull Iterator<? extends Principal> result) {
+ assertEquals(ImmutableSet.copyOf(expected),
ImmutableSet.copyOf(result));
}
@Test
public void testGetEveryone() {
Principal principal = principalMgr.getEveryone();
- assertTrue(principal != null);
assertTrue(isGroup(principal));
}
- /**
- * @since oak
- */
@Test
- public void testGetEveryoneByName() {
- assertTrue(principalMgr.hasPrincipal(EveryonePrincipal.NAME));
- assertNotNull(principalMgr.getPrincipal(EveryonePrincipal.NAME));
- assertEquals(EveryonePrincipal.getInstance(),
principalMgr.getPrincipal(EveryonePrincipal.NAME));
+ public void testGetEveryone2() {
+ Principal principal = new PrincipalManagerImpl(new
TestPrincipalProvider(false)).getEveryone();
+ assertSame(EveryonePrincipal.getInstance(), principal);
}
@Test
- public void testSuperUserIsEveryOne() {
- for (Principal pcpl : adminPrincipals) {
- if (!(pcpl.equals(everyone))) {
- assertTrue(everyone.isMember(pcpl));
- }
- }
+ public void testGetPrincipalEveryone() {
+ assertEquals(EveryonePrincipal.getInstance(),
principalMgr.getPrincipal(EveryonePrincipal.NAME));
}
@Test
- public void testReadOnlyIsEveryOne() throws Exception {
- Session s = getHelper().getReadOnlySession();
- try {
- Principal[] pcpls =
getPrincipals(getHelper().getReadOnlyCredentials());
- for (Principal pcpl : pcpls) {
- if (!(pcpl.equals(everyone))) {
- assertTrue(everyone.isMember(pcpl));
- }
- }
- } finally {
- s.logout();
- }
+ public void testHasPrincipalEveryone() {
+ assertTrue(principalMgr.hasPrincipal(EveryonePrincipal.NAME));
}
@Test
public void testHasPrincipal() {
- assertTrue(principalMgr.hasPrincipal(everyone.getName()));
-
- for (Principal pcpl : adminPrincipals) {
+ for (Principal pcpl : testPrincipals) {
assertTrue(principalMgr.hasPrincipal(pcpl.getName()));
}
}
@Test
- public void testGetPrincipal() {
- Principal p = principalMgr.getPrincipal(everyone.getName());
- assertEquals(everyone, p);
+ public void testHasPrincipalUnknown() {
+
assertFalse(principalMgr.hasPrincipal(TestPrincipalProvider.UNKNOWN.getName()));
+ }
- for (Principal pcpl : adminPrincipals) {
- Principal pp = principalMgr.getPrincipal(pcpl.getName());
- assertEquals("PrincipalManager.getPrincipal returned Principal
with different Name", pcpl.getName(), pp.getName());
- }
+ @Test
+ public void testGetPrincipalUnknown() {
+
assertNull(principalMgr.getPrincipal(TestPrincipalProvider.UNKNOWN.getName()));
}
@Test
- public void testGetPrincipalGetName() {
- for (Principal pcpl : adminPrincipals) {
- Principal pp = principalMgr.getPrincipal(pcpl.getName());
- assertEquals("PrincipalManager.getPrincipal returned Principal
with different Name", pcpl.getName(), pp.getName());
+ public void testGetPrincipal() {
+ for (Principal principal : testPrincipals){
+ Principal pp = principalMgr.getPrincipal(principal.getName());
+ assertNotNull(pp);
+ assertEquals("PrincipalManager.getPrincipal returned Principal
with different Name", principal.getName(), pp.getName());
+ assertEquals("PrincipalManager.getPrincipal returned different
Principal", principal, pp);
}
}
@Test
- public void testGetPrincipals() {
+ public void testGetPrincipalsNonGroup() {
+ Iterator<? extends Principal> expected =
provider.findPrincipals(PrincipalManager.SEARCH_TYPE_NOT_GROUP);
+ PrincipalIterator it =
principalMgr.getPrincipals(PrincipalManager.SEARCH_TYPE_NOT_GROUP);
+
+ assertIterator(expected, it);
+ }
+
+ @Test
+ public void testGetPrincipalsNonGroupContainsNoGroups() {
PrincipalIterator it =
principalMgr.getPrincipals(PrincipalManager.SEARCH_TYPE_NOT_GROUP);
while (it.hasNext()) {
Principal p = it.nextPrincipal();
@@ -157,7 +116,15 @@ public class PrincipalManagerTest extend
}
@Test
- public void testGetGroupPrincipals() {
+ public void testGetPrincipalsGroup() {
+ Iterator<? extends Principal> expected =
provider.findPrincipals(PrincipalManager.SEARCH_TYPE_GROUP);
+ PrincipalIterator it =
principalMgr.getPrincipals(PrincipalManager.SEARCH_TYPE_GROUP);
+
+ assertIterator(expected, it);
+ }
+
+ @Test
+ public void testGetPrincipalsGroupContainsGroups() {
PrincipalIterator it =
principalMgr.getPrincipals(PrincipalManager.SEARCH_TYPE_GROUP);
while (it.hasNext()) {
Principal p = it.nextPrincipal();
@@ -166,25 +133,18 @@ public class PrincipalManagerTest extend
}
@Test
- public void testGetAllPrincipals() {
+ public void testGetPrincipalsAll() {
+ Iterator<? extends Principal> expected =
provider.findPrincipals(PrincipalManager.SEARCH_TYPE_ALL);
PrincipalIterator it =
principalMgr.getPrincipals(PrincipalManager.SEARCH_TYPE_ALL);
- while (it.hasNext()) {
- Principal p = it.nextPrincipal();
- assertTrue(principalMgr.hasPrincipal(p.getName()));
- assertEquals(principalMgr.getPrincipal(p.getName()), p);
- }
+
+ assertIterator(expected, it);
}
@Test
- public void testMembers() {
- PrincipalIterator it =
principalMgr.getPrincipals(PrincipalManager.SEARCH_TYPE_ALL);
- while (it.hasNext()) {
- Principal p = it.nextPrincipal();
- if (p.equals(principalMgr.getEveryone())) {
- continue;
- }
+ public void testAllMembersKnown() {
+ for (Principal p : testPrincipals) {
if (isGroup(p)) {
- Enumeration<? extends Principal> en =
((java.security.acl.Group) p).members();
+ Enumeration<? extends Principal> en = ((Group) p).members();
while (en.hasMoreElements()) {
Principal memb = en.nextElement();
assertTrue(principalMgr.hasPrincipal(memb.getName()));
@@ -194,52 +154,32 @@ public class PrincipalManagerTest extend
}
@Test
- public void testMembers2() throws Exception {
- Authorizable gr = null;
- try {
- gr = ((JackrabbitSession)
superuser).getUserManager().createGroup(getClass().getName());
- superuser.save();
- PrincipalIterator it =
principalMgr.getPrincipals(PrincipalManager.SEARCH_TYPE_ALL);
- while (it.hasNext()) {
- Principal p = it.nextPrincipal();
- if (p.equals(principalMgr.getEveryone())) {
- continue;
- }
- if (isGroup(p)) {
- Enumeration<? extends Principal> en =
((java.security.acl.Group) p).members();
- while (en.hasMoreElements()) {
- Principal memb = en.nextElement();
- assertTrue(principalMgr.hasPrincipal(memb.getName()));
- }
- }
- }
- } finally {
- if (gr != null) {
- gr.remove();
- superuser.save();
- }
- }
+ public void testGroupMembershipNonGroup() {
+ assertMembership(principalMgr, PrincipalManager.SEARCH_TYPE_NOT_GROUP);
}
@Test
- public void testGroupMembership() {
- testMembership(PrincipalManager.SEARCH_TYPE_NOT_GROUP);
- testMembership(PrincipalManager.SEARCH_TYPE_GROUP);
- testMembership(PrincipalManager.SEARCH_TYPE_ALL);
+ public void testGroupMembershipGroup() {
+ assertMembership(principalMgr, PrincipalManager.SEARCH_TYPE_GROUP);
}
- private void testMembership(int searchType) {
- PrincipalIterator it = principalMgr.getPrincipals(searchType);
+ @Test
+ public void testGroupMembershipAll() {
+ assertMembership(principalMgr, PrincipalManager.SEARCH_TYPE_ALL);
+ }
+
+ private static void assertMembership(@Nonnull PrincipalManager mgr, int
searchType) {
+ PrincipalIterator it = mgr.getPrincipals(searchType);
while (it.hasNext()) {
Principal p = it.nextPrincipal();
- if (p.equals(everyone)) {
+ if (p.equals(EveryonePrincipal.getInstance())) {
continue;
}
boolean atleastEveryone = false;
- for (PrincipalIterator membership =
principalMgr.getGroupMembership(p); membership.hasNext();) {
+ for (PrincipalIterator membership = mgr.getGroupMembership(p);
membership.hasNext();) {
Principal gr = membership.nextPrincipal();
assertTrue(isGroup(gr));
- if (gr.equals(everyone)) {
+ if (gr.equals(EveryonePrincipal.getInstance())) {
atleastEveryone = true;
}
}
@@ -248,15 +188,13 @@ public class PrincipalManagerTest extend
}
@Test
- public void testEveryoneGroupMembership() {
- Principal everyone = EveryonePrincipal.getInstance();
- for (PrincipalIterator membership =
principalMgr.getGroupMembership(everyone); membership.hasNext();) {
- Principal gr = membership.nextPrincipal();
- assertTrue(isGroup(gr));
- if (gr.equals(everyone)) {
- fail("Everyone must never be a member of the EveryOne group.");
- }
- }
+ public void testGetGroupMembershipEveryoneEmpty() {
+
assertFalse(principalMgr.getGroupMembership(EveryonePrincipal.getInstance()).hasNext());
+ }
+
+ @Test
+ public void testGetGroupMembershipEveryoneWithoutEveryone() {
+
assertFalse(Iterators.contains(principalMgr.getGroupMembership(EveryonePrincipal.getInstance()),
EveryonePrincipal.getInstance()));
}
@Test
@@ -271,7 +209,7 @@ public class PrincipalManagerTest extend
assertTrue(isGroup(p));
- Enumeration<? extends Principal> members =
((java.security.acl.Group) p).members();
+ Enumeration<? extends Principal> members = ((Group) p).members();
while (members.hasMoreElements()) {
Principal memb = members.nextElement();
@@ -290,111 +228,84 @@ public class PrincipalManagerTest extend
@Test
public void testFindPrincipal() {
- for (Principal pcpl : adminPrincipals) {
- if (pcpl.equals(everyone)) {
- continue;
- }
-
- assertTrue(principalMgr.hasPrincipal(pcpl.getName()));
+ for (Principal pcpl : testPrincipals) {
PrincipalIterator it = principalMgr.findPrincipals(pcpl.getName());
- // search must find at least a single principal
- assertTrue("findPrincipals does not find principal with filter '"
+ pcpl.getName() + '\'', it.hasNext());
+ assertTrue("findPrincipals does not find principal with filter '"
+ pcpl.getName() + '\'', Iterators.contains(it, pcpl));
}
}
@Test
- public void testFindPrincipalByType() {
- for (Principal pcpl : adminPrincipals) {
- if (pcpl.equals(everyone)) {
- // special case covered by another test
- continue;
+ public void testFindPrincipalByTypeGroup() {
+ for (Principal pcpl : testPrincipals) {
+ if (isGroup(pcpl)) {
+ PrincipalIterator it =
principalMgr.findPrincipals(pcpl.getName(), PrincipalManager.SEARCH_TYPE_GROUP);
+ assertTrue("findPrincipals does not find principal with filter
'" + pcpl.getName() + '\'', Iterators.contains(it, pcpl));
+ } else {
+ PrincipalIterator it =
principalMgr.findPrincipals(pcpl.getName(),
PrincipalManager.SEARCH_TYPE_NOT_GROUP);
+ assertTrue("findPrincipals does not find principal with filter
'" + pcpl.getName() + '\'', Iterators.contains(it, pcpl));
}
+ }
+ }
- assertTrue(principalMgr.hasPrincipal(pcpl.getName()));
+ @Test
+ public void testFindPrincipalByType() {
+ for (Principal pcpl : testPrincipals) {
if (isGroup(pcpl)) {
- PrincipalIterator it =
principalMgr.findPrincipals(pcpl.getName(),
- PrincipalManager.SEARCH_TYPE_GROUP);
- // search must find at least a single matching group principal
- assertTrue("findPrincipals does not find principal with filter
" + pcpl.getName(), it.hasNext());
+ PrincipalIterator it =
principalMgr.findPrincipals(pcpl.getName(), PrincipalManager.SEARCH_TYPE_GROUP);
+ assertTrue("findPrincipals does not find principal with filter
'" + pcpl.getName() + '\'', Iterators.contains(it, pcpl));
} else {
- PrincipalIterator it =
principalMgr.findPrincipals(pcpl.getName(),
- PrincipalManager.SEARCH_TYPE_NOT_GROUP);
- // search must find at least a single matching non-group
principal
- assertTrue("findPrincipals does not find principal with filter
'" + pcpl.getName() + "' and type " + PrincipalManager.SEARCH_TYPE_NOT_GROUP,
it.hasNext());
+ PrincipalIterator it =
principalMgr.findPrincipals(pcpl.getName(),
PrincipalManager.SEARCH_TYPE_NOT_GROUP);
+ assertTrue("findPrincipals does not find principal with filter
'" + pcpl.getName() + '\'', Iterators.contains(it, pcpl));
}
}
}
@Test
public void testFindPrincipalByTypeAll() {
- for (Principal pcpl : adminPrincipals) {
- if (pcpl.equals(everyone)) {
- // special case covered by another test
- continue;
- }
-
- assertTrue(principalMgr.hasPrincipal(pcpl.getName()));
-
+ for (Principal pcpl : testPrincipals) {
PrincipalIterator it = principalMgr.findPrincipals(pcpl.getName(),
PrincipalManager.SEARCH_TYPE_ALL);
- PrincipalIterator it2 =
principalMgr.findPrincipals(pcpl.getName());
-
- assertTrue("Principal "+ pcpl.getName() + " not found",
it.hasNext());
- assertTrue("Principal "+ pcpl.getName() + " not found",
it2.hasNext());
-
- // both search must reveal the same result and size
- assertTrue(it.getSize() == it2.getSize());
-
- Set<Principal> s1 = new HashSet<Principal>();
- Set<Principal> s2 = new HashSet<Principal>();
- while (it.hasNext() && it2.hasNext()) {
- s1.add(it.nextPrincipal());
- s2.add(it2.nextPrincipal());
- }
-
- assertEquals(s1, s2);
- assertFalse(it.hasNext() && it2.hasNext());
+ assertTrue("findPrincipals does not find principal with filter '"
+ pcpl.getName() + '\'', Iterators.contains(it, pcpl));
}
}
@Test
public void testFindEveryone() {
- Principal everyone = principalMgr.getEveryone();
- assertTrue(principalMgr.hasPrincipal(everyone.getName()));
-
- boolean containedInResult = false;
-
// untyped search -> everyone must be part of the result set
- PrincipalIterator it = principalMgr.findPrincipals(everyone.getName());
- while (it.hasNext()) {
- Principal p = it.nextPrincipal();
- if (p.getName().equals(everyone.getName())) {
- containedInResult = true;
- }
- }
- assertTrue(containedInResult);
+ PrincipalIterator it =
principalMgr.findPrincipals(EveryonePrincipal.NAME);
+ assertTrue("findPrincipals does not find principal with filter '" +
EveryonePrincipal.NAME + '\'', Iterators.contains(it,
EveryonePrincipal.getInstance()));
+ }
+ @Test
+ public void testFindEveryoneTypeGroup() {
// search group only -> everyone must be part of the result set
- containedInResult = false;
- it = principalMgr.findPrincipals(everyone.getName(),
PrincipalManager.SEARCH_TYPE_GROUP);
- while (it.hasNext()) {
- Principal p = it.nextPrincipal();
- if (p.getName().equals(everyone.getName())) {
- containedInResult = true;
- }
- }
- assertTrue(containedInResult);
+ PrincipalIterator it =
principalMgr.findPrincipals(EveryonePrincipal.NAME,
PrincipalManager.SEARCH_TYPE_GROUP);
+ assertTrue("findPrincipals does not find principal with filter '" +
EveryonePrincipal.NAME + '\'', Iterators.contains(it,
EveryonePrincipal.getInstance()));
+ }
+ @Test
+ public void testFindEveryoneTypeNonGroup() {
// search non-group only -> everyone should not be part of the result
set
- containedInResult = false;
- it = principalMgr.findPrincipals(everyone.getName(),
PrincipalManager.SEARCH_TYPE_NOT_GROUP);
- while (it.hasNext()) {
- Principal p = it.nextPrincipal();
- if (p.getName().equals(everyone.getName())) {
- containedInResult = true;
- }
- }
- assertFalse(containedInResult);
+ PrincipalIterator it =
principalMgr.findPrincipals(EveryonePrincipal.NAME,
PrincipalManager.SEARCH_TYPE_NOT_GROUP);
+ assertFalse("findPrincipals did find principal with filter '" +
EveryonePrincipal.NAME + '\'', Iterators.contains(it,
EveryonePrincipal.getInstance()));
+ }
+
+ @Test
+ public void testFindUnknownByTypeAll() {
+ String unknownHint =
TestPrincipalProvider.UNKNOWN.getName().substring(0, 4);
+ assertFalse(principalMgr.findPrincipals(unknownHint,
PrincipalManager.SEARCH_TYPE_ALL).hasNext());
+ }
+
+ @Test
+ public void testFindUnknownByTypeGroup() {
+ String unknownHint =
TestPrincipalProvider.UNKNOWN.getName().substring(0, 4);
+ assertFalse(principalMgr.findPrincipals(unknownHint,
PrincipalManager.SEARCH_TYPE_GROUP).hasNext());
+ }
+
+ @Test
+ public void testFindUnknownByTypeNotGroup() {
+ String unknownHint =
TestPrincipalProvider.UNKNOWN.getName().substring(0, 4);
+ assertFalse(principalMgr.findPrincipals(unknownHint,
PrincipalManager.SEARCH_TYPE_NOT_GROUP).hasNext());
}
}
\ No newline at end of file
Added:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/SystemPrincipalTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/SystemPrincipalTest.java?rev=1784743&view=auto
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/SystemPrincipalTest.java
(added)
+++
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/SystemPrincipalTest.java
Tue Feb 28 14:31:55 2017
@@ -0,0 +1,93 @@
+/*
+ * 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.jackrabbit.oak.spi.security.principal;
+
+import java.security.Principal;
+
+import org.apache.jackrabbit.api.security.principal.JackrabbitPrincipal;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+
+public class SystemPrincipalTest {
+
+ @Test
+ public void testGetName() {
+ assertEquals("system", SystemPrincipal.INSTANCE.getName());
+ }
+
+ @Test
+ public void testEquals() {
+ assertEquals(SystemPrincipal.INSTANCE, SystemPrincipal.INSTANCE);
+ }
+
+ @Test
+ public void testSame() {
+ assertSame(SystemPrincipal.INSTANCE, SystemPrincipal.INSTANCE);
+ }
+
+ @Test
+ public void testHashCode() {
+ assertTrue(SystemPrincipal.INSTANCE.hashCode() ==
SystemPrincipal.INSTANCE.hashCode());
+ }
+
+ @Test
+ public void testNotEqualsOtherPrincipalWithSameName() {
+ Principal another = new Principal() {
+ public String getName() {
+ return SystemPrincipal.INSTANCE.getName();
+ }
+ };
+ assertFalse(SystemPrincipal.INSTANCE.equals(another));
+ }
+
+ @Test
+ public void testEqualsOtherJackrabbitPrincipal() {
+ Principal another = new OtherSystem();
+ assertFalse(SystemPrincipal.INSTANCE.equals(another));
+ }
+
+ @Test
+ public void testToString() {
+ assertNotNull(SystemPrincipal.INSTANCE.toString());
+ assertNotEquals(SystemPrincipal.INSTANCE.getName(),
SystemPrincipal.INSTANCE.toString());
+ }
+
+
//--------------------------------------------------------------------------
+
+ private class OtherSystem implements JackrabbitPrincipal {
+ public String getName() {
+ return SystemPrincipal.INSTANCE.getName();
+ }
+ @Override
+ public boolean equals(Object o) {
+ if (o instanceof JackrabbitPrincipal) {
+ return getName().equals(((JackrabbitPrincipal) o).getName());
+ }
+ return false;
+ }
+ @Override
+ public int hashCode() {
+ return getName().hashCode();
+ }
+ }
+}
\ No newline at end of file
Added:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/TestPrincipalProvider.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/TestPrincipalProvider.java?rev=1784743&view=auto
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/TestPrincipalProvider.java
(added)
+++
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/TestPrincipalProvider.java
Tue Feb 28 14:31:55 2017
@@ -0,0 +1,228 @@
+/*
+ * 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.jackrabbit.oak.spi.security.principal;
+
+import java.security.Principal;
+import java.security.acl.Group;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+import javax.annotation.CheckForNull;
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
+
+import com.google.common.base.Function;
+import com.google.common.base.Predicate;
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Iterators;
+import com.google.common.collect.Maps;
+import com.google.common.collect.Sets;
+import org.apache.jackrabbit.api.security.principal.PrincipalManager;
+
+public final class TestPrincipalProvider implements PrincipalProvider {
+
+ public static final Principal UNKNOWN = new PrincipalImpl("unknown");
+
+ private final boolean exposesEveryone;
+ private final Map<String, Principal> principals;
+
+ public TestPrincipalProvider() {
+ this(true);
+ }
+
+ public TestPrincipalProvider(boolean exposesEveryone) {
+ this.exposesEveryone = exposesEveryone;
+ this.principals = TestPrincipals.asMap();
+ }
+
+ public TestPrincipalProvider(String... principalNames) {
+ this.exposesEveryone = true;
+ this.principals = Maps.toMap(ImmutableSet.copyOf(principalNames), new
Function<String, Principal>() {
+ @Override
+ public Principal apply(String input) {
+ return new PrincipalImpl(input);
+ }
+ });
+ }
+
+ public Iterable<Principal> getTestPrincipals() {
+ return principals.values();
+ }
+
+ public Iterable<Principal> all() {
+ Set all = Sets.newHashSet(principals.values());
+ all.add(EveryonePrincipal.getInstance());
+ return all;
+ }
+
+ public static String getIDFromPrincipal(@Nonnull Principal principal) {
+ return principal.getName() + "_id";
+ }
+
+ @CheckForNull
+ private static String getPrincipalNameFromID(@Nonnull String id) {
+ if (id.endsWith("_id")) {
+ return id.substring(0, id.lastIndexOf("_id"));
+ } else {
+ return null;
+ }
+ }
+
+ @CheckForNull
+ @Override
+ public Principal getPrincipal(@Nonnull String principalName) {
+ if (exposesEveryone && EveryonePrincipal.NAME.equals(principalName)) {
+ return EveryonePrincipal.getInstance();
+ } else {
+ return principals.get(principalName);
+ }
+ }
+
+ @Nonnull
+ @Override
+ public Set<Group> getGroupMembership(@Nonnull Principal principal) {
+ if (principals.equals(TestPrincipals.asMap())) {
+ return TestPrincipals.membership(principal.getName());
+ } else if (principals.values().contains(principal)) {
+ return ImmutableSet.<Group>of(EveryonePrincipal.getInstance());
+ } else {
+ return ImmutableSet.of();
+ }
+ }
+
+ @Nonnull
+ @Override
+ public Set<? extends Principal> getPrincipals(@Nonnull String userID) {
+ String pName = getPrincipalNameFromID(userID);
+ if (pName != null) {
+ Principal p = principals.get(pName);
+ if (p != null) {
+ Set s = Sets.newHashSet(p);
+ s.addAll(getGroupMembership(p));
+ return s;
+ }
+ }
+
+ return ImmutableSet.of();
+ }
+
+ @Nonnull
+ @Override
+ public Iterator<? extends Principal> findPrincipals(@Nullable String
nameHint, int searchType) {
+ return Iterables.filter(all(), new SearchTypePredicate(nameHint,
searchType)).iterator();
+ }
+
+ @Nonnull
+ @Override
+ public Iterator<? extends Principal> findPrincipals(int searchType) {
+ return findPrincipals(null, searchType);
+ }
+
+ private static final class SearchTypePredicate implements
Predicate<Principal> {
+
+ private final int searchType;
+ private final String nameHint;
+
+ private SearchTypePredicate(@Nullable String nameHint, int searchType)
{
+ this.searchType = searchType;
+ this.nameHint = nameHint;
+ }
+
+ @Override
+ public boolean apply(Principal principal) {
+ if (nameHint != null && principal != null &&
!principal.getName().startsWith(nameHint)) {
+ return false;
+ }
+
+ switch (searchType) {
+ case PrincipalManager.SEARCH_TYPE_ALL: return true;
+ case PrincipalManager.SEARCH_TYPE_GROUP: return principal
instanceof Group;
+ case PrincipalManager.SEARCH_TYPE_NOT_GROUP: return
!(principal instanceof Group);
+ default: throw new IllegalArgumentException();
+ }
+ }
+ }
+
+ private static final class TestGroup extends PrincipalImpl implements
Group {
+
+ private final Enumeration<? extends Principal> members;
+
+ public TestGroup(String name, Principal... members) {
+ super(name);
+ Set<? extends Principal> mset = ImmutableSet.copyOf(members);
+ this.members = Iterators.asEnumeration(mset.iterator());
+ }
+
+ @Override
+ public boolean addMember(Principal user) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public boolean removeMember(Principal user) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public boolean isMember(Principal member) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public Enumeration<? extends Principal> members() {
+ return members;
+ }
+ }
+
+ private static final class TestPrincipals {
+
+ private static final Principal a = new PrincipalImpl("a");
+ private static final Principal ac = new PrincipalImpl("ac");
+ private static final Group gr1 = new TestGroup("tGr1");
+ private static final Group gr2 = new TestGroup("tGr2", a);
+ private static final Group gr3 = new TestGroup("gr2", gr2, ac);
+
+ private static final Map<String, Principal> principals =
ImmutableMap.<String, Principal>builder()
+ .put(a.getName(), a)
+ .put("b", new PrincipalImpl("b"))
+ .put(ac.getName(), ac)
+ .put(gr1.getName(), gr1)
+ .put(gr2.getName(), gr2)
+ .put(gr3.getName(), gr3).build();
+
+ private static Map<String, Principal> asMap() {
+ return principals;
+ }
+
+ private static Set<Group> membership(@Nonnull String name) {
+ if ("a".equals(name)) {
+ return ImmutableSet.of(EveryonePrincipal.getInstance(), gr2,
gr3);
+ } else if ("ac".equals(name)) {
+ return ImmutableSet.of(EveryonePrincipal.getInstance(), gr3);
+ } else if (gr2.getName().equals(name)) {
+ return ImmutableSet.of(EveryonePrincipal.getInstance(), gr3);
+ } else if (principals.containsKey(name)) {
+ return ImmutableSet.<Group>of(EveryonePrincipal.getInstance());
+ } else {
+ return ImmutableSet.of();
+ }
+ }
+ }
+}
\ No newline at end of file