You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by an...@apache.org on 2017/03/02 13:45:12 UTC
svn commit: r1785136 - in
/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak:
security/principal/ security/user/ spi/security/
spi/security/authorization/permission/ spi/security/principal/
spi/security/user/ spi/security/user/actio...
Author: angela
Date: Thu Mar 2 13:45:12 2017
New Revision: 1785136
URL: http://svn.apache.org/viewvc?rev=1785136&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/security/principal/AbstractPrincipalProviderTest.java
- copied, changed from r1785084, jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/AbstractPrincipalProviderTest.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/util/UserUtilTest.java
Removed:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/AbstractPrincipalProviderTest.java
Modified:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/principal/PrincipalProviderImplTest.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserPrincipalProviderTest.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserPrincipalProviderWithCacheTest.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/AbstractCompositeConfigurationTest.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/PermissionsTest.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/user/AuthorizableTypeTest.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/DefaultAuthorizableActionProviderTest.java
Copied: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/principal/AbstractPrincipalProviderTest.java (from r1785084, jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/AbstractPrincipalProviderTest.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/principal/AbstractPrincipalProviderTest.java?p2=jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/principal/AbstractPrincipalProviderTest.java&p1=jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/AbstractPrincipalProviderTest.java&r1=1785084&r2=1785136&rev=1785136&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/AbstractPrincipalProviderTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/principal/AbstractPrincipalProviderTest.java Thu Mar 2 13:45:12 2017
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.jackrabbit.oak.spi.security.principal;
+package org.apache.jackrabbit.oak.security.principal;
import java.security.Principal;
import java.util.ArrayList;
@@ -32,6 +32,11 @@ import org.apache.jackrabbit.api.securit
import org.apache.jackrabbit.api.security.user.User;
import org.apache.jackrabbit.api.security.user.UserManager;
import org.apache.jackrabbit.oak.AbstractSecurityTest;
+import org.apache.jackrabbit.oak.spi.security.principal.AdminPrincipal;
+import org.apache.jackrabbit.oak.spi.security.principal.EveryonePrincipal;
+import org.apache.jackrabbit.oak.spi.security.principal.PrincipalImpl;
+import org.apache.jackrabbit.oak.spi.security.principal.PrincipalProvider;
+import org.apache.jackrabbit.oak.spi.security.principal.SystemUserPrincipal;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/principal/PrincipalProviderImplTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/principal/PrincipalProviderImplTest.java?rev=1785136&r1=1785135&r2=1785136&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/principal/PrincipalProviderImplTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/principal/PrincipalProviderImplTest.java Thu Mar 2 13:45:12 2017
@@ -25,7 +25,6 @@ import com.google.common.collect.Immutab
import org.apache.jackrabbit.api.security.principal.PrincipalManager;
import org.apache.jackrabbit.api.security.user.Group;
import org.apache.jackrabbit.api.security.user.UserManager;
-import org.apache.jackrabbit.oak.spi.security.principal.AbstractPrincipalProviderTest;
import org.apache.jackrabbit.oak.spi.security.principal.EveryonePrincipal;
import org.apache.jackrabbit.oak.spi.security.principal.PrincipalProvider;
import org.junit.Test;
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserPrincipalProviderTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserPrincipalProviderTest.java?rev=1785136&r1=1785135&r2=1785136&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserPrincipalProviderTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserPrincipalProviderTest.java Thu Mar 2 13:45:12 2017
@@ -25,7 +25,7 @@ import org.apache.jackrabbit.api.securit
import org.apache.jackrabbit.api.security.user.Group;
import org.apache.jackrabbit.api.security.user.User;
import org.apache.jackrabbit.api.security.user.UserManager;
-import org.apache.jackrabbit.oak.spi.security.principal.AbstractPrincipalProviderTest;
+import org.apache.jackrabbit.oak.security.principal.AbstractPrincipalProviderTest;
import org.apache.jackrabbit.oak.spi.security.principal.AdminPrincipal;
import org.apache.jackrabbit.oak.spi.security.principal.EveryonePrincipal;
import org.apache.jackrabbit.oak.spi.security.principal.PrincipalProvider;
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserPrincipalProviderWithCacheTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserPrincipalProviderWithCacheTest.java?rev=1785136&r1=1785135&r2=1785136&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserPrincipalProviderWithCacheTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserPrincipalProviderWithCacheTest.java Thu Mar 2 13:45:12 2017
@@ -46,7 +46,7 @@ import org.apache.jackrabbit.oak.plugins
import org.apache.jackrabbit.oak.spi.security.ConfigurationBase;
import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
import org.apache.jackrabbit.oak.spi.security.authentication.SystemSubject;
-import org.apache.jackrabbit.oak.spi.security.principal.AbstractPrincipalProviderTest;
+import org.apache.jackrabbit.oak.security.principal.AbstractPrincipalProviderTest;
import org.apache.jackrabbit.oak.spi.security.principal.EveryonePrincipal;
import org.apache.jackrabbit.oak.spi.security.principal.PrincipalImpl;
import org.apache.jackrabbit.oak.spi.security.principal.PrincipalProvider;
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/AbstractCompositeConfigurationTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/AbstractCompositeConfigurationTest.java?rev=1785136&r1=1785135&r2=1785136&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/AbstractCompositeConfigurationTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/AbstractCompositeConfigurationTest.java Thu Mar 2 13:45:12 2017
@@ -22,6 +22,10 @@ public abstract class AbstractCompositeC
protected CompositeConfiguration<T> compositeConfiguration;
+ public T getComposite() {
+ return (T) compositeConfiguration;
+ }
+
public List<T> getConfigurations() {
return compositeConfiguration.getConfigurations();
}
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/PermissionsTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/PermissionsTest.java?rev=1785136&r1=1785135&r2=1785136&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/PermissionsTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/PermissionsTest.java Thu Mar 2 13:45:12 2017
@@ -21,6 +21,7 @@ import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import javax.annotation.Nonnull;
import javax.jcr.Session;
import com.google.common.base.Joiner;
@@ -30,15 +31,21 @@ import com.google.common.collect.Immutab
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
import com.google.common.collect.Sets;
+import org.apache.jackrabbit.JcrConstants;
import org.apache.jackrabbit.api.JackrabbitSession;
-import org.apache.jackrabbit.oak.AbstractSecurityTest;
+import org.apache.jackrabbit.oak.api.Tree;
+import org.apache.jackrabbit.oak.commons.PathUtils;
+import org.apache.jackrabbit.oak.plugins.memory.PropertyStates;
import org.apache.jackrabbit.oak.plugins.name.NamespaceConstants;
import org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants;
import org.apache.jackrabbit.oak.plugins.tree.TreeLocation;
import org.apache.jackrabbit.oak.plugins.version.VersionConstants;
+import org.apache.jackrabbit.oak.spi.security.authorization.accesscontrol.AccessControlConstants;
import org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants;
import org.apache.jackrabbit.util.Text;
+import org.junit.Before;
import org.junit.Test;
+import org.mockito.Mockito;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
@@ -46,9 +53,10 @@ import static org.junit.Assert.assertNot
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
+import static org.mockito.Mockito.when;
-public class PermissionsTest extends AbstractSecurityTest {
+public class PermissionsTest {
private static final Map<Long, Set<Long>> TEST = ImmutableMap.<Long, Set<Long>>of(
Permissions.ADD_NODE|Permissions.ADD_PROPERTY,
@@ -61,6 +69,28 @@ public class PermissionsTest extends Abs
ImmutableSet.of(Permissions.NAMESPACE_MANAGEMENT,Permissions.WORKSPACE_MANAGEMENT,Permissions.NODE_TYPE_DEFINITION_MANAGEMENT,Permissions.PRIVILEGE_MANAGEMENT)
);
+ private Tree existingTree;
+
+ @Before
+ public void before() {
+ existingTree = Mockito.mock(Tree.class);
+ when(existingTree.exists()).thenReturn(true);
+ when(existingTree.getName()).thenReturn(PathUtils.ROOT_NAME);
+ when(existingTree.getPath()).thenReturn(PathUtils.ROOT_PATH);
+ when(existingTree.hasProperty(JcrConstants.JCR_PRIMARYTYPE)).thenReturn(true);
+ when(existingTree.getProperty(JcrConstants.JCR_PRIMARYTYPE)).thenReturn(PropertyStates.createProperty(JcrConstants.JCR_PRIMARYTYPE, "rep:root"));
+ }
+
+ private static TreeLocation createNonExistingTreeLocation(@Nonnull String path) {
+ String name = Text.getName(path);
+ Tree nonExistingTree = Mockito.mock(Tree.class);
+ when(nonExistingTree.exists()).thenReturn(false);
+ when(nonExistingTree.getName()).thenReturn(name);
+ when(nonExistingTree.getPath()).thenReturn(path);
+ when(nonExistingTree.getChild(name)).thenReturn(nonExistingTree);
+ return TreeLocation.create(nonExistingTree);
+ }
+
@Test
public void testGetNamesSinglePermission() {
for (long permission : Permissions.aggregates(Permissions.ALL)) {
@@ -304,7 +334,7 @@ public class PermissionsTest extends Abs
@Test
public void testGetPermissionsFromActions() {
- TreeLocation tl = TreeLocation.create(root.getTree("/"));
+ TreeLocation tl = TreeLocation.create(existingTree);
Map<String, Long> map = ImmutableMap.of(
Session.ACTION_READ, Permissions.READ_NODE,
Session.ACTION_READ + "," + Session.ACTION_REMOVE, Permissions.READ_NODE|Permissions.REMOVE_NODE
@@ -317,7 +347,7 @@ public class PermissionsTest extends Abs
@Test
public void testGetPermissionsFromPermissionNameActions() {
- TreeLocation tl = TreeLocation.create(root.getTree("/"));
+ TreeLocation tl = TreeLocation.create(existingTree);
long permissions = Permissions.NODE_TYPE_MANAGEMENT|Permissions.LOCK_MANAGEMENT|Permissions.VERSION_MANAGEMENT;
Set<String> names = Permissions.getNames(permissions);
String jcrActions = Text.implode(names.toArray(new String[names.size()]), ",");
@@ -326,7 +356,7 @@ public class PermissionsTest extends Abs
@Test
public void testGetPermissionsFromInvalidActions() {
- TreeLocation tl = TreeLocation.create(root.getTree("/"));
+ TreeLocation tl = TreeLocation.create(existingTree);
List<String> l = ImmutableList.of(
Session.ACTION_READ + ",invalid", "invalid", "invalid," + Session.ACTION_REMOVE
);
@@ -343,7 +373,7 @@ public class PermissionsTest extends Abs
@Test
public void testGetPermissionsFromJackrabbitActions() {
- TreeLocation tl = TreeLocation.create(root.getTree("/"));
+ TreeLocation tl = TreeLocation.create(existingTree);
Map<String, Long> map = new HashMap<String, Long>();
map.put(Session.ACTION_ADD_NODE, Permissions.ADD_NODE);
map.put(JackrabbitSession.ACTION_ADD_PROPERTY, Permissions.ADD_PROPERTY);
@@ -364,7 +394,7 @@ public class PermissionsTest extends Abs
@Test
public void testGetPermissionsOnAccessControlledNode() {
- TreeLocation tl = TreeLocation.create(root.getTree("/rep:policy"));
+ TreeLocation tl = createNonExistingTreeLocation(PathUtils.ROOT_PATH + AccessControlConstants.REP_POLICY);
Map<String, Long> map = new HashMap<String, Long>();
// read -> mapped to read-access-control
@@ -396,22 +426,22 @@ public class PermissionsTest extends Abs
@Test
public void testActionRead() {
- TreeLocation treeLocation = TreeLocation.create(root.getTree("/"));
+ TreeLocation treeLocation = TreeLocation.create(existingTree);
assertNull(treeLocation.getProperty());
assertEquals(Permissions.READ_NODE, Permissions.getPermissions(Session.ACTION_READ, treeLocation, false));
assertEquals(Permissions.READ_ACCESS_CONTROL, Permissions.getPermissions(Session.ACTION_READ, treeLocation, true));
- TreeLocation nonExistingTree = TreeLocation.create(root.getTree("/nonExisting"));
+ TreeLocation nonExistingTree = createNonExistingTreeLocation("/nonExisting");
assertNull(nonExistingTree.getProperty());
assertEquals(Permissions.READ, Permissions.getPermissions(Session.ACTION_READ, nonExistingTree, false));
assertEquals(Permissions.READ_ACCESS_CONTROL, Permissions.getPermissions(Session.ACTION_READ, nonExistingTree, true));
- TreeLocation nonExistingProp = TreeLocation.create(root, "/nonExisting");
+ TreeLocation nonExistingProp = createNonExistingTreeLocation("/nonExisting").getChild("nonExisting");
assertNull(nonExistingProp.getProperty());
assertEquals(Permissions.READ, Permissions.getPermissions(Session.ACTION_READ, nonExistingProp, false));
assertEquals(Permissions.READ_ACCESS_CONTROL, Permissions.getPermissions(Session.ACTION_READ, nonExistingProp, true));
- TreeLocation existingProp = TreeLocation.create(root, "/jcr:primaryType");
+ TreeLocation existingProp = treeLocation.getChild(JcrConstants.JCR_PRIMARYTYPE);
assertNotNull(existingProp.getProperty());
assertEquals(Permissions.READ_PROPERTY, Permissions.getPermissions(Session.ACTION_READ, existingProp, false));
assertEquals(Permissions.READ_ACCESS_CONTROL, Permissions.getPermissions(Session.ACTION_READ, existingProp, true));
@@ -419,22 +449,22 @@ public class PermissionsTest extends Abs
@Test
public void testActionSetProperty() {
- TreeLocation treeLocation = TreeLocation.create(root.getTree("/"));
+ TreeLocation treeLocation = TreeLocation.create(existingTree);
assertNull(treeLocation.getProperty());
assertEquals(Permissions.ADD_PROPERTY, Permissions.getPermissions(Session.ACTION_SET_PROPERTY, treeLocation, false));
assertEquals(Permissions.MODIFY_ACCESS_CONTROL, Permissions.getPermissions(Session.ACTION_SET_PROPERTY, treeLocation, true));
- TreeLocation nonExistingTree = TreeLocation.create(root.getTree("/nonExisting"));
+ TreeLocation nonExistingTree = createNonExistingTreeLocation("/nonExisting");
assertNull(nonExistingTree.getProperty());
assertEquals(Permissions.ADD_PROPERTY, Permissions.getPermissions(Session.ACTION_SET_PROPERTY, nonExistingTree, false));
assertEquals(Permissions.MODIFY_ACCESS_CONTROL, Permissions.getPermissions(Session.ACTION_SET_PROPERTY, nonExistingTree, true));
- TreeLocation nonExistingProp = TreeLocation.create(root, "/nonExisting");
+ TreeLocation nonExistingProp = createNonExistingTreeLocation("/nonExisting").getChild("nonExisting");
assertNull(nonExistingProp.getProperty());
assertEquals(Permissions.ADD_PROPERTY, Permissions.getPermissions(Session.ACTION_SET_PROPERTY, nonExistingProp, false));
assertEquals(Permissions.MODIFY_ACCESS_CONTROL, Permissions.getPermissions(Session.ACTION_SET_PROPERTY, nonExistingProp, true));
- TreeLocation existingProp = TreeLocation.create(root, "/jcr:primaryType");
+ TreeLocation existingProp = treeLocation.getChild(JcrConstants.JCR_PRIMARYTYPE);
assertNotNull(existingProp.getProperty());
assertEquals(Permissions.MODIFY_PROPERTY, Permissions.getPermissions(Session.ACTION_SET_PROPERTY, existingProp, false));
assertEquals(Permissions.MODIFY_ACCESS_CONTROL, Permissions.getPermissions(Session.ACTION_SET_PROPERTY, existingProp, true));
@@ -442,22 +472,22 @@ public class PermissionsTest extends Abs
@Test
public void testActionRemove() {
- TreeLocation treeLocation = TreeLocation.create(root.getTree("/"));
+ TreeLocation treeLocation = TreeLocation.create(existingTree);
assertNull(treeLocation.getProperty());
assertEquals(Permissions.REMOVE_NODE, Permissions.getPermissions(Session.ACTION_REMOVE, treeLocation, false));
assertEquals(Permissions.MODIFY_ACCESS_CONTROL, Permissions.getPermissions(Session.ACTION_REMOVE, treeLocation, true));
- TreeLocation nonExistingTree = TreeLocation.create(root.getTree("/nonExisting"));
+ TreeLocation nonExistingTree = createNonExistingTreeLocation("/nonExisting");
assertNull(nonExistingTree.getProperty());
assertEquals(Permissions.REMOVE, Permissions.getPermissions(Session.ACTION_REMOVE, nonExistingTree, false));
assertEquals(Permissions.MODIFY_ACCESS_CONTROL, Permissions.getPermissions(Session.ACTION_REMOVE, nonExistingTree, true));
- TreeLocation nonExistingProp = TreeLocation.create(root, "/nonExisting");
+ TreeLocation nonExistingProp = createNonExistingTreeLocation("/nonExisting").getChild("nonExisting");
assertNull(nonExistingProp.getProperty());
assertEquals(Permissions.REMOVE, Permissions.getPermissions(Session.ACTION_REMOVE, nonExistingProp, false));
assertEquals(Permissions.MODIFY_ACCESS_CONTROL, Permissions.getPermissions(Session.ACTION_REMOVE, nonExistingProp, true));
- TreeLocation existingProp = TreeLocation.create(root, "/jcr:primaryType");
+ TreeLocation existingProp = treeLocation.getChild(JcrConstants.JCR_PRIMARYTYPE);
assertNotNull(existingProp.getProperty());
assertEquals(Permissions.REMOVE_PROPERTY, Permissions.getPermissions(Session.ACTION_REMOVE, existingProp, false));
assertEquals(Permissions.MODIFY_ACCESS_CONTROL, Permissions.getPermissions(Session.ACTION_SET_PROPERTY, existingProp, true));
Modified: 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=1785136&r1=1785135&r2=1785136&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/CompositePrincipalConfigurationTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/CompositePrincipalConfigurationTest.java Thu Mar 2 13:45:12 2017
@@ -29,20 +29,32 @@ 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.AbstractCompositeConfigurationTest;
import org.apache.jackrabbit.oak.spi.security.ConfigurationBase;
+import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
+import org.junit.Before;
import org.junit.Test;
+import org.mockito.Mockito;
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 {
+public class CompositePrincipalConfigurationTest extends AbstractCompositeConfigurationTest<PrincipalConfiguration> {
- private CompositePrincipalConfiguration cpConfig = new CompositePrincipalConfiguration();
+ private final Root root = Mockito.mock(Root.class);
+
+ private PrincipalConfiguration principalConfigurationMock;
+
+ @Before
+ public void before() {
+ compositeConfiguration = new CompositePrincipalConfiguration();
+ principalConfigurationMock = Mockito.mock(PrincipalConfiguration.class);
+ Mockito.when(principalConfigurationMock.getParameters()).thenReturn(ConfigurationParameters.EMPTY);
+ }
private static void assertSize(int expected, CompositePrincipalProvider pp) throws Exception {
Field f = CompositePrincipalProvider.class.getDeclaredField("providers");
@@ -54,13 +66,13 @@ public class CompositePrincipalConfigura
@Test
public void testEmptyGetPrincipalManager() {
- PrincipalManager pMgr = cpConfig.getPrincipalManager(root, NamePathMapper.DEFAULT);
+ PrincipalManager pMgr = getComposite().getPrincipalManager(root, NamePathMapper.DEFAULT);
assertTrue(pMgr instanceof PrincipalManagerImpl);
}
@Test
public void testEmptyGetProvider() throws Exception {
- PrincipalProvider pp = cpConfig.getPrincipalProvider(root, NamePathMapper.DEFAULT);
+ PrincipalProvider pp = getComposite().getPrincipalProvider(root, NamePathMapper.DEFAULT);
assertFalse(pp instanceof CompositePrincipalProvider);
assertSame(EmptyPrincipalProvider.INSTANCE, pp);
}
@@ -68,18 +80,18 @@ public class CompositePrincipalConfigura
@Test
public void testSingleGetPrincipalManager() {
PrincipalConfiguration testConfig = new TestPrincipalConfiguration();
- cpConfig.addConfiguration(testConfig);
+ addConfiguration(testConfig);
- PrincipalManager pMgr = cpConfig.getPrincipalManager(root, NamePathMapper.DEFAULT);
+ PrincipalManager pMgr = getComposite().getPrincipalManager(root, NamePathMapper.DEFAULT);
assertTrue(pMgr instanceof PrincipalManagerImpl);
}
@Test
public void testSingleGetProvider() throws Exception {
PrincipalConfiguration testConfig = new TestPrincipalConfiguration();
- cpConfig.addConfiguration(testConfig);
+ addConfiguration(testConfig);
- PrincipalProvider pp = cpConfig.getPrincipalProvider(root, NamePathMapper.DEFAULT);
+ PrincipalProvider pp = getComposite().getPrincipalProvider(root, NamePathMapper.DEFAULT);
assertFalse(pp instanceof CompositePrincipalProvider);
assertEquals(testConfig.getPrincipalProvider(root, NamePathMapper.DEFAULT).getClass(), pp.getClass());
@@ -87,19 +99,19 @@ public class CompositePrincipalConfigura
@Test
public void testMultipleGetPrincipalManager() {
- cpConfig.addConfiguration(getSecurityProvider().getConfiguration(PrincipalConfiguration.class));
- cpConfig.addConfiguration(new TestPrincipalConfiguration());
+ addConfiguration(principalConfigurationMock);
+ addConfiguration(new TestPrincipalConfiguration());
- PrincipalManager pMgr = cpConfig.getPrincipalManager(root, NamePathMapper.DEFAULT);
+ PrincipalManager pMgr = getComposite().getPrincipalManager(root, NamePathMapper.DEFAULT);
assertTrue(pMgr instanceof PrincipalManagerImpl);
}
@Test
public void testMultipleGetPrincipalProvider() throws Exception {
- cpConfig.addConfiguration(getSecurityProvider().getConfiguration(PrincipalConfiguration.class));
- cpConfig.addConfiguration(new TestPrincipalConfiguration());
+ addConfiguration(principalConfigurationMock);
+ addConfiguration(new TestPrincipalConfiguration());
- PrincipalProvider pp = cpConfig.getPrincipalProvider(root, NamePathMapper.DEFAULT);
+ PrincipalProvider pp = getComposite().getPrincipalProvider(root, NamePathMapper.DEFAULT);
assertTrue(pp instanceof CompositePrincipalProvider);
assertSize(2, (CompositePrincipalProvider) pp);
@@ -107,21 +119,21 @@ public class CompositePrincipalConfigura
@Test
public void testWithEmptyPrincipalProvider() throws Exception {
- cpConfig.addConfiguration(new TestEmptyConfiguration());
- PrincipalProvider pp = cpConfig.getPrincipalProvider(root, NamePathMapper.DEFAULT);
+ addConfiguration(new TestEmptyConfiguration());
+ PrincipalProvider pp = getComposite().getPrincipalProvider(root, NamePathMapper.DEFAULT);
assertSame(EmptyPrincipalProvider.INSTANCE, pp);
- cpConfig.addConfiguration(new TestPrincipalConfiguration());
- pp = cpConfig.getPrincipalProvider(root, NamePathMapper.DEFAULT);
+ addConfiguration(new TestPrincipalConfiguration());
+ pp = getComposite().getPrincipalProvider(root, NamePathMapper.DEFAULT);
assertFalse(pp instanceof CompositePrincipalProvider);
- cpConfig.addConfiguration(getSecurityProvider().getConfiguration(PrincipalConfiguration.class));
- pp = cpConfig.getPrincipalProvider(root, NamePathMapper.DEFAULT);
+ addConfiguration(principalConfigurationMock);
+ pp = getComposite().getPrincipalProvider(root, NamePathMapper.DEFAULT);
assertTrue(pp instanceof CompositePrincipalProvider);
assertSize(2, (CompositePrincipalProvider) pp);
- cpConfig.addConfiguration(new TestEmptyConfiguration());
- pp = cpConfig.getPrincipalProvider(root, NamePathMapper.DEFAULT);
+ addConfiguration(new TestEmptyConfiguration());
+ pp = getComposite().getPrincipalProvider(root, NamePathMapper.DEFAULT);
assertTrue(pp instanceof CompositePrincipalProvider);
assertSize(2, (CompositePrincipalProvider) pp);
}
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/AuthorizableTypeTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/AuthorizableTypeTest.java?rev=1785136&r1=1785135&r2=1785136&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/AuthorizableTypeTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/AuthorizableTypeTest.java Thu Mar 2 13:45:12 2017
@@ -16,42 +16,31 @@
*/
package org.apache.jackrabbit.oak.spi.security.user;
-import java.util.UUID;
-
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.api.security.user.UserManager;
-import org.apache.jackrabbit.oak.AbstractSecurityTest;
+import org.junit.Before;
import org.junit.Test;
+import org.mockito.Mockito;
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 AuthorizableTypeTest extends AbstractSecurityTest {
+public class AuthorizableTypeTest {
+ private User user;
private Group gr;
- @Override
- public void before() throws Exception {
- super.before();
-
- gr = getUserManager(root).createGroup("gr" + UUID.randomUUID().toString());
- root.commit();
- }
-
- @Override
- public void after() throws Exception {
- try {
- if (gr != null) {
- gr.remove();
- root.commit();
- }
- } finally {
- super.after();
- }
+ @Before
+ public void before() {
+ user = Mockito.mock(User.class);
+ Mockito.when(user.isGroup()).thenReturn(false);
+
+ gr = Mockito.mock(Group.class);
+ Mockito.when(gr.isGroup()).thenReturn(true);
}
@Test
@@ -69,14 +58,14 @@ public class AuthorizableTypeTest extend
@Test
public void testIsTypeUser() throws Exception {
assertFalse(AuthorizableType.USER.isType(null));
- assertTrue(AuthorizableType.USER.isType(getTestUser()));
+ assertTrue(AuthorizableType.USER.isType(user));
assertFalse(AuthorizableType.USER.isType(gr));
}
@Test
public void testIsTypeGroup() throws Exception {
assertFalse(AuthorizableType.GROUP.isType(null));
- assertFalse(AuthorizableType.GROUP.isType(getTestUser()));
+ assertFalse(AuthorizableType.GROUP.isType(user));
assertTrue(AuthorizableType.GROUP.isType(gr));
}
@@ -84,7 +73,7 @@ public class AuthorizableTypeTest extend
@Test
public void testIsTypeAuthorizable() throws Exception {
assertFalse(AuthorizableType.AUTHORIZABLE.isType(null));
- assertTrue(AuthorizableType.AUTHORIZABLE.isType(getTestUser()));
+ assertTrue(AuthorizableType.AUTHORIZABLE.isType(user));
assertTrue(AuthorizableType.AUTHORIZABLE.isType(gr));
}
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/DefaultAuthorizableActionProviderTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/DefaultAuthorizableActionProviderTest.java?rev=1785136&r1=1785135&r2=1785136&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/DefaultAuthorizableActionProviderTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/DefaultAuthorizableActionProviderTest.java Thu Mar 2 13:45:12 2017
@@ -20,15 +20,28 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import org.apache.jackrabbit.oak.AbstractSecurityTest;
import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
+import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
+import org.apache.jackrabbit.oak.spi.security.authorization.AuthorizationConfiguration;
import org.junit.Test;
+import org.mockito.Mockito;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.when;
-public class DefaultAuthorizableActionProviderTest extends AbstractSecurityTest {
+public class DefaultAuthorizableActionProviderTest {
+
+ private SecurityProvider getSecurityProvider() {
+ AuthorizationConfiguration ac = Mockito.mock(AuthorizationConfiguration.class);
+ when(ac.getParameters()).thenReturn(ConfigurationParameters.EMPTY);
+
+ SecurityProvider sp = Mockito.mock(SecurityProvider.class);
+ when(sp.getConfiguration(AuthorizationConfiguration.class)).thenReturn(ac);
+
+ return sp;
+ }
@Test
public void testNoConfig() {
Added: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/util/UserUtilTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/util/UserUtilTest.java?rev=1785136&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/util/UserUtilTest.java (added)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/util/UserUtilTest.java Thu Mar 2 13:45:12 2017
@@ -0,0 +1,392 @@
+/*
+ * 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.user.util;
+
+import java.util.List;
+import java.util.Map;
+import javax.annotation.CheckForNull;
+import javax.annotation.Nonnull;
+
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
+import org.apache.jackrabbit.JcrConstants;
+import org.apache.jackrabbit.api.security.user.Authorizable;
+import org.apache.jackrabbit.api.security.user.AuthorizableTypeException;
+import org.apache.jackrabbit.api.security.user.Group;
+import org.apache.jackrabbit.api.security.user.User;
+import org.apache.jackrabbit.oak.api.Tree;
+import org.apache.jackrabbit.oak.api.Type;
+import org.apache.jackrabbit.oak.plugins.memory.PropertyStates;
+import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
+import org.apache.jackrabbit.oak.spi.security.user.AuthorizableType;
+import org.apache.jackrabbit.oak.spi.security.user.UserConstants;
+import org.apache.jackrabbit.oak.spi.xml.ImportBehavior;
+import org.apache.jackrabbit.oak.spi.xml.ProtectedItemImporter;
+import org.junit.Test;
+import org.mockito.Mockito;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.when;
+
+public class UserUtilTest {
+
+ @Nonnull
+ private static Tree createTree(@CheckForNull String ntName) {
+ return createTree(ntName, null, null);
+ }
+
+ @Nonnull
+ private static Tree createTree(@CheckForNull String ntName, @CheckForNull String id) {
+ return createTree(ntName, id, null);
+ }
+
+ @Nonnull
+ private static Tree createTree(@CheckForNull String ntName, @CheckForNull String id, @CheckForNull String nodeName) {
+ Tree t = Mockito.mock(Tree.class);
+ if (ntName != null) {
+ when(t.getProperty(JcrConstants.JCR_PRIMARYTYPE)).thenReturn(PropertyStates.createProperty(JcrConstants.JCR_PRIMARYTYPE, ntName, Type.NAME));
+ }
+ if (id != null) {
+ when(t.getProperty(UserConstants.REP_AUTHORIZABLE_ID)).thenReturn(PropertyStates.createProperty(UserConstants.REP_AUTHORIZABLE_ID, id, Type.STRING));
+ }
+ if (nodeName != null) {
+ when(t.getName()).thenReturn(nodeName);
+ }
+ return t;
+ }
+
+ @Test
+ public void testIsAdmin() {
+ String altAdminId = "test";
+ ConfigurationParameters config = ConfigurationParameters.of(UserConstants.PARAM_ADMIN_ID, altAdminId);
+
+ assertTrue(UserUtil.isAdmin(ConfigurationParameters.EMPTY, UserConstants.DEFAULT_ADMIN_ID));
+ assertFalse(UserUtil.isAdmin(ConfigurationParameters.EMPTY, altAdminId));
+
+ assertFalse(UserUtil.isAdmin(config, UserConstants.DEFAULT_ADMIN_ID));
+ assertTrue(UserUtil.isAdmin(config, altAdminId));
+ }
+
+ @Test
+ public void testGetAdminId() {
+ String altAdminId = "test";
+ ConfigurationParameters config = ConfigurationParameters.of(UserConstants.PARAM_ADMIN_ID, altAdminId);
+
+ assertEquals(UserConstants.DEFAULT_ADMIN_ID, UserUtil.getAdminId(ConfigurationParameters.EMPTY));
+ assertEquals(altAdminId, UserUtil.getAdminId(config));
+ }
+
+ @Test
+ public void testGetAnonymousId() {
+ String altAnonymousId = "test";
+ ConfigurationParameters config = ConfigurationParameters.of(UserConstants.PARAM_ANONYMOUS_ID, altAnonymousId);
+
+ assertEquals(UserConstants.DEFAULT_ANONYMOUS_ID, UserUtil.getAnonymousId(ConfigurationParameters.EMPTY));
+ assertEquals(altAnonymousId, UserUtil.getAnonymousId(config));
+ }
+
+ @Test
+ public void testIsTypeNullTree() {
+ assertFalse(UserUtil.isType(null, AuthorizableType.GROUP));
+ assertFalse(UserUtil.isType(null, AuthorizableType.USER));
+ assertFalse(UserUtil.isType(null, AuthorizableType.AUTHORIZABLE));
+ }
+
+ @Test
+ public void testIsTypeGroupFromTree() {
+ Map<String, Boolean> test = ImmutableMap.of(
+ UserConstants.NT_REP_GROUP, true,
+ UserConstants.NT_REP_USER, false,
+ UserConstants.NT_REP_SYSTEM_USER, false,
+ UserConstants.NT_REP_AUTHORIZABLE, false,
+ JcrConstants.NT_FILE, false
+ );
+
+ for (String key : test.keySet()) {
+ assertEquals(test.get(key), UserUtil.isType(createTree(key), AuthorizableType.GROUP));
+ }
+ }
+
+ @Test
+ public void testIsTypeUserFromTree() {
+ Map<String, Boolean> test = ImmutableMap.of(
+ UserConstants.NT_REP_GROUP, false,
+ UserConstants.NT_REP_USER, true,
+ UserConstants.NT_REP_SYSTEM_USER, true,
+ UserConstants.NT_REP_AUTHORIZABLE, false,
+ JcrConstants.NT_FILE, false
+ );
+
+ for (String ntName : test.keySet()) {
+ boolean expected = test.get(ntName);
+ assertEquals(ntName, expected, UserUtil.isType(createTree(ntName), AuthorizableType.USER));
+ }
+ }
+
+ @Test
+ public void testIsTypeAuthorizableFromTree() {
+ Map<String, Boolean> test = ImmutableMap.of(
+ UserConstants.NT_REP_GROUP, true,
+ UserConstants.NT_REP_USER, true,
+ UserConstants.NT_REP_SYSTEM_USER, true,
+ UserConstants.NT_REP_AUTHORIZABLE, false,
+ JcrConstants.NT_FILE, false
+ );
+
+ for (String ntName : test.keySet()) {
+ boolean expected = test.get(ntName);
+ assertEquals(ntName, expected, UserUtil.isType(createTree(ntName), AuthorizableType.AUTHORIZABLE));
+ }
+ }
+
+ @Test
+ public void testGetTypeFromTree() {
+ Map<String, AuthorizableType> test = ImmutableMap.of(
+ UserConstants.NT_REP_GROUP, AuthorizableType.GROUP,
+ UserConstants.NT_REP_USER, AuthorizableType.USER,
+ UserConstants.NT_REP_SYSTEM_USER, AuthorizableType.USER
+ );
+
+ for (String ntName : test.keySet()) {
+ AuthorizableType expected = test.get(ntName);
+ assertEquals(ntName, expected, UserUtil.getType(createTree(ntName)));
+ }
+ }
+
+ @Test
+ public void testGetTypeFromTree2() {
+ List<String> test = ImmutableList.of(
+ UserConstants.NT_REP_AUTHORIZABLE,
+ JcrConstants.NT_FILE
+ );
+
+ for (String ntName : test) {
+ assertNull(UserUtil.getType(createTree(ntName)));
+ }
+ }
+
+ @Test
+ public void testGetTypeFromNt() {
+ assertEquals(AuthorizableType.GROUP, UserUtil.getType(UserConstants.NT_REP_GROUP));
+ assertEquals(AuthorizableType.USER, UserUtil.getType(UserConstants.NT_REP_USER));
+ assertEquals(AuthorizableType.USER, UserUtil.getType(UserConstants.NT_REP_SYSTEM_USER));
+ }
+
+ @Test
+ public void testGetTypeFromNtReturnsNull() {
+ // abstract primary type 'rep:Authorizable'
+ assertNull(UserUtil.getType(UserConstants.NT_REP_AUTHORIZABLE));
+
+ // another node type name
+ assertNull(UserUtil.getType(JcrConstants.NT_FILE));
+
+ // null or empty name
+ assertNull(UserUtil.getType((String) null));
+ assertNull(UserUtil.getType(""));
+ }
+
+ @Test
+ public void testIsSystemUserNullTree() {
+ assertFalse(UserUtil.isSystemUser(null));
+ }
+
+ @Test
+ public void testIsSystemUser() {
+ Map<String, Boolean> test = ImmutableMap.of(
+ UserConstants.NT_REP_GROUP, false,
+ UserConstants.NT_REP_USER, false,
+ UserConstants.NT_REP_SYSTEM_USER, true,
+ UserConstants.NT_REP_AUTHORIZABLE, false,
+ JcrConstants.NT_FILE, false
+ );
+
+ for (String ntName : test.keySet()) {
+ boolean expected = test.get(ntName);
+ assertEquals(ntName, expected, UserUtil.isSystemUser(createTree(ntName)));
+ }
+ }
+
+ @Test
+ public void testGetAuthorizableRootPathDefault() {
+ assertEquals(UserConstants.DEFAULT_GROUP_PATH, UserUtil.getAuthorizableRootPath(ConfigurationParameters.EMPTY, AuthorizableType.GROUP));
+ assertEquals(UserConstants.DEFAULT_USER_PATH, UserUtil.getAuthorizableRootPath(ConfigurationParameters.EMPTY, AuthorizableType.USER));
+ assertEquals("/rep:security/rep:authorizables", UserUtil.getAuthorizableRootPath(ConfigurationParameters.EMPTY, AuthorizableType.AUTHORIZABLE));
+ }
+
+ @Test
+ public void testGetAuthorizableRootPath() {
+ ConfigurationParameters config = ConfigurationParameters.of(
+ UserConstants.PARAM_GROUP_PATH, "/groups",
+ UserConstants.PARAM_USER_PATH, "/users");
+
+ assertEquals("/groups", UserUtil.getAuthorizableRootPath(config, AuthorizableType.GROUP));
+ assertEquals("/users", UserUtil.getAuthorizableRootPath(config, AuthorizableType.USER));
+ assertEquals("/", UserUtil.getAuthorizableRootPath(config, AuthorizableType.AUTHORIZABLE));
+ }
+
+ @Test
+ public void testGetAuthorizableRootPathNullType() {
+ assertNull(UserUtil.getAuthorizableRootPath(ConfigurationParameters.EMPTY, null));
+ }
+
+
+ @Test(expected = NullPointerException.class)
+ public void testGetAuthorizableIdNullTree() {
+ UserUtil.getAuthorizableId(null);
+ }
+
+ @Test
+ public void testGetAuthorizableId() {
+ List<String> test = ImmutableList.of(UserConstants.NT_REP_GROUP, UserConstants.NT_REP_SYSTEM_USER, UserConstants.NT_REP_USER);
+ for (String ntName : test) {
+ assertEquals("id", UserUtil.getAuthorizableId(createTree(ntName, "id")));
+ }
+ }
+
+ @Test
+ public void testGetAuthorizableIdFallback() {
+ List<String> test = ImmutableList.of(UserConstants.NT_REP_GROUP, UserConstants.NT_REP_SYSTEM_USER, UserConstants.NT_REP_USER);
+ for (String ntName : test) {
+ assertEquals("nName", UserUtil.getAuthorizableId(createTree(ntName, null, "nName")));
+ }
+ }
+
+ @Test
+ public void testGetAuthorizableIdNoAuthorizableType() {
+ List<String> test = ImmutableList.of(UserConstants.NT_REP_AUTHORIZABLE, JcrConstants.NT_UNSTRUCTURED);
+ for (String ntName : test) {
+ assertNull(UserUtil.getAuthorizableId(createTree(ntName, "id")));
+ }
+ }
+
+ @Test
+ public void testGetAuthorizableIdWithType() {
+ Map<AuthorizableType, String[]> test = ImmutableMap.<AuthorizableType,String[]>builder().
+ put(AuthorizableType.USER, new String[] {UserConstants.NT_REP_USER, UserConstants.NT_REP_SYSTEM_USER}).
+ put(AuthorizableType.AUTHORIZABLE, new String[] {UserConstants.NT_REP_USER, UserConstants.NT_REP_SYSTEM_USER, UserConstants.NT_REP_GROUP}).
+ put(AuthorizableType.GROUP, new String[] {UserConstants.NT_REP_GROUP}).build();
+
+ for (AuthorizableType type : test.keySet()) {
+ for (String ntName : test.get(type)) {
+ assertEquals("id", UserUtil.getAuthorizableId(createTree(ntName, "id"), type));
+ }
+ }
+ }
+
+ @Test
+ public void testGetAuthorizableIdWithTypeFallback() {
+ Map<AuthorizableType, String[]> test = ImmutableMap.<AuthorizableType,String[]>builder().
+ put(AuthorizableType.USER, new String[]{UserConstants.NT_REP_USER, UserConstants.NT_REP_SYSTEM_USER}).
+ put(AuthorizableType.AUTHORIZABLE, new String[]{UserConstants.NT_REP_USER, UserConstants.NT_REP_SYSTEM_USER, UserConstants.NT_REP_GROUP}).
+ put(AuthorizableType.GROUP, new String[]{UserConstants.NT_REP_GROUP}).build();
+
+ for (AuthorizableType type : test.keySet()) {
+ for (String ntName : test.get(type)) {
+ assertEquals("nodeName", UserUtil.getAuthorizableId(createTree(ntName, null, "nodeName"), type));
+ }
+ }
+ }
+
+ @Test(expected=IllegalArgumentException.class)
+ public void testGetAuthorizableIdTypeNotGroup() {
+ UserUtil.getAuthorizableId(createTree(UserConstants.NT_REP_USER, "id"), AuthorizableType.GROUP);
+ }
+
+ @Test(expected=IllegalArgumentException.class)
+ public void testGetAuthorizableIdWithTypeNotGrou() {
+ UserUtil.getAuthorizableId(createTree(UserConstants.NT_REP_SYSTEM_USER, "id"), AuthorizableType.GROUP);
+ }
+
+ @Test(expected=IllegalArgumentException.class)
+ public void testGetAuthorizableIdWithTypeNotUser() {
+ UserUtil.getAuthorizableId(createTree(UserConstants.NT_REP_GROUP, "id"), AuthorizableType.USER);
+ }
+
+ @Test(expected=IllegalArgumentException.class)
+ public void testGetAuthorizableIdTypeNotUser() {
+ UserUtil.getAuthorizableId(createTree(JcrConstants.NT_UNSTRUCTURED, "id"), AuthorizableType.USER);
+ }
+
+ @Test
+ public void testCastNullAuthorizable() throws Exception {
+ assertNull(UserUtil.castAuthorizable(null, null));
+ assertNull(UserUtil.castAuthorizable(null, User.class));
+ assertNull(UserUtil.castAuthorizable(null, Group.class));
+ }
+
+ @Test(expected = AuthorizableTypeException.class)
+ public void testCastNullClass() throws Exception {
+ UserUtil.castAuthorizable(Mockito.mock(User.class), null);
+ }
+
+ @Test(expected = AuthorizableTypeException.class)
+ public void testCastUserToGroup() throws Exception {
+ UserUtil.castAuthorizable(Mockito.mock(User.class), Group.class);
+ }
+
+ @Test(expected = AuthorizableTypeException.class)
+ public void testCastGroupToUser() throws Exception {
+ UserUtil.castAuthorizable(Mockito.mock(Group.class), User.class);
+ }
+
+ @Test(expected = AuthorizableTypeException.class)
+ public void testCastAuthorizableToUser() throws Exception {
+ UserUtil.castAuthorizable(Mockito.mock(Authorizable.class), User.class);
+ }
+
+ @Test(expected = AuthorizableTypeException.class)
+ public void testCastAuthorizableToGroup() throws Exception {
+ UserUtil.castAuthorizable(Mockito.mock(Authorizable.class), Group.class);
+ }
+
+ @Test
+ public void testCastUserToUser() throws Exception {
+ UserUtil.castAuthorizable(Mockito.mock(User.class), User.class);
+ }
+
+ @Test
+ public void testCastUserToAuthorizable() throws Exception {
+ UserUtil.castAuthorizable(Mockito.mock(User.class), Authorizable.class);
+ }
+
+ @Test
+ public void testCastGroupToGroup() throws Exception {
+ UserUtil.castAuthorizable(Mockito.mock(Group.class), Group.class);
+ }
+
+ @Test
+ public void testCastGroupToAuthorizable() throws Exception {
+ UserUtil.castAuthorizable(Mockito.mock(Group.class), Authorizable.class);
+ }
+
+ @Test
+ public void testGetImportBehavior() {
+ Map<ConfigurationParameters, Integer> testMap = ImmutableMap.of(
+ ConfigurationParameters.EMPTY, ImportBehavior.IGNORE,
+ ConfigurationParameters.of(ProtectedItemImporter.PARAM_IMPORT_BEHAVIOR, "anyString"), ImportBehavior.ABORT,
+ ConfigurationParameters.of(ProtectedItemImporter.PARAM_IMPORT_BEHAVIOR, ImportBehavior.BESTEFFORT), ImportBehavior.ABORT,
+ ConfigurationParameters.of(ProtectedItemImporter.PARAM_IMPORT_BEHAVIOR, ImportBehavior.NAME_BESTEFFORT), ImportBehavior.BESTEFFORT
+ );
+
+ for (Map.Entry<ConfigurationParameters, Integer> entry : testMap.entrySet()) {
+ assertEquals(entry.getValue().intValue(), UserUtil.getImportBehavior(entry.getKey()));
+ }
+ }
+}
\ No newline at end of file