Author: angela
Date: Thu Jun 16 18:38:05 2016
New Revision: 1748769
URL: http://svn.apache.org/viewvc?rev=1748769&view=rev
Log:
OAK-4479 : Move EmptyPrincipalProvider to oak-core
minor improvement: more tests for o.a.j.o.spi.security.principal package
Added:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/EmptyPrincipalProvider.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/CompositePrincipalConfigurationTest.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
- copied, changed from r1748626,
jackrabbit/oak/trunk/oak-auth-external/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/EmptyPrincipalProviderTest.java
Removed:
jackrabbit/oak/trunk/oak-auth-external/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/EmptyPrincipalProviderTest.java
Modified:
jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/ExternalPrincipalConfiguration.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/CompositePrincipalConfiguration.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/CompositePrincipalProvider.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/package-info.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-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/ExternalPrincipalConfiguration.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/ExternalPrincipalConfiguration.java?rev=1748769&r1=1748768&r2=1748769&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/ExternalPrincipalConfiguration.java
(original)
+++
jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/ExternalPrincipalConfiguration.java
Thu Jun 16 18:38:05 2016
@@ -21,7 +21,6 @@ import java.security.acl.Group;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
-import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -31,9 +30,7 @@ import javax.annotation.Nullable;
import com.google.common.base.Function;
import com.google.common.base.Predicates;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
-import com.google.common.collect.Iterators;
import org.apache.felix.scr.annotations.Activate;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Deactivate;
@@ -53,6 +50,7 @@ import org.apache.jackrabbit.oak.spi.sec
import
org.apache.jackrabbit.oak.spi.security.authentication.external.impl.DefaultSyncConfigImpl;
import
org.apache.jackrabbit.oak.spi.security.authentication.external.impl.ExternalLoginModuleFactory;
import
org.apache.jackrabbit.oak.spi.security.authentication.external.impl.SyncHandlerMapping;
+import org.apache.jackrabbit.oak.spi.security.principal.EmptyPrincipalProvider;
import org.apache.jackrabbit.oak.spi.security.principal.PrincipalConfiguration;
import org.apache.jackrabbit.oak.spi.security.principal.PrincipalManagerImpl;
import org.apache.jackrabbit.oak.spi.security.principal.PrincipalProvider;
@@ -171,46 +169,6 @@ public class ExternalPrincipalConfigurat
}
/**
- * Implementation of the {@code PrincipalProvider} interface that never
- * returns any principals.
- */
- private static final class EmptyPrincipalProvider implements
PrincipalProvider {
-
- private static final PrincipalProvider INSTANCE = new
EmptyPrincipalProvider();
-
- private EmptyPrincipalProvider() {}
-
- @Override
- public Principal getPrincipal(@Nonnull String principalName) {
- return null;
- }
-
- @Nonnull
- @Override
- public Set<Group> getGroupMembership(@Nonnull Principal principal) {
- return ImmutableSet.of();
- }
-
- @Nonnull
- @Override
- public Set<? extends Principal> getPrincipals(@Nonnull String userID) {
- return ImmutableSet.of();
- }
-
- @Nonnull
- @Override
- public Iterator<? extends Principal> findPrincipals(@Nullable String
nameHint, int searchType) {
- return Iterators.emptyIterator();
- }
-
- @Nonnull
- @Override
- public Iterator<? extends Principal> findPrincipals(int searchType) {
- return Iterators.emptyIterator();
- }
- }
-
- /**
* {@code ServiceTracker} to detect any {@link SyncHandler} that has
* dynamic membership enabled.
*/
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/CompositePrincipalConfiguration.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/CompositePrincipalConfiguration.java?rev=1748769&r1=1748768&r2=1748769&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/CompositePrincipalConfiguration.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/CompositePrincipalConfiguration.java
Thu Jun 16 18:38:05 2016
@@ -16,10 +16,10 @@
*/
package org.apache.jackrabbit.oak.spi.security.principal;
+import java.util.ArrayList;
+import java.util.List;
import javax.annotation.Nonnull;
-import com.google.common.base.Function;
-import com.google.common.collect.Lists;
import org.apache.jackrabbit.api.security.principal.PrincipalManager;
import org.apache.jackrabbit.oak.api.Root;
import org.apache.jackrabbit.oak.namepath.NamePathMapper;
@@ -49,11 +49,19 @@ public class CompositePrincipalConfigura
@Nonnull
@Override
public PrincipalProvider getPrincipalProvider(final Root root, final
NamePathMapper namePathMapper) {
- return new
CompositePrincipalProvider(Lists.transform(getConfigurations(), new
Function<PrincipalConfiguration, PrincipalProvider>() {
- @Override
- public PrincipalProvider apply(PrincipalConfiguration
principalConfiguration) {
- return principalConfiguration.getPrincipalProvider(root,
namePathMapper);
- }
- }));
+ List<PrincipalConfiguration> configurations = getConfigurations();
+ switch (configurations.size()) {
+ case 0: return EmptyPrincipalProvider.INSTANCE;
+ case 1: return configurations.get(0).getPrincipalProvider(root,
namePathMapper);
+ default:
+ List<PrincipalProvider> pps = new
ArrayList<>(configurations.size());
+ for (PrincipalConfiguration principalConfig : configurations) {
+ PrincipalProvider principalProvider =
principalConfig.getPrincipalProvider(root, namePathMapper);
+ if (!(principalProvider instanceof
EmptyPrincipalProvider)) {
+ pps.add(principalProvider);
+ }
+ }
+ return CompositePrincipalProvider.of(pps);
+ }
}
}
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/CompositePrincipalProvider.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/CompositePrincipalProvider.java?rev=1748769&r1=1748768&r2=1748769&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/CompositePrincipalProvider.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/CompositePrincipalProvider.java
Thu Jun 16 18:38:05 2016
@@ -22,7 +22,6 @@ import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
-
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
@@ -42,6 +41,21 @@ public class CompositePrincipalProvider
this.providers = checkNotNull(providers);
}
+ public static PrincipalProvider of(@Nonnull List<PrincipalProvider>
providers) {
+ PrincipalProvider pp;
+ switch (providers.size()) {
+ case 0 :
+ pp = EmptyPrincipalProvider.INSTANCE;
+ break;
+ case 1 :
+ pp = providers.get(0);
+ break;
+ default :
+ pp = new CompositePrincipalProvider(providers);
+ }
+ return pp;
+ }
+
//--------------------------------------------------< PrincipalProvider
>---
@Override
public Principal getPrincipal(@Nonnull String principalName) {
Added:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/EmptyPrincipalProvider.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/EmptyPrincipalProvider.java?rev=1748769&view=auto
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/EmptyPrincipalProvider.java
(added)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/EmptyPrincipalProvider.java
Thu Jun 16 18:38:05 2016
@@ -0,0 +1,67 @@
+/*
+ * 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.Iterator;
+import java.util.Set;
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
+
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Iterators;
+
+/**
+ * Implementation of the {@code PrincipalProvider} interface that never
+ * returns any principals.
+ */
+public final class EmptyPrincipalProvider implements PrincipalProvider {
+
+ public static final PrincipalProvider INSTANCE = new
EmptyPrincipalProvider();
+
+ private EmptyPrincipalProvider() {}
+
+ @Override
+ public Principal getPrincipal(@Nonnull String principalName) {
+ return null;
+ }
+
+ @Nonnull
+ @Override
+ public Set<Group> getGroupMembership(@Nonnull Principal principal) {
+ return ImmutableSet.of();
+ }
+
+ @Nonnull
+ @Override
+ public Set<? extends Principal> getPrincipals(@Nonnull String userID) {
+ return ImmutableSet.of();
+ }
+
+ @Nonnull
+ @Override
+ public Iterator<? extends Principal> findPrincipals(@Nullable String
nameHint, int searchType) {
+ return Iterators.emptyIterator();
+ }
+
+ @Nonnull
+ @Override
+ public Iterator<? extends Principal> findPrincipals(int searchType) {
+ return Iterators.emptyIterator();
+ }
+}
\ No newline at end of file
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/package-info.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/package-info.java?rev=1748769&r1=1748768&r2=1748769&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/package-info.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/package-info.java
Thu Jun 16 18:38:05 2016
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-@Version("1.3.0")
+@Version("1.4.0")
@Export(optional = "provide:=true")
package org.apache.jackrabbit.oak.spi.security.principal;
Added:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/CompositePrincipalConfigurationTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/CompositePrincipalConfigurationTest.java?rev=1748769&view=auto
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/CompositePrincipalConfigurationTest.java
(added)
+++
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/CompositePrincipalConfigurationTest.java
Thu Jun 16 18:38:05 2016
@@ -0,0 +1,201 @@
+/*
+ * 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.lang.reflect.Field;
+import java.security.Principal;
+import java.security.acl.Group;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+import javax.annotation.CheckForNull;
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
+
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Iterators;
+import org.apache.jackrabbit.api.security.principal.PrincipalManager;
+import org.apache.jackrabbit.oak.AbstractSecurityTest;
+import org.apache.jackrabbit.oak.api.Root;
+import org.apache.jackrabbit.oak.namepath.NamePathMapper;
+import org.apache.jackrabbit.oak.spi.security.ConfigurationBase;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+
+public class CompositePrincipalConfigurationTest extends AbstractSecurityTest {
+
+ private CompositePrincipalConfiguration cpConfig = new
CompositePrincipalConfiguration();
+
+ private static void assertSize(int expected, CompositePrincipalProvider
pp) throws Exception {
+ Field f =
CompositePrincipalProvider.class.getDeclaredField("providers");
+ f.setAccessible(true);
+
+ List<PrincipalProvider> providers = (List<PrincipalProvider>)
f.get(pp);
+ assertEquals(expected, providers.size());
+ }
+
+ @Test
+ public void testEmptyGetPrincipalManager() {
+ PrincipalManager pMgr = cpConfig.getPrincipalManager(root,
NamePathMapper.DEFAULT);
+ assertTrue(pMgr instanceof PrincipalManagerImpl);
+ }
+
+ @Test
+ public void testEmptyGetProvider() throws Exception {
+ PrincipalProvider pp = cpConfig.getPrincipalProvider(root,
NamePathMapper.DEFAULT);
+ assertFalse(pp instanceof CompositePrincipalProvider);
+ assertSame(EmptyPrincipalProvider.INSTANCE, pp);
+ }
+
+ @Test
+ public void testSingleGetPrincipalManager() {
+ PrincipalConfiguration testConfig = new TestPrincipalConfiguration();
+ cpConfig.addConfiguration(testConfig);
+
+ PrincipalManager pMgr = cpConfig.getPrincipalManager(root,
NamePathMapper.DEFAULT);
+ assertTrue(pMgr instanceof PrincipalManagerImpl);
+ }
+
+ @Test
+ public void testSingleGetProvider() throws Exception {
+ PrincipalConfiguration testConfig = new TestPrincipalConfiguration();
+ cpConfig.addConfiguration(testConfig);
+
+ PrincipalProvider pp = cpConfig.getPrincipalProvider(root,
NamePathMapper.DEFAULT);
+
+ assertFalse(pp instanceof CompositePrincipalProvider);
+ assertEquals(testConfig.getPrincipalProvider(root,
NamePathMapper.DEFAULT).getClass(), pp.getClass());
+ }
+
+ @Test
+ public void testMultipleGetPrincipalManager() {
+
cpConfig.addConfiguration(getSecurityProvider().getConfiguration(PrincipalConfiguration.class));
+ cpConfig.addConfiguration(new TestPrincipalConfiguration());
+
+ PrincipalManager pMgr = cpConfig.getPrincipalManager(root,
NamePathMapper.DEFAULT);
+ assertTrue(pMgr instanceof PrincipalManagerImpl);
+ }
+
+ @Test
+ public void testMultipleGetPrincipalProvider() throws Exception {
+
cpConfig.addConfiguration(getSecurityProvider().getConfiguration(PrincipalConfiguration.class));
+ cpConfig.addConfiguration(new TestPrincipalConfiguration());
+
+ PrincipalProvider pp = cpConfig.getPrincipalProvider(root,
NamePathMapper.DEFAULT);
+
+ assertTrue(pp instanceof CompositePrincipalProvider);
+ assertSize(2, (CompositePrincipalProvider) pp);
+ }
+
+ @Test
+ public void testWithEmptyPrincipalProvider() throws Exception {
+ cpConfig.addConfiguration(new TestEmptyConfiguration());
+ PrincipalProvider pp = cpConfig.getPrincipalProvider(root,
NamePathMapper.DEFAULT);
+ assertSame(EmptyPrincipalProvider.INSTANCE, pp);
+
+ cpConfig.addConfiguration(new TestPrincipalConfiguration());
+ pp = cpConfig.getPrincipalProvider(root, NamePathMapper.DEFAULT);
+ assertFalse(pp instanceof CompositePrincipalProvider);
+
+
cpConfig.addConfiguration(getSecurityProvider().getConfiguration(PrincipalConfiguration.class));
+ pp = cpConfig.getPrincipalProvider(root, NamePathMapper.DEFAULT);
+ assertTrue(pp instanceof CompositePrincipalProvider);
+ assertSize(2, (CompositePrincipalProvider) pp);
+
+ cpConfig.addConfiguration(new TestEmptyConfiguration());
+ pp = cpConfig.getPrincipalProvider(root, NamePathMapper.DEFAULT);
+ assertTrue(pp instanceof CompositePrincipalProvider);
+ assertSize(2, (CompositePrincipalProvider) pp);
+ }
+
+
+ private final class TestPrincipalConfiguration extends ConfigurationBase
implements PrincipalConfiguration {
+
+ @Nonnull
+ @Override
+ public PrincipalManager getPrincipalManager(Root root, NamePathMapper
namePathMapper) {
+ return new PrincipalManagerImpl(getPrincipalProvider(root,
namePathMapper));
+ }
+
+ @Nonnull
+ @Override
+ public PrincipalProvider getPrincipalProvider(Root root,
NamePathMapper namePathMapper) {
+ return new PrincipalProvider() {
+ @CheckForNull
+ @Override
+ public Principal getPrincipal(@Nonnull String principalName) {
+ return null;
+ }
+
+ @Nonnull
+ @Override
+ public Set<Group> getGroupMembership(@Nonnull Principal
principal) {
+ return ImmutableSet.of();
+ }
+
+ @Nonnull
+ @Override
+ public Set<? extends Principal> getPrincipals(@Nonnull String
userID) {
+ return ImmutableSet.of();
+ }
+
+ @Nonnull
+ @Override
+ public Iterator<? extends Principal> findPrincipals(@Nullable
String nameHint, int searchType) {
+ return Iterators.emptyIterator();
+ }
+
+ @Nonnull
+ @Override
+ public Iterator<? extends Principal> findPrincipals(int
searchType) {
+ return Iterators.emptyIterator();
+ }
+ };
+ }
+
+ @Nonnull
+ @Override
+ public String getName() {
+ return PrincipalConfiguration.NAME;
+ }
+ }
+
+ private final class TestEmptyConfiguration extends ConfigurationBase
implements PrincipalConfiguration {
+
+ @Nonnull
+ @Override
+ public PrincipalManager getPrincipalManager(Root root, NamePathMapper
namePathMapper) {
+ return new PrincipalManagerImpl(getPrincipalProvider(root,
namePathMapper));
+ }
+
+ @Nonnull
+ @Override
+ public PrincipalProvider getPrincipalProvider(Root root,
NamePathMapper namePathMapper) {
+ return EmptyPrincipalProvider.INSTANCE;
+ }
+
+ @Nonnull
+ @Override
+ public String getName() {
+ return PrincipalConfiguration.NAME;
+ }
+ }
+}
\ No newline at end of file
Added:
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=1748769&view=auto
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/CompositePrincipalProviderTest.java
(added)
+++
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/CompositePrincipalProviderTest.java
Thu Jun 16 18:38:05 2016
@@ -0,0 +1,49 @@
+/*
+ * 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 com.google.common.collect.ImmutableList;
+import org.apache.jackrabbit.oak.AbstractSecurityTest;
+import org.apache.jackrabbit.oak.namepath.NamePathMapper;
+import org.junit.Test;
+
+import static org.junit.Assert.assertNotSame;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+
+public class CompositePrincipalProviderTest extends AbstractSecurityTest{
+
+ @Test
+ public void testOfEmptyList() {
+ assertSame(EmptyPrincipalProvider.INSTANCE,
CompositePrincipalProvider.of(ImmutableList.<PrincipalProvider>of()));
+ }
+
+ @Test
+ public void testOfSingletonList() {
+ PrincipalProvider pp =
getSecurityProvider().getConfiguration(PrincipalConfiguration.class).getPrincipalProvider(root,
NamePathMapper.DEFAULT);
+ assertSame(pp, CompositePrincipalProvider.of(ImmutableList.of(pp)));
+ }
+
+ @Test
+ public void testOfList() {
+ PrincipalProvider pp =
getSecurityProvider().getConfiguration(PrincipalConfiguration.class).getPrincipalProvider(root,
NamePathMapper.DEFAULT);
+
+ PrincipalProvider of =
CompositePrincipalProvider.of(ImmutableList.of(pp, pp));
+ assertNotSame(pp, of);
+ assertTrue(of instanceof CompositePrincipalProvider);
+ }
+}
\ No newline at end of file
Copied:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/EmptyPrincipalProviderTest.java
(from r1748626,
jackrabbit/oak/trunk/oak-auth-external/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/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?p2=jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/EmptyPrincipalProviderTest.java&p1=jackrabbit/oak/trunk/oak-auth-external/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/EmptyPrincipalProviderTest.java&r1=1748626&r2=1748769&rev=1748769&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-auth-external/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/EmptyPrincipalProviderTest.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/EmptyPrincipalProviderTest.java
Thu Jun 16 18:38:05 2016
@@ -14,64 +14,53 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package
org.apache.jackrabbit.oak.spi.security.authentication.external.impl.principal;
+package org.apache.jackrabbit.oak.spi.security.principal;
import java.security.Principal;
-import javax.annotation.Nonnull;
import org.apache.jackrabbit.api.security.principal.PrincipalManager;
-import org.apache.jackrabbit.oak.namepath.NamePathMapper;
-import
org.apache.jackrabbit.oak.spi.security.authentication.external.impl.ExternalIdentityConstants;
-import org.apache.jackrabbit.oak.spi.security.principal.PrincipalImpl;
-import org.apache.jackrabbit.oak.spi.security.principal.PrincipalProvider;
+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 AbstractPrincipalTest {
+public class EmptyPrincipalProviderTest extends AbstractSecurityTest {
- private String externalPrincipalName;
+ private PrincipalProvider principalProvider =
EmptyPrincipalProvider.INSTANCE;
private Principal testPrincipal;
@Override
public void before() throws Exception {
super.before();
-
- assertFalse(principalProvider instanceof
ExternalGroupPrincipalProvider);
-
- externalPrincipalName =
getUserManager(root).getAuthorizable(USER_ID).getProperty(ExternalIdentityConstants.REP_EXTERNAL_PRINCIPAL_NAMES)[0].getString();
testPrincipal = getTestUser().getPrincipal();
}
- @Nonnull
- @Override
- PrincipalProvider createPrincipalProvider() {
- return new ExternalPrincipalConfiguration().getPrincipalProvider(root,
NamePathMapper.DEFAULT);
- }
-
@Test
public void testGetPrincipal() {
- assertNull(principalProvider.getPrincipal(externalPrincipalName));
+ assertNull(principalProvider.getPrincipal(EveryonePrincipal.NAME));
assertNull(principalProvider.getPrincipal(testPrincipal.getName()));
}
@Test
public void testGetGroupMembership() {
- assertTrue(principalProvider.getGroupMembership(new
PrincipalImpl(externalPrincipalName)).isEmpty());
+
assertTrue(principalProvider.getGroupMembership(EveryonePrincipal.getInstance()).isEmpty());
+ assertTrue(principalProvider.getGroupMembership(new
PrincipalImpl(EveryonePrincipal.NAME)).isEmpty());
assertTrue(principalProvider.getGroupMembership(testPrincipal).isEmpty());
}
@Test
public void testGetPrincipals() throws Exception {
- assertTrue(principalProvider.getPrincipals(USER_ID).isEmpty());
assertTrue(principalProvider.getPrincipals(getTestUser().getID()).isEmpty());
}
@Test
public void testFindPrincipalsByHint() {
- assertFalse(principalProvider.findPrincipals("a",
PrincipalManager.SEARCH_TYPE_ALL).hasNext());
+ assertFalse(principalProvider.findPrincipals(EveryonePrincipal.NAME,
PrincipalManager.SEARCH_TYPE_ALL).hasNext());
+
assertFalse(principalProvider.findPrincipals(EveryonePrincipal.NAME.substring(0,
1), PrincipalManager.SEARCH_TYPE_ALL).hasNext());
+ assertFalse(principalProvider.findPrincipals(testPrincipal.getName(),
PrincipalManager.SEARCH_TYPE_ALL).hasNext());
+
assertFalse(principalProvider.findPrincipals(testPrincipal.getName().substring(0,
2), PrincipalManager.SEARCH_TYPE_ALL).hasNext());
}
@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=1748769&r1=1748768&r2=1748769&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
Thu Jun 16 18:38:05 2016
@@ -37,6 +37,36 @@ public class EveryonePrincipalTest {
}
@Test
+ public void testIsMember() {
+ assertTrue(EveryonePrincipal.getInstance().isMember(new
PrincipalImpl("test")));
+ }
+
+ @Test
+ public void testIsMemberSelf() {
+ assertFalse(EveryonePrincipal.getInstance().isMember(everyone));
+ }
+
+ @Test
+ public void testAddMember() {
+ assertFalse(EveryonePrincipal.getInstance().addMember(new
PrincipalImpl("test")));
+ }
+
+ @Test
+ public void testAddMemberSelf() {
+ assertFalse(EveryonePrincipal.getInstance().addMember(everyone));
+ }
+
+ @Test(expected = UnsupportedOperationException.class)
+ public void testRemoveMember() {
+ EveryonePrincipal.getInstance().removeMember(everyone);
+ }
+
+ @Test(expected = UnsupportedOperationException.class)
+ public void testMembers() {
+ EveryonePrincipal.getInstance().members();
+ }
+
+ @Test
public void testEquals() {
assertEquals(everyone, EveryonePrincipal.getInstance());
}
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=1748769&r1=1748768&r2=1748769&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
Thu Jun 16 18:38:05 2016
@@ -25,6 +25,7 @@ import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
/**
* PrincipalImplTest...
@@ -39,6 +40,11 @@ public class PrincipalImplTest {
}
@Test
+ public void testEqualsSame() {
+ assertTrue(principal.equals(principal));
+ }
+
+ @Test
public void testEquals() {
List<Principal> principals = new ArrayList<Principal>();
principals.add(new PrincipalImpl("name"));