Author: angela
Date: Fri Mar 22 16:32:58 2019
New Revision: 1856068
URL: http://svn.apache.org/viewvc?rev=1856068&view=rev
Log:
OAK-8036 : Improve test in oak-security-spi (wip)
Added:
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/token/TokenConstantsTest.java
(with props)
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/PermissionConstantsTest.java
(with props)
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/PrincipalProviderTest.java
(with props)
Modified:
jackrabbit/oak/trunk/oak-security-spi/pom.xml
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/token/CompositeTokenProviderTest.java
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/AllTreePermissionTest.java
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/EmptyPermissionProviderTest.java
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/EmptyTreePermissionTest.java
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/NoRecurseTreePermissionTest.java
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/PermissionsTest.java
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/EmptyPatternTest.java
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/CompositePrincipalConfigurationTest.java
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/CompositePrincipalProviderTest.java
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/EmptyPrincipalProviderTest.java
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/EveryonePrincipalTest.java
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/GroupPrincipalsTest.java
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/PrincipalManagerImplTest.java
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/AccessControlActionTest.java
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/PasswordValidationActionTest.java
Modified: jackrabbit/oak/trunk/oak-security-spi/pom.xml
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/pom.xml?rev=1856068&r1=1856067&r2=1856068&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-security-spi/pom.xml (original)
+++ jackrabbit/oak/trunk/oak-security-spi/pom.xml Fri Mar 22 16:32:58 2019
@@ -34,7 +34,7 @@
<properties>
<!-- enable execution of jacoco and set minimal line coverage -->
<skip.coverage>false</skip.coverage>
- <minimum.coverage>0.92</minimum.coverage>
+ <minimum.coverage>0.94</minimum.coverage>
</properties>
<build>
Modified:
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/token/CompositeTokenProviderTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/token/CompositeTokenProviderTest.java?rev=1856068&r1=1856067&r2=1856068&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/token/CompositeTokenProviderTest.java
(original)
+++
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/token/CompositeTokenProviderTest.java
Fri Mar 22 16:32:58 2019
@@ -33,20 +33,23 @@ import static org.junit.Assert.assertFal
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
public class CompositeTokenProviderTest {
private static final String TOKEN = "t";
+ private static final String USERID = "userId";
private TokenInfo info;
private TokenProvider composite;
@Before
public void before() {
- info = Mockito.mock(TokenInfo.class);
- Mockito.when(info.getToken()).thenReturn(TOKEN);
+ info = mock(TokenInfo.class);
+ when(info.getToken()).thenReturn(TOKEN);
- TokenProvider tp1 = Mockito.mock(TokenProvider.class);
+ TokenProvider tp1 = mock(TokenProvider.class);
TokenProvider tp2 = new TestTokenProvider();
composite = CompositeTokenProvider.newInstance(tp1, tp2);
@@ -64,7 +67,7 @@ public class CompositeTokenProviderTest
assertFalse(tp.doCreateToken(creds));
assertNull(tp.createToken(null, null));
- assertNull(tp.createToken("userID", ImmutableMap.<String,
String>of()));
+ assertNull(tp.createToken(USERID, ImmutableMap.<String, String>of()));
assertNull(tp.createToken(null));
assertNull(tp.createToken(creds));
@@ -75,7 +78,7 @@ public class CompositeTokenProviderTest
@Test
public void testSingleProvider() {
- TokenProvider base = Mockito.mock(TokenProvider.class);
+ TokenProvider base = mock(TokenProvider.class);
TokenProvider tp = CompositeTokenProvider.newInstance(base);
@@ -90,29 +93,44 @@ public class CompositeTokenProviderTest
@Test
public void testCreateCompositeProviderFromList() {
- TokenProvider base = Mockito.mock(TokenProvider.class);
+ TokenProvider base = mock(TokenProvider.class);
TokenProvider tp =
CompositeTokenProvider.newInstance(ImmutableList.of(base, base));
assertTrue(tp instanceof CompositeTokenProvider);
}
@Test
public void testDoCreateToken() {
- assertTrue(composite.doCreateToken(new SimpleCredentials("id", new
char[0])));
+ assertTrue(composite.doCreateToken(new SimpleCredentials(USERID, new
char[0])));
assertFalse(composite.doCreateToken(new GuestCredentials()));
assertFalse(composite.doCreateToken(new Credentials() {}));
}
@Test
public void testCreateTokenFromCredentials() {
- assertSame(info, composite.createToken(new SimpleCredentials("id", new
char[0])));
+ assertSame(info, composite.createToken(new SimpleCredentials(USERID,
new char[0])));
assertNull(composite.createToken(new GuestCredentials()));
assertNull(composite.createToken(new Credentials() {
}));
}
- @Test(expected = UnsupportedOperationException.class)
+ @Test
public void testCreateTokenFromId() {
- composite.createToken("id", ImmutableMap.<String, Object>of());
+ assertSame(info, composite.createToken(USERID, ImmutableMap.of()));
+ }
+
+ @Test
+ public void testCreateTokenFromUnknownId() {
+ assertNull(composite.createToken("unknown", ImmutableMap.of()));
+ }
+
+ @Test
+ public void testCreateTokenFromIdFirstWins() {
+ TokenInfo ti = mock(TokenInfo.class);
+ TokenProvider tp1 = when(mock(TokenProvider.class).createToken(USERID,
ImmutableMap.of())).thenReturn(ti).getMock();
+ TokenProvider tp2 = new TestTokenProvider();
+
+ TokenProvider ctp = CompositeTokenProvider.newInstance(tp1, tp2);
+ assertSame(ti, ctp.createToken(USERID, ImmutableMap.of()));
}
@Test
@@ -140,8 +158,11 @@ public class CompositeTokenProviderTest
@Nullable
@Override
public TokenInfo createToken(@NotNull String userId, @NotNull
Map<String, ?> attributes) {
- throw new UnsupportedOperationException();
-
+ if (USERID.equals(userId)) {
+ return info;
+ } else {
+ return null;
+ }
}
@Nullable
Added:
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/token/TokenConstantsTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/token/TokenConstantsTest.java?rev=1856068&view=auto
==============================================================================
---
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/token/TokenConstantsTest.java
(added)
+++
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/token/TokenConstantsTest.java
Fri Mar 22 16:32:58 2019
@@ -0,0 +1,38 @@
+/*
+ * 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.authentication.token;
+
+import com.google.common.collect.ImmutableSet;
+import org.junit.Test;
+
+import static
org.apache.jackrabbit.oak.spi.security.authentication.token.TokenConstants.TOKEN_ATTRIBUTE;
+import static
org.apache.jackrabbit.oak.spi.security.authentication.token.TokenConstants.TOKEN_ATTRIBUTE_EXPIRY;
+import static
org.apache.jackrabbit.oak.spi.security.authentication.token.TokenConstants.TOKEN_ATTRIBUTE_KEY;
+import static org.junit.Assert.assertEquals;
+
+public class TokenConstantsTest {
+
+ @Test
+ public void testReservedAttributes() {
+ assertEquals(ImmutableSet.of(TOKEN_ATTRIBUTE, TOKEN_ATTRIBUTE_EXPIRY,
TOKEN_ATTRIBUTE_KEY), TokenConstants.RESERVED_ATTRIBUTES);
+ }
+
+ @Test
+ public void testPropertyNames() {
+ assertEquals(ImmutableSet.of(TOKEN_ATTRIBUTE_EXPIRY,
TOKEN_ATTRIBUTE_KEY), TokenConstants.TOKEN_PROPERTY_NAMES);
+ }
+}
\ No newline at end of file
Propchange:
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/token/TokenConstantsTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified:
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/AllTreePermissionTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/AllTreePermissionTest.java?rev=1856068&r1=1856067&r2=1856068&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/AllTreePermissionTest.java
(original)
+++
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/AllTreePermissionTest.java
Fri Mar 22 16:32:58 2019
@@ -21,6 +21,8 @@ import org.apache.jackrabbit.oak.plugins
import org.apache.jackrabbit.oak.plugins.memory.PropertyStates;
import org.junit.Test;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
@@ -63,4 +65,10 @@ public class AllTreePermissionTest {
public void testIsGrantedProperty() {
assertTrue(all.isGranted(Permissions.ALL, property));
}
+
+ @Test
+ public void testToString() {
+ assertEquals(all.toString(), TreePermission.ALL.toString());
+ assertNotEquals(all.toString(), TreePermission.NO_RECOURSE.toString());
+ }
}
\ No newline at end of file
Modified:
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/EmptyPermissionProviderTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/EmptyPermissionProviderTest.java?rev=1856068&r1=1856067&r2=1856068&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/EmptyPermissionProviderTest.java
(original)
+++
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/EmptyPermissionProviderTest.java
Fri Mar 22 16:32:58 2019
@@ -24,6 +24,7 @@ import org.apache.jackrabbit.oak.spi.sec
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;
@@ -64,4 +65,9 @@ public class EmptyPermissionProviderTest
public void testIsGrantedActions() {
assertFalse(emptyProvider.isGranted("/", Session.ACTION_READ));
}
+
+ @Test
+ public void testRefreshMustNotFail() {
+ emptyProvider.refresh();
+ }
}
\ No newline at end of file
Modified:
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/EmptyTreePermissionTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/EmptyTreePermissionTest.java?rev=1856068&r1=1856067&r2=1856068&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/EmptyTreePermissionTest.java
(original)
+++
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/EmptyTreePermissionTest.java
Fri Mar 22 16:32:58 2019
@@ -21,7 +21,9 @@ import org.apache.jackrabbit.oak.plugins
import org.apache.jackrabbit.oak.plugins.memory.PropertyStates;
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.assertSame;
public class EmptyTreePermissionTest {
@@ -64,4 +66,9 @@ public class EmptyTreePermissionTest {
assertFalse(empty.isGranted(Permissions.ALL, property));
}
+ @Test
+ public void testToString() {
+ assertEquals(empty.toString(), TreePermission.EMPTY.toString());
+ assertNotEquals(empty.toString(), TreePermission.ALL.toString());
+ }
}
\ No newline at end of file
Modified:
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/NoRecurseTreePermissionTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/NoRecurseTreePermissionTest.java?rev=1856068&r1=1856067&r2=1856068&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/NoRecurseTreePermissionTest.java
(original)
+++
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/NoRecurseTreePermissionTest.java
Fri Mar 22 16:32:58 2019
@@ -21,6 +21,9 @@ import org.apache.jackrabbit.oak.plugins
import org.apache.jackrabbit.oak.plugins.memory.PropertyStates;
import org.junit.Test;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
+
public class NoRecurseTreePermissionTest {
private final TreePermission noRecurse = TreePermission.NO_RECOURSE;
@@ -60,4 +63,10 @@ public class NoRecurseTreePermissionTest
public void testIsGrantedProperty() {
noRecurse.isGranted(Permissions.ALL, property);
}
+
+ @Test
+ public void testToString() {
+ assertEquals(noRecurse.toString(),
TreePermission.NO_RECOURSE.toString());
+ assertNotEquals(noRecurse.toString(), TreePermission.EMPTY.toString());
+ }
}
\ No newline at end of file
Added:
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/PermissionConstantsTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/PermissionConstantsTest.java?rev=1856068&view=auto
==============================================================================
---
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/PermissionConstantsTest.java
(added)
+++
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/PermissionConstantsTest.java
Fri Mar 22 16:32:58 2019
@@ -0,0 +1,61 @@
+/*
+ * 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.authorization.permission;
+
+import com.google.common.collect.ImmutableSet;
+import org.apache.jackrabbit.oak.spi.namespace.NamespaceConstants;
+import org.apache.jackrabbit.oak.spi.nodetype.NodeTypeConstants;
+import org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants;
+import org.junit.Test;
+
+import static
org.apache.jackrabbit.oak.spi.security.authorization.permission.PermissionConstants.NT_REP_PERMISSIONS;
+import static
org.apache.jackrabbit.oak.spi.security.authorization.permission.PermissionConstants.NT_REP_PERMISSION_STORE;
+import static
org.apache.jackrabbit.oak.spi.security.authorization.permission.PermissionConstants.REP_ACCESS_CONTROLLED_PATH;
+import static
org.apache.jackrabbit.oak.spi.security.authorization.permission.PermissionConstants.REP_PERMISSION_STORE;
+import static
org.apache.jackrabbit.oak.spi.security.authorization.permission.PermissionConstants.REP_PRIVILEGE_BITS;
+import static org.junit.Assert.assertEquals;
+
+public class PermissionConstantsTest {
+
+ @Test
+ public void testNtNames() {
+ assertEquals(ImmutableSet.of(NT_REP_PERMISSIONS,
NT_REP_PERMISSION_STORE), PermissionConstants.PERMISSION_NODETYPE_NAMES);
+ }
+
+ @Test
+ public void testNodeNames() {
+ assertEquals(ImmutableSet.of(REP_PERMISSION_STORE),
PermissionConstants.PERMISSION_NODE_NAMES);
+ }
+
+ @Test
+ public void testPropertyNames() {
+ assertEquals(ImmutableSet.of(REP_ACCESS_CONTROLLED_PATH,
REP_PRIVILEGE_BITS), PermissionConstants.PERMISSION_PROPERTY_NAMES);
+ }
+
+ @Test
+ public void testJr2Permissions() {
+ assertEquals(Permissions.USER_MANAGEMENT|Permissions.REMOVE_NODE,
Permissions.getPermissions(PermissionConstants.VALUE_PERMISSIONS_JR2));
+ }
+
+ @Test
+ public void testDefaultReadPaths() {
+ assertEquals(ImmutableSet.of(
+ NamespaceConstants.NAMESPACES_PATH,
+ NodeTypeConstants.NODE_TYPES_PATH,
+ PrivilegeConstants.PRIVILEGES_PATH),
PermissionConstants.DEFAULT_READ_PATHS);
+ }
+}
\ No newline at end of file
Propchange:
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/PermissionConstantsTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified:
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/PermissionsTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/PermissionsTest.java?rev=1856068&r1=1856067&r2=1856068&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/PermissionsTest.java
(original)
+++
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/PermissionsTest.java
Fri Mar 22 16:32:58 2019
@@ -538,6 +538,12 @@ public class PermissionsTest {
}
@Test
+ public void testGetPermissionsMultipleNamesWithMissing() {
+ String str = Permissions.PERMISSION_NAMES.get(Permissions.READ) + ",
,," + Permissions.PERMISSION_NAMES.get(Permissions.READ);
+ assertEquals(Permissions.READ, Permissions.getPermissions(str));
+ }
+
+ @Test
public void testGetPermissionsForReservedPaths() {
Map<String, Long> mapping = ImmutableMap.of(
NamespaceConstants.NAMESPACES_PATH,
Permissions.NAMESPACE_MANAGEMENT,
Modified:
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/EmptyPatternTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/EmptyPatternTest.java?rev=1856068&r1=1856067&r2=1856068&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/EmptyPatternTest.java
(original)
+++
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/EmptyPatternTest.java
Fri Mar 22 16:32:58 2019
@@ -21,6 +21,7 @@ import org.apache.jackrabbit.oak.api.Tre
import org.junit.Test;
import org.mockito.Mockito;
+import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
public class EmptyPatternTest {
@@ -45,4 +46,9 @@ public class EmptyPatternTest {
assertTrue(RestrictionPattern.EMPTY.matches(Mockito.mock(Tree.class),
Mockito.mock(PropertyState.class)));
}
+ @Test
+ public void testToString() {
+ assertEquals(RestrictionPattern.EMPTY.toString(),
RestrictionPattern.EMPTY.toString());
+ }
+
}
\ No newline at end of file
Modified:
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/CompositePrincipalConfigurationTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/CompositePrincipalConfigurationTest.java?rev=1856068&r1=1856067&r2=1856068&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/CompositePrincipalConfigurationTest.java
(original)
+++
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/CompositePrincipalConfigurationTest.java
Fri Mar 22 16:32:58 2019
@@ -30,6 +30,7 @@ import org.apache.jackrabbit.oak.namepat
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.apache.jackrabbit.oak.spi.security.SecurityProvider;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.junit.Before;
@@ -40,17 +41,18 @@ import static org.junit.Assert.assertEqu
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
public class CompositePrincipalConfigurationTest extends
AbstractCompositeConfigurationTest<PrincipalConfiguration> {
- private final Root root = Mockito.mock(Root.class);
+ private final Root root = mock(Root.class);
private PrincipalConfiguration principalConfigurationMock;
@Before
public void before() {
compositeConfiguration = new CompositePrincipalConfiguration();
- principalConfigurationMock =
Mockito.mock(PrincipalConfiguration.class);
+ principalConfigurationMock = mock(PrincipalConfiguration.class);
Mockito.when(principalConfigurationMock.getParameters()).thenReturn(ConfigurationParameters.EMPTY);
}
@@ -136,6 +138,23 @@ public class CompositePrincipalConfigura
assertSize(2, (CompositePrincipalProvider) pp);
}
+ @Test
+ public void testInitWithSecurityProvider() {
+ SecurityProvider sp = mock(SecurityProvider.class);
+ TestComposite cpc = new TestComposite(sp);
+
+ assertSame(PrincipalConfiguration.NAME, cpc.getName());
+ assertSame(sp, cpc.getSecurityProvider());
+ }
+
+ private final class TestComposite extends CompositePrincipalConfiguration {
+ TestComposite(@NotNull SecurityProvider securityProvider) {
+ super(securityProvider);
+ }
+ public SecurityProvider getSecurityProvider() {
+ return super.getSecurityProvider();
+ }
+ }
private final class TestPrincipalConfiguration extends ConfigurationBase
implements PrincipalConfiguration {
Modified:
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/CompositePrincipalProviderTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/CompositePrincipalProviderTest.java?rev=1856068&r1=1856067&r2=1856068&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/CompositePrincipalProviderTest.java
(original)
+++
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/CompositePrincipalProviderTest.java
Fri Mar 22 16:32:58 2019
@@ -46,6 +46,8 @@ import static org.junit.Assert.assertNot
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -112,7 +114,14 @@ public class CompositePrincipalProviderT
}
@Test
- public void getGroupMembership() {
+ public void testGetGroupMembership() {
+ for (Principal principal : testPrincipals()) {
+ assertTrue(cpp.getGroupMembership(principal).isEmpty());
+ }
+ }
+
+ @Test
+ public void testGetMembershipPrincipals() {
for (Principal principal : testPrincipals()) {
boolean atleastEveryone =
cpp.getMembershipPrincipals(principal).contains(EveryonePrincipal.getInstance());
assertTrue("All principals (except everyone) must be member of the
everyone group. Violation: "+principal.getName(), atleastEveryone);
@@ -120,7 +129,7 @@ public class CompositePrincipalProviderT
}
@Test
- public void getGroupMembershipUnknown() {
+ public void testGetMembershipPrincipalsUnknown() {
assertTrue(cpp.getMembershipPrincipals(TestPrincipalProvider.UNKNOWN).isEmpty());
}
@@ -265,4 +274,20 @@ public class CompositePrincipalProviderT
List<String> out = getNames(cpp.findPrincipals(null, true, 1, 0, -1));
assertEquals(expected, out);
}
+
+ @Test
+ public void testFindWithOffsetLimit() {
+ Iterator principals = new TestPrincipalProvider("p1", "p2", "p3",
"p4").getTestPrincipals().iterator();
+ PrincipalProvider pp = mock(PrincipalProvider.class);
+ // NOTE: CompositePrincipalProvider passes 0 offset to the aggregated
provider!
+ when(pp.findPrincipals("p", false, PrincipalManager.SEARCH_TYPE_ALL,
0, 1)).thenReturn(principals);
+
+ PrincipalProvider cpp =
CompositePrincipalProvider.of(ImmutableList.of(pp,
EmptyPrincipalProvider.INSTANCE));
+
+ Iterator<? extends Principal> it = cpp.findPrincipals("p", false,
PrincipalManager.SEARCH_TYPE_ALL, 2, 1);
+ assertTrue(it.hasNext());
+ Principal p = it.next();
+ assertEquals("p3", p.getName());
+ assertFalse(it.hasNext());
+ }
}
Modified:
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/EmptyPrincipalProviderTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/EmptyPrincipalProviderTest.java?rev=1856068&r1=1856067&r2=1856068&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/EmptyPrincipalProviderTest.java
(original)
+++
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/EmptyPrincipalProviderTest.java
Fri Mar 22 16:32:58 2019
@@ -24,6 +24,7 @@ import org.junit.Test;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
public class EmptyPrincipalProviderTest {
@@ -39,6 +40,11 @@ public class EmptyPrincipalProviderTest
@Test
public void testGetGroupMembership() {
+
assertTrue(principalProvider.getGroupMembership(mock(Principal.class)).isEmpty());
+ }
+
+ @Test
+ public void testGetMembershipPrincipals() {
assertTrue(principalProvider.getMembershipPrincipals(EveryonePrincipal.getInstance()).isEmpty());
assertTrue(principalProvider.getMembershipPrincipals(new
PrincipalImpl(EveryonePrincipal.NAME)).isEmpty());
assertTrue(principalProvider.getMembershipPrincipals(testPrincipal).isEmpty());
Modified:
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/EveryonePrincipalTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/EveryonePrincipalTest.java?rev=1856068&r1=1856067&r2=1856068&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/EveryonePrincipalTest.java
(original)
+++
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/EveryonePrincipalTest.java
Fri Mar 22 16:32:58 2019
@@ -29,10 +29,11 @@ import static org.junit.Assert.assertNot
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
public class EveryonePrincipalTest {
- private final Principal everyone = EveryonePrincipal.getInstance();
+ private final EveryonePrincipal everyone = EveryonePrincipal.getInstance();
@Test
public void testGetName() {
@@ -40,13 +41,23 @@ public class EveryonePrincipalTest {
}
@Test
+ public void testAddMember() {
+ assertFalse(everyone.addMember(mock(Principal.class)));
+ }
+
+ @Test(expected = UnsupportedOperationException.class)
+ public void testRemoveMember() {
+ everyone.removeMember(mock(Principal.class));
+ }
+
+ @Test
public void testIsMember() {
- assertTrue(EveryonePrincipal.getInstance().isMember(new
PrincipalImpl("test")));
+ assertTrue(everyone.isMember(new PrincipalImpl("test")));
}
@Test
public void testIsMemberSelf() {
- assertFalse(EveryonePrincipal.getInstance().isMember(everyone));
+ assertFalse(everyone.isMember(everyone));
}
@Test(expected = UnsupportedOperationException.class)
@@ -66,7 +77,7 @@ public class EveryonePrincipalTest {
@Test
public void testHashCode() {
- assertTrue(everyone.hashCode() ==
EveryonePrincipal.getInstance().hashCode());
+ assertEquals(everyone.hashCode(),
EveryonePrincipal.getInstance().hashCode());
}
@Test
@@ -76,13 +87,13 @@ public class EveryonePrincipalTest {
return EveryonePrincipal.NAME;
}
};
- assertFalse(everyone.equals(someotherEveryone));
+ assertNotEquals(everyone, someotherEveryone);
}
@Test
public void testEqualsOtherJackrabbitPrincipal() {
Principal someotherEveryone = new OtherEveryone();
- assertFalse(everyone.equals(someotherEveryone));
+ assertNotEquals(everyone, someotherEveryone);
}
@Test
Modified:
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/GroupPrincipalsTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/GroupPrincipalsTest.java?rev=1856068&r1=1856067&r2=1856068&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/GroupPrincipalsTest.java
(original)
+++
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/GroupPrincipalsTest.java
Fri Mar 22 16:32:58 2019
@@ -16,20 +16,25 @@
*/
package org.apache.jackrabbit.oak.spi.security.principal;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Iterators;
+import com.google.common.collect.Sets;
+import org.apache.jackrabbit.api.security.principal.GroupPrincipal;
+import org.junit.Test;
import java.security.Principal;
import java.security.acl.Group;
+import java.util.Collections;
import java.util.Enumeration;
import java.util.Set;
-import org.junit.Test;
-
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Iterators;
-import com.google.common.collect.Sets;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
public class GroupPrincipalsTest {
@@ -71,7 +76,7 @@ public class GroupPrincipalsTest {
}
@Test
- public void testTransform() {
+ public void testTransformGroupSet() {
Group g = new Group() {
@Override
@@ -104,12 +109,70 @@ public class GroupPrincipalsTest {
assertEquals(1, t.size());
Principal p = t.iterator().next();
assertEquals(p.getName(), g.getName());
+ }
+
+ @Test
+ public void testTransformEnumeration() {
+ Group g = when(mock(Group.class).getName()).thenReturn("g").getMock();
+ Set<Principal> set = ImmutableSet.of(g, mock(Principal.class),
mock(GroupPrincipal.class));
+ Enumeration<? extends Principal> e =
GroupPrincipals.transform(Collections.enumeration(set));
+
+ Set<Principal> t = Sets.newHashSet(Iterators.forEnumeration(e));
+ assertEquals(set.size(), t.size());
+ for (Principal p : t) {
+ assertFalse(p instanceof Group);
+ }
+ }
+
+ @Test
+ public void testTransformEmptyEnumeration() {
+ Enumeration members = Collections.emptyEnumeration();
+
+ Enumeration<Principal> t = GroupPrincipals.transform(members);
+ assertFalse(t.hasMoreElements());
+ }
+
+ @Test
+ public void testMembersOfNonGroup() {
+ assertEquals(Collections.emptyEnumeration(),
GroupPrincipals.members(mock(Principal.class)));
+ }
+
+ @Test
+ public void testMembersOfGroupPrincipal() {
+ GroupPrincipal gp = mock(GroupPrincipal.class);
+
+ GroupPrincipals.members(gp);
+ verify(gp, times(1)).members();
+ }
+
+ @Test
+ public void testMembersOfGroup() {
+ Group g = mock(Group.class);
+
+ GroupPrincipals.members(g);
+ verify(g, times(1)).members();
+ }
+
+ @Test
+ public void testIsMemberOfNonGroup() {
+ assertFalse(GroupPrincipals.isMember(mock(Principal.class),
mock(Principal.class)));
+ }
+
+ @Test
+ public void testIsMemberOfGroupPrincipal() {
+ GroupPrincipal gp = mock(GroupPrincipal.class);
+ Principal p = mock(Principal.class);
+
+ GroupPrincipals.isMember(gp, p);
+ verify(gp, times(1)).isMember(p);
+ }
+
+ @Test
+ public void testIsMemberOfGroup() {
+ Group g = mock(Group.class);
+ Principal p = mock(Principal.class);
- Enumeration<? extends Principal> e = GroupPrincipals
-
.transform(Iterators.asEnumeration(ImmutableSet.of(g).iterator()));
- Set<Principal> t2 = Sets.newHashSet(Iterators.forEnumeration(e));
- assertEquals(1, t2.size());
- Principal p2 = t2.iterator().next();
- assertEquals(p2.getName(), g.getName());
+ GroupPrincipals.isMember(g, p);
+ verify(g, times(1)).isMember(p);
}
}
Modified:
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/PrincipalManagerImplTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/PrincipalManagerImplTest.java?rev=1856068&r1=1856067&r2=1856068&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/PrincipalManagerImplTest.java
(original)
+++
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/PrincipalManagerImplTest.java
Fri Mar 22 16:32:58 2019
@@ -34,6 +34,13 @@ import static org.junit.Assert.assertNot
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
public class PrincipalManagerImplTest {
@@ -308,4 +315,15 @@ public class PrincipalManagerImplTest {
String unknownHint =
TestPrincipalProvider.UNKNOWN.getName().substring(0, 4);
assertFalse(principalMgr.findPrincipals(unknownHint,
PrincipalManager.SEARCH_TYPE_NOT_GROUP).hasNext());
}
+
+ @Test
+ public void testFindPrincipalsWithOffsetLimit() {
+ PrincipalProvider pp =
when(mock(PrincipalProvider.class).findPrincipals(any(), anyBoolean(),
anyInt(), anyInt(), anyInt())).thenReturn(Iterators.emptyIterator()).getMock();
+ PrincipalQueryManager pm = new PrincipalManagerImpl(pp);
+
+ PrincipalIterator it = pm.findPrincipals("filter", true,
PrincipalManager.SEARCH_TYPE_ALL, 5, 2);
+ assertTrue(it instanceof PrincipalIteratorAdapter);
+
+ verify(pp, times(1)).findPrincipals("filter", true,
PrincipalManager.SEARCH_TYPE_ALL, 5, 2);
+ }
}
Added:
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/PrincipalProviderTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/PrincipalProviderTest.java?rev=1856068&view=auto
==============================================================================
---
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/PrincipalProviderTest.java
(added)
+++
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/PrincipalProviderTest.java
Fri Mar 22 16:32:58 2019
@@ -0,0 +1,69 @@
+/*
+ * 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 org.apache.jackrabbit.api.security.principal.PrincipalManager;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+import org.junit.Test;
+
+import java.security.Principal;
+import java.util.Iterator;
+import java.util.Set;
+
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.doCallRealMethod;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+public class PrincipalProviderTest {
+
+ private PrincipalProvider pp = mock(PrincipalProvider.class);
+
+ @Test
+ public void testGetItemBasedPrincipal() {
+ doCallRealMethod().when(pp).getItemBasedPrincipal("/some/path");
+ assertNull(pp.getItemBasedPrincipal("/some/path"));
+ }
+
+ @Test
+ public void testGetGroupMembership() {
+ Principal p = mock(Principal.class);
+ doCallRealMethod().when(pp).getGroupMembership(p);
+ assertTrue(pp.getGroupMembership(p).isEmpty());
+ }
+
+ @Test
+ public void testGetMembershipPrincipals() {
+ Principal p = mock(Principal.class);
+ doCallRealMethod().when(pp).getMembershipPrincipals(p);
+ assertTrue(pp.getMembershipPrincipals(p).isEmpty());
+ }
+
+
+
+ @Test(expected = IllegalArgumentException.class)
+ public void testNegativeOffset() {
+ doCallRealMethod().when(pp).findPrincipals("hint", true,
PrincipalManager.SEARCH_TYPE_GROUP, -1, 12);
+ pp.findPrincipals("hint", true, PrincipalManager.SEARCH_TYPE_GROUP,
-1, 12);
+ }
+}
\ No newline at end of file
Propchange:
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/PrincipalProviderTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified:
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/AccessControlActionTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/AccessControlActionTest.java?rev=1856068&r1=1856067&r2=1856068&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/AccessControlActionTest.java
(original)
+++
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/AccessControlActionTest.java
Fri Mar 22 16:32:58 2019
@@ -17,10 +17,17 @@
package org.apache.jackrabbit.oak.spi.security.user.action;
import javax.jcr.RepositoryException;
+import javax.jcr.security.AccessControlManager;
+import javax.jcr.security.AccessControlPolicy;
+import javax.jcr.security.AccessControlPolicyIterator;
+import javax.jcr.security.Privilege;
+import com.google.common.collect.ImmutableList;
+import org.apache.jackrabbit.api.security.JackrabbitAccessControlList;
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.commons.iterator.AccessControlPolicyIteratorAdapter;
import org.apache.jackrabbit.oak.api.Root;
import org.apache.jackrabbit.oak.namepath.NamePathMapper;
import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
@@ -36,6 +43,11 @@ import org.jetbrains.annotations.Nullabl
import org.junit.Test;
import org.mockito.Mockito;
+import java.security.Principal;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
/**
@@ -45,23 +57,43 @@ import static org.mockito.Mockito.when;
*/
public class AccessControlActionTest implements UserConstants {
- private final Root root = Mockito.mock(Root.class);
- private final SecurityProvider securityProvider =
Mockito.mock(SecurityProvider.class);
- private final UserConfiguration userConfiguration =
Mockito.mock(UserConfiguration.class);
- private final AuthorizationConfiguration authorizationConfiguration =
Mockito.mock(AuthorizationConfiguration.class);
+ private final Root root = mock(Root.class);
+ private final SecurityProvider securityProvider =
mock(SecurityProvider.class);
+ private final UserConfiguration userConfiguration =
mock(UserConfiguration.class);
+ private final AuthorizationConfiguration authorizationConfiguration =
mock(AuthorizationConfiguration.class);
+
+ private void initSecurityProvider(@NotNull String adminId, @NotNull String
anonymousId, @NotNull String... adminPrincipalNames) throws Exception {
+ initSecurityProvider(null, adminId, anonymousId, adminPrincipalNames);
+ }
- private void initSecurityProvider(@NotNull String adminId, @NotNull String
anonymousId, @NotNull String... adminPrincipalNames) {
+ private void initSecurityProvider(@Nullable AccessControlManager acMgr,
@NotNull String adminId, @NotNull String anonymousId, @NotNull String...
adminPrincipalNames) throws Exception {
when(userConfiguration.getParameters()).thenReturn(ConfigurationParameters.of(
PARAM_ADMIN_ID, adminId,
PARAM_ANONYMOUS_ID, anonymousId));
when(authorizationConfiguration.getParameters()).thenReturn(ConfigurationParameters.of(PermissionConstants.PARAM_ADMINISTRATIVE_PRINCIPALS,
adminPrincipalNames));
-
+ if (acMgr != null) {
+ when(authorizationConfiguration.getAccessControlManager(root,
NamePathMapper.DEFAULT)).thenReturn(acMgr);
+ }
when(securityProvider.getConfiguration(UserConfiguration.class)).thenReturn(userConfiguration);
when(securityProvider.getConfiguration(AuthorizationConfiguration.class)).thenReturn(authorizationConfiguration);
}
+ private AccessControlManager mockAccessControlManager(boolean
addEntrySuccess) throws Exception {
+ AccessControlManager acMgr = mock(AccessControlManager.class);
+
when(acMgr.getApplicablePolicies("/none")).thenReturn(AccessControlPolicyIteratorAdapter.EMPTY);
+ AccessControlPolicy policy = mock(AccessControlPolicy.class);
+ when(acMgr.getApplicablePolicies("/nonACL")).thenReturn(new
AccessControlPolicyIteratorAdapter(ImmutableList.of(policy)));
+ JackrabbitAccessControlList acl =
mock(JackrabbitAccessControlList.class);
+ if (addEntrySuccess) {
+ when(acl.addAccessControlEntry(any(Principal.class),
any(Privilege[].class))).thenReturn(true);
+ }
+ when(acMgr.getApplicablePolicies("/acl")).thenReturn(new
AccessControlPolicyIteratorAdapter(ImmutableList.of(acl)));
+ return acMgr;
+
+ }
+
private AccessControlAction createAction(@NotNull String... privNames) {
AccessControlAction action = new AccessControlAction();
action.init(securityProvider, ConfigurationParameters.of(
@@ -93,14 +125,14 @@ public class AccessControlActionTest imp
}
private static User mockUser(@NotNull String id, @Nullable String
principalName, @Nullable String path) throws RepositoryException {
- User user = Mockito.mock(User.class);
+ User user = mock(User.class);
when(user.isGroup()).thenReturn(false);
mockAuthorizable(user, id, principalName, path);
return user;
}
private static Group mockGroup(@NotNull String id, @Nullable String
principalName, @Nullable String path) throws RepositoryException {
- Group gr = Mockito.mock(Group.class);
+ Group gr = mock(Group.class);
when(gr.isGroup()).thenReturn(true);
mockAuthorizable(gr, id, principalName, path);
return gr;
@@ -108,12 +140,12 @@ public class AccessControlActionTest imp
@Test(expected = IllegalStateException.class)
public void testOnCreateUserMissingSecurityProvider() throws Exception {
- new AccessControlAction().onCreate(Mockito.mock(User.class), null,
root, NamePathMapper.DEFAULT);
+ new AccessControlAction().onCreate(mock(User.class), null, root,
NamePathMapper.DEFAULT);
}
@Test(expected = IllegalStateException.class)
public void testOnCreateGroupMissingSecurityProvider() throws Exception {
- new AccessControlAction().onCreate(Mockito.mock(Group.class), root,
NamePathMapper.DEFAULT);
+ new AccessControlAction().onCreate(mock(Group.class), root,
NamePathMapper.DEFAULT);
}
@Test
@@ -200,4 +232,35 @@ public class AccessControlActionTest imp
action.onCreate(gr, root, NamePathMapper.DEFAULT);
}
+ @Test
+ public void testOnCreateNoApplicablePolicy() throws Exception {
+ initSecurityProvider(mockAccessControlManager(false),
DEFAULT_ADMIN_ID, DEFAULT_ANONYMOUS_ID);
+ AccessControlAction action = createAction(PrivilegeConstants.JCR_READ);
+
+ action.onCreate(mockUser("userId", "pName", "/none"), "pw", root,
NamePathMapper.DEFAULT);
+ }
+
+ @Test
+ public void testOnCreateNoApplicableAclPolicy() throws Exception {
+ initSecurityProvider(mockAccessControlManager(false),
DEFAULT_ADMIN_ID, DEFAULT_ANONYMOUS_ID);
+ AccessControlAction action = createAction(PrivilegeConstants.JCR_READ);
+
+ action.onCreate(mockGroup("grId", "pName", "/nonACL"), root,
NamePathMapper.DEFAULT);
+ }
+
+ @Test
+ public void testOnCreateApplicableAclPolicyForGroup() throws Exception {
+ initSecurityProvider(mockAccessControlManager(false),
DEFAULT_ADMIN_ID, DEFAULT_ANONYMOUS_ID);
+ AccessControlAction action = createAction(PrivilegeConstants.JCR_READ);
+
+ action.onCreate(mockGroup("grId", "pName", "/acl"), root,
NamePathMapper.DEFAULT);
+ }
+
+ @Test
+ public void testOnCreateApplicableAclPolicyForUser() throws Exception {
+ initSecurityProvider(mockAccessControlManager(true), DEFAULT_ADMIN_ID,
DEFAULT_ANONYMOUS_ID);
+ AccessControlAction action = createAction(PrivilegeConstants.JCR_READ);
+
+ action.onCreate(mockUser("userId", "pName", "/acl"), "pw", root,
NamePathMapper.DEFAULT);
+ }
}
Modified:
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/PasswordValidationActionTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/PasswordValidationActionTest.java?rev=1856068&r1=1856067&r2=1856068&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/PasswordValidationActionTest.java
(original)
+++
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/PasswordValidationActionTest.java
Fri Mar 22 16:32:58 2019
@@ -16,6 +16,7 @@
*/
package org.apache.jackrabbit.oak.spi.security.user.action;
+import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
import javax.jcr.nodetype.ConstraintViolationException;
@@ -30,20 +31,22 @@ import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
+import static org.junit.Assert.assertNull;
import static org.junit.Assert.fail;
+import static org.mockito.Mockito.mock;
public class PasswordValidationActionTest {
- private final SecurityProvider securityProvider =
Mockito.mock(SecurityProvider.class);
- private final Root root = Mockito.mock(Root.class);
- private final NamePathMapper namePathMapper =
Mockito.mock(NamePathMapper.class);
+ private final SecurityProvider securityProvider =
mock(SecurityProvider.class);
+ private final Root root = mock(Root.class);
+ private final NamePathMapper namePathMapper = mock(NamePathMapper.class);
private final PasswordValidationAction pwAction = new
PasswordValidationAction();
private User user;
@Before
public void before() {
- user = Mockito.mock(User.class);
+ user = mock(User.class);
pwAction.init(securityProvider, ConfigurationParameters.of(
PasswordValidationAction.CONSTRAINT,
"^.*(?=.{8,})(?=.*[a-z])(?=.*[A-Z]).*"));
@@ -70,7 +73,12 @@ public class PasswordValidationActionTes
}
@Test
- public void testPasswordValidationActionInvalid() throws Exception {
+ public void testOnCreateHashedInvalidPw() throws Exception {
+ pwAction.onCreate(user, PasswordUtil.buildPasswordHash("pw1"), root,
namePathMapper);
+ }
+
+ @Test
+ public void testOnPasswordChangeInvalid() throws Exception {
List<String> invalid = new ArrayList<>();
invalid.add("pw1");
invalid.add("only6C");
@@ -89,7 +97,7 @@ public class PasswordValidationActionTes
}
@Test
- public void testPasswordValidationActionValid() throws Exception {
+ public void testOnPasswordChangeValidPw() throws Exception {
List<String> valid = new ArrayList<>();
valid.add("abCDefGH");
valid.add("Abbbbbbbbbbbb");
@@ -103,10 +111,32 @@ public class PasswordValidationActionTes
}
@Test(expected = ConstraintViolationException.class)
- public void testPasswordValidationActionOnChange() throws Exception {
+ public void testOnPasswordChange() throws Exception {
pwAction.init(securityProvider,
ConfigurationParameters.of(PasswordValidationAction.CONSTRAINT, "abc"));
String hashed = PasswordUtil.buildPasswordHash("abc");
- pwAction.onPasswordChange(user, hashed, Mockito.mock(Root.class),
Mockito.mock(NamePathMapper.class));
+ pwAction.onPasswordChange(user, hashed, root, namePathMapper);
+ }
+
+ @Test
+ public void testOnPasswordChangeNullPw() throws Exception {
+ pwAction.init(securityProvider,
ConfigurationParameters.of(PasswordValidationAction.CONSTRAINT, "abc"));
+ pwAction.onPasswordChange(user, null, root, namePathMapper);
+ }
+
+ @Test
+ public void testInvalidPattern() throws Exception {
+ PasswordValidationAction action = new PasswordValidationAction();
+ action.init(mock(SecurityProvider.class),
ConfigurationParameters.of(PasswordValidationAction.CONSTRAINT, "["));
+
+ Field f = PasswordValidationAction.class.getDeclaredField("pattern");
+ f.setAccessible(true);
+
+ // no pattern was set
+ assertNull(f.get(action));
+
+ // no pattern gets evaluated
+ action.onCreate(user, null, root, namePathMapper);
+ action.onPasswordChange(user, "]", root, namePathMapper);
}
}