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/03 10:28:08 UTC
svn commit: r1785258 - in
/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak:
security/user/action/ spi/security/user/action/ spi/whiteboard/
Author: angela
Date: Fri Mar 3 10:28:08 2017
New Revision: 1785258
URL: http://svn.apache.org/viewvc?rev=1785258&view=rev
Log:
OAK-5793 : Improve coverage for spi.security code in oak-core (wip)
Added:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/action/
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/action/GroupActionBestEffortTest.java
- copied, changed from r1785182, jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/GroupActionBestEffortTest.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/action/GroupActionTest.java
- copied, changed from r1785182, jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/GroupActionTest.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/action/PasswordValidationActionTest.java
- copied, changed from r1785182, jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/PasswordValidationActionTest.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/AbstractGroupActionTest.java
- copied, changed from r1785182, jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/GroupActionTest.java
Removed:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/GroupActionBestEffortTest.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/GroupActionTest.java
Modified:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/CompositeActionProviderTest.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/DefaultAuthorizableActionProviderTest.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/PasswordChangeActionTest.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/PasswordValidationActionTest.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/whiteboard/WhiteboardUserAuthenticationFactoryTest.java
Copied: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/action/GroupActionBestEffortTest.java (from r1785182, jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/GroupActionBestEffortTest.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/action/GroupActionBestEffortTest.java?p2=jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/action/GroupActionBestEffortTest.java&p1=jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/GroupActionBestEffortTest.java&r1=1785182&r2=1785258&rev=1785258&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/GroupActionBestEffortTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/action/GroupActionBestEffortTest.java Fri Mar 3 10:28:08 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.user.action;
+package org.apache.jackrabbit.oak.security.user.action;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
Copied: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/action/GroupActionTest.java (from r1785182, jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/GroupActionTest.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/action/GroupActionTest.java?p2=jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/action/GroupActionTest.java&p1=jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/GroupActionTest.java&r1=1785182&r2=1785258&rev=1785258&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/GroupActionTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/action/GroupActionTest.java Fri Mar 3 10:28:08 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.user.action;
+package org.apache.jackrabbit.oak.security.user.action;
import java.util.List;
import java.util.Set;
@@ -34,6 +34,9 @@ import org.apache.jackrabbit.oak.spi.sec
import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
import org.apache.jackrabbit.oak.spi.security.user.UserConfiguration;
import org.apache.jackrabbit.oak.spi.security.user.UserConstants;
+import org.apache.jackrabbit.oak.spi.security.user.action.AbstractGroupAction;
+import org.apache.jackrabbit.oak.spi.security.user.action.AuthorizableAction;
+import org.apache.jackrabbit.oak.spi.security.user.action.AuthorizableActionProvider;
import org.apache.jackrabbit.oak.spi.xml.ImportBehavior;
import org.apache.jackrabbit.oak.spi.xml.ProtectedItemImporter;
import org.junit.After;
Copied: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/action/PasswordValidationActionTest.java (from r1785182, jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/PasswordValidationActionTest.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/action/PasswordValidationActionTest.java?p2=jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/action/PasswordValidationActionTest.java&p1=jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/PasswordValidationActionTest.java&r1=1785182&r2=1785258&rev=1785258&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/PasswordValidationActionTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/action/PasswordValidationActionTest.java Fri Mar 3 10:28:08 2017
@@ -14,9 +14,8 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.jackrabbit.oak.spi.security.user.action;
+package org.apache.jackrabbit.oak.security.user.action;
-import java.util.ArrayList;
import java.util.List;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
@@ -33,6 +32,10 @@ import org.apache.jackrabbit.oak.spi.sec
import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
import org.apache.jackrabbit.oak.spi.security.user.UserConfiguration;
import org.apache.jackrabbit.oak.spi.security.user.UserConstants;
+import org.apache.jackrabbit.oak.spi.security.user.action.AbstractAuthorizableAction;
+import org.apache.jackrabbit.oak.spi.security.user.action.AuthorizableAction;
+import org.apache.jackrabbit.oak.spi.security.user.action.AuthorizableActionProvider;
+import org.apache.jackrabbit.oak.spi.security.user.action.PasswordValidationAction;
import org.apache.jackrabbit.oak.spi.security.user.util.PasswordUtil;
import org.junit.After;
import org.junit.Before;
@@ -56,14 +59,10 @@ public class PasswordValidationActionTes
};
private User user;
- private User testUser;
@Before
public void before() throws Exception {
super.before();
-
- user = (User) getUserManager(root).getAuthorizable(adminSession.getAuthInfo().getUserID());
-
testAction.reset();
pwAction.init(getSecurityProvider(), ConfigurationParameters.of(
PasswordValidationAction.CONSTRAINT, "^.*(?=.{8,})(?=.*[a-z])(?=.*[A-Z]).*"));
@@ -72,8 +71,8 @@ public class PasswordValidationActionTes
@After
public void after() throws Exception {
- if (testUser != null) {
- testUser.remove();
+ if (user != null) {
+ user.remove();
root.commit();
}
root = null;
@@ -90,67 +89,37 @@ public class PasswordValidationActionTes
@Test
public void testActionIsCalled() throws Exception {
- testUser = getUserManager(root).createUser("testUser", "testUser12345");
+ user = getUserManager(root).createUser("testUser", "testUser12345");
root.commit();
assertEquals(1, testAction.onCreateCalled);
- testUser.changePassword("pW12345678");
+ user.changePassword("pW12345678");
assertEquals(1, testAction.onPasswordChangeCalled);
- testUser.changePassword("pW1234567890", "pW12345678");
+ user.changePassword("pW1234567890", "pW12345678");
assertEquals(2, testAction.onPasswordChangeCalled);
}
@Test
- public void testPasswordValidationAction() throws Exception {
- List<String> invalid = new ArrayList<String>();
- invalid.add("pw1");
- invalid.add("only6C");
- invalid.add("12345678");
- invalid.add("WITHOUTLOWERCASE");
- invalid.add("withoutuppercase");
-
- for (String pw : invalid) {
- try {
- pwAction.onPasswordChange(user, pw, root, NamePathMapper.DEFAULT);
- fail("should throw constraint violation");
- } catch (ConstraintViolationException e) {
- // success
- }
- }
-
- List<String> valid = new ArrayList<String>();
- valid.add("abCDefGH");
- valid.add("Abbbbbbbbbbbb");
- valid.add("cDDDDDDDDDDDDDDDDD");
- valid.add("gH%%%%%%%%%%%%%%%%^^");
- valid.add("&)(*&^%23qW");
-
- for (String pw : valid) {
- pwAction.onPasswordChange(user, pw, root, NamePathMapper.DEFAULT);
- }
- }
-
- @Test
public void testPasswordValidationActionOnCreate() throws Exception {
String hashed = PasswordUtil.buildPasswordHash("DWkej32H");
- testUser = getUserManager(root).createUser("testuser", hashed);
+ user = getUserManager(root).createUser("testuser", hashed);
root.commit();
- String pwValue = root.getTree(testUser.getPath()).getProperty(UserConstants.REP_PASSWORD).getValue(Type.STRING);
+ String pwValue = root.getTree(user.getPath()).getProperty(UserConstants.REP_PASSWORD).getValue(Type.STRING);
assertFalse(PasswordUtil.isPlainTextPassword(pwValue));
assertTrue(PasswordUtil.isSame(pwValue, hashed));
}
@Test
public void testPasswordValidationActionOnChange() throws Exception {
- testUser = getUserManager(root).createUser("testuser", "testPw123456");
+ user = getUserManager(root).createUser("testuser", "testPw123456");
root.commit();
try {
pwAction.init(getSecurityProvider(), ConfigurationParameters.of(PasswordValidationAction.CONSTRAINT, "abc"));
String hashed = PasswordUtil.buildPasswordHash("abc");
- testUser.changePassword(hashed);
+ user.changePassword(hashed);
fail("Password change must always enforce password validation.");
Copied: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/AbstractGroupActionTest.java (from r1785182, jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/GroupActionTest.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/AbstractGroupActionTest.java?p2=jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/AbstractGroupActionTest.java&p1=jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/GroupActionTest.java&r1=1785182&r2=1785258&rev=1785258&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/GroupActionTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/AbstractGroupActionTest.java Fri Mar 3 10:28:08 2017
@@ -16,209 +16,46 @@
*/
package org.apache.jackrabbit.oak.spi.security.user.action;
-import java.util.List;
-import java.util.Set;
-import javax.annotation.Nonnull;
-import javax.jcr.RepositoryException;
-
-import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Iterables;
-import org.apache.jackrabbit.api.security.user.Authorizable;
import org.apache.jackrabbit.api.security.user.Group;
import org.apache.jackrabbit.api.security.user.User;
-import org.apache.jackrabbit.oak.AbstractSecurityTest;
import org.apache.jackrabbit.oak.api.Root;
import org.apache.jackrabbit.oak.namepath.NamePathMapper;
-import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
-import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
-import org.apache.jackrabbit.oak.spi.security.user.UserConfiguration;
-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.After;
-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.assertTrue;
-
-public class GroupActionTest extends AbstractSecurityTest {
-
- private static final String TEST_GROUP_ID = "testGroup";
- private static final String TEST_USER_PREFIX = "testUser";
-
- final TestGroupAction groupAction = new TestGroupAction();
- private final AuthorizableActionProvider actionProvider = new AuthorizableActionProvider() {
- @Nonnull
- @Override
- public List<? extends AuthorizableAction> getAuthorizableActions(@Nonnull SecurityProvider securityProvider) {
- return ImmutableList.of(groupAction);
- }
- };
-
- private User testUser01;
- private User testUser02;
-
- Group testGroup;
-
- @Before
- public void before() throws Exception {
- super.before();
-
- testGroup = getUserManager(root).createGroup(TEST_GROUP_ID);
- root.commit();
- }
-
- @After
- public void after() throws Exception {
- if (testGroup != null) {
- testGroup.remove();
- root.commit();
- }
-
- if (testUser01 != null) {
- testUser01.remove();
- root.commit();
- }
-
- if (testUser02 != null) {
- testUser02.remove();
- root.commit();
- }
+public class AbstractGroupActionTest {
- root = null;
- super.after();
- }
+ private final GroupAction groupAction = new AbstractGroupAction() {};
- @Override
- protected ConfigurationParameters getSecurityConfigParameters() {
- ConfigurationParameters userParams = ConfigurationParameters.of(
- UserConstants.PARAM_AUTHORIZABLE_ACTION_PROVIDER, actionProvider,
- ProtectedItemImporter.PARAM_IMPORT_BEHAVIOR, getImportBehavior()
- );
- return ConfigurationParameters.of(UserConfiguration.NAME, userParams);
- }
+ private final User user = Mockito.mock(User.class);
+ private final Group group = Mockito.mock(Group.class);
- String getImportBehavior() {
- return ImportBehavior.NAME_IGNORE;
- }
+ private final Root root = Mockito.mock(Root.class);
+ private final NamePathMapper namePathMapper = Mockito.mock(NamePathMapper.class);
@Test
public void testMemberAdded() throws Exception {
- testUser01 = getUserManager(root).createUser(TEST_USER_PREFIX + "01", "");
-
- testGroup.addMember(testUser01);
- assertTrue(groupAction.onMemberAddedCalled);
- assertEquals(testGroup, groupAction.group);
- assertEquals(testUser01, groupAction.member);
+ groupAction.onMemberAdded(group, user, root, namePathMapper);
}
@Test
public void testMemberRemoved() throws Exception {
- testUser01 = getUserManager(root).createUser(TEST_USER_PREFIX + "01", "");
- testGroup.addMember(testUser01);
- root.commit();
-
- testGroup.removeMember(testUser01);
- assertTrue(groupAction.onMemberRemovedCalled);
- assertEquals(testGroup, groupAction.group);
- assertEquals(testUser01, groupAction.member);
+ groupAction.onMemberRemoved(group, user, root, namePathMapper);
}
@Test
public void testMembersAdded() throws Exception {
- testUser01 = getUserManager(root).createUser(TEST_USER_PREFIX + "01", "");
- testUser02 = getUserManager(root).createUser(TEST_USER_PREFIX + "02", "");
- testGroup.addMember(testUser02);
-
- Set<String> memberIds = ImmutableSet.of(testUser01.getID());
- Set<String> failedIds = ImmutableSet.of(testUser02.getID(), testGroup.getID());
- Iterable<String> ids = Iterables.concat(memberIds, failedIds);
-
- testGroup.addMembers(Iterables.toArray(ids, String.class));
- assertTrue(groupAction.onMembersAddedCalled);
- assertEquals(testGroup, groupAction.group);
- assertEquals(memberIds, groupAction.memberIds);
- assertEquals(failedIds, groupAction.failedIds);
+ groupAction.onMembersAdded(group, ImmutableSet.of("user1", "user2"), ImmutableSet.<String>of(), root, namePathMapper);
}
@Test
- public void testMembersAddedNonExisting() throws Exception {
- Set<String> nonExisting = ImmutableSet.of("blinder", "passagier");
-
- testGroup.addMembers(nonExisting.toArray(new String[nonExisting.size()]));
- assertFalse(groupAction.memberIds.iterator().hasNext());
- assertTrue(Iterables.elementsEqual(nonExisting, groupAction.failedIds));
+ public void testMembersAddedContentId() throws Exception {
+ groupAction.onMembersAddedContentId(group, ImmutableSet.of("user1", "user2"), ImmutableSet.<String>of(), root, namePathMapper);
}
@Test
public void testMembersRemoved() throws Exception {
- testUser01 = getUserManager(root).createUser(TEST_USER_PREFIX + "01", "");
- testUser02 = getUserManager(root).createUser(TEST_USER_PREFIX + "02", "");
- testGroup.addMember(testUser01);
-
- Set<String> memberIds = ImmutableSet.of(testUser01.getID());
- Set<String> failedIds = ImmutableSet.of(testUser02.getID(), testGroup.getID());
- Iterable<String> ids = Iterables.concat(memberIds, failedIds);
-
- testGroup.removeMembers(Iterables.toArray(ids, String.class));
- assertTrue(groupAction.onMembersRemovedCalled);
- assertEquals(testGroup, groupAction.group);
- assertEquals(memberIds, groupAction.memberIds);
- assertEquals(failedIds, groupAction.failedIds);
- }
-
- @Test
- public void testMembersRemovedNonExisting() throws Exception {
- Set<String> nonExisting = ImmutableSet.of("blinder", "passagier");
-
- testGroup.removeMembers(nonExisting.toArray(new String[nonExisting.size()]));
- assertFalse(groupAction.memberIds.iterator().hasNext());
- assertTrue(Iterables.elementsEqual(nonExisting, groupAction.failedIds));
- }
-
- class TestGroupAction extends AbstractGroupAction {
-
- boolean onMemberAddedCalled = false;
- boolean onMembersAddedCalled = false;
- boolean onMemberRemovedCalled = false;
- boolean onMembersRemovedCalled = false;
-
- Group group;
- Set<String> memberIds;
- Set<String> failedIds;
- Authorizable member;
-
- @Override
- public void onMemberAdded(@Nonnull Group group, @Nonnull Authorizable member, @Nonnull Root root, @Nonnull NamePathMapper namePathMapper) throws RepositoryException {
- this.group = group;
- this.member = member;
- onMemberAddedCalled = true;
- }
-
- @Override
- public void onMembersAdded(@Nonnull Group group, @Nonnull Iterable<String> memberIds, @Nonnull Iterable<String> failedIds, @Nonnull Root root, @Nonnull NamePathMapper namePathMapper) throws RepositoryException {
- this.group = group;
- this.memberIds = ImmutableSet.copyOf(memberIds);
- this.failedIds = ImmutableSet.copyOf(failedIds);
- onMembersAddedCalled = true;
- }
-
- @Override
- public void onMemberRemoved(@Nonnull Group group, @Nonnull Authorizable member, @Nonnull Root root, @Nonnull NamePathMapper namePathMapper) throws RepositoryException {
- this.group = group;
- this.member = member;
- onMemberRemovedCalled = true;
- }
-
- @Override
- public void onMembersRemoved(@Nonnull Group group, @Nonnull Iterable<String> memberIds, @Nonnull Iterable<String> failedIds, @Nonnull Root root, @Nonnull NamePathMapper namePathMapper) throws RepositoryException {
- this.group = group;
- this.memberIds = ImmutableSet.copyOf(memberIds);
- this.failedIds = ImmutableSet.copyOf(failedIds);
- onMembersRemovedCalled = true;
- }
+ groupAction.onMembersRemoved(group, ImmutableSet.of("user1", "user2"), ImmutableSet.<String>of(), root, namePathMapper);
}
}
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/CompositeActionProviderTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/CompositeActionProviderTest.java?rev=1785258&r1=1785257&r2=1785258&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/CompositeActionProviderTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/CompositeActionProviderTest.java Fri Mar 3 10:28:08 2017
@@ -20,25 +20,27 @@ import java.util.List;
import javax.annotation.Nonnull;
import com.google.common.collect.ImmutableList;
-import org.apache.jackrabbit.oak.AbstractSecurityTest;
import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
import org.junit.Test;
+import org.mockito.Mockito;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
-public class CompositeActionProviderTest extends AbstractSecurityTest {
+public class CompositeActionProviderTest {
+
+ private final SecurityProvider securityProvider = Mockito.mock(SecurityProvider.class);
@Test
public void testEmpty() {
CompositeActionProvider cap = new CompositeActionProvider();
- assertTrue(cap.getAuthorizableActions(getSecurityProvider()).isEmpty());
+ assertTrue(cap.getAuthorizableActions(securityProvider).isEmpty());
}
@Test
public void testSingle() {
AuthorizableActionProvider aap = new TestAuthorizableActionProvider();
- assertEquals(aap.getAuthorizableActions(getSecurityProvider()), new CompositeActionProvider(aap).getAuthorizableActions(getSecurityProvider()));
+ assertEquals(aap.getAuthorizableActions(securityProvider), new CompositeActionProvider(aap).getAuthorizableActions(securityProvider));
}
@Test
@@ -46,7 +48,7 @@ public class CompositeActionProviderTest
AuthorizableActionProvider aap = new TestAuthorizableActionProvider();
AuthorizableActionProvider aap2 = new TestAuthorizableActionProvider();
- assertEquals(ImmutableList.of(TestAction.INSTANCE, TestAction.INSTANCE), new CompositeActionProvider(aap, aap2).getAuthorizableActions(getSecurityProvider()));
+ assertEquals(ImmutableList.of(TestAction.INSTANCE, TestAction.INSTANCE), new CompositeActionProvider(aap, aap2).getAuthorizableActions(securityProvider));
}
@Test
@@ -54,7 +56,7 @@ public class CompositeActionProviderTest
AuthorizableActionProvider aap = new TestAuthorizableActionProvider();
AuthorizableActionProvider aap2 = new TestAuthorizableActionProvider();
- assertEquals(ImmutableList.of(TestAction.INSTANCE, TestAction.INSTANCE), new CompositeActionProvider(ImmutableList.of(aap, aap2)).getAuthorizableActions(getSecurityProvider()));
+ assertEquals(ImmutableList.of(TestAction.INSTANCE, TestAction.INSTANCE), new CompositeActionProvider(ImmutableList.of(aap, aap2)).getAuthorizableActions(securityProvider));
}
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=1785258&r1=1785257&r2=1785258&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 Fri Mar 3 10:28:08 2017
@@ -20,7 +20,6 @@ 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;
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/PasswordChangeActionTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/PasswordChangeActionTest.java?rev=1785258&r1=1785257&r2=1785258&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/PasswordChangeActionTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/PasswordChangeActionTest.java Fri Mar 3 10:28:08 2017
@@ -16,49 +16,73 @@
*/
package org.apache.jackrabbit.oak.spi.security.user.action;
-import java.util.UUID;
+import javax.annotation.Nullable;
import javax.jcr.nodetype.ConstraintViolationException;
import org.apache.jackrabbit.api.security.user.User;
-import org.apache.jackrabbit.oak.AbstractSecurityTest;
+import org.apache.jackrabbit.oak.api.Root;
+import org.apache.jackrabbit.oak.api.Tree;
+import org.apache.jackrabbit.oak.namepath.NamePathMapper;
+import org.apache.jackrabbit.oak.plugins.memory.PropertyStates;
import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
+import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
+import org.apache.jackrabbit.oak.spi.security.user.UserConstants;
+import org.apache.jackrabbit.oak.spi.security.user.util.PasswordUtil;
import org.junit.Before;
import org.junit.Test;
+import org.mockito.Mockito;
-public class PasswordChangeActionTest extends AbstractSecurityTest {
+import static org.mockito.Mockito.when;
+
+public class PasswordChangeActionTest {
+
+ private static final String USER_PATH = "/userpath";
+
+ private final NamePathMapper namePathMapper = Mockito.mock(NamePathMapper.class);
private PasswordChangeAction pwChangeAction;
+ private User user;
+
@Before
public void before() throws Exception {
- super.before();
pwChangeAction = new PasswordChangeAction();
- pwChangeAction.init(getSecurityProvider(), ConfigurationParameters.EMPTY);
+ pwChangeAction.init(Mockito.mock(SecurityProvider.class), ConfigurationParameters.EMPTY);
+
+ user = Mockito.mock(User.class);
+ when(user.getPath()).thenReturn(USER_PATH);
+ }
+
+ private static Root createRoot(@Nullable String pw) throws Exception {
+ Tree userTree = Mockito.mock(Tree.class);
+ if (pw != null) {
+ String pwHash = PasswordUtil.buildPasswordHash(pw);
+ when(userTree.getProperty(UserConstants.REP_PASSWORD)).thenReturn(PropertyStates.createProperty(UserConstants.REP_PASSWORD, pwHash));
+ }
+ Root root = Mockito.mock(Root.class);
+ when(root.getTree(USER_PATH)).thenReturn(userTree);
+ return root;
}
@Test(expected = ConstraintViolationException.class)
public void testNullPassword() throws Exception {
- pwChangeAction.onPasswordChange(getTestUser(), null, root, getNamePathMapper());
+ pwChangeAction.onPasswordChange(user, null, createRoot(null), namePathMapper);
}
@Test(expected = ConstraintViolationException.class)
public void testSamePassword() throws Exception {
- User user = getTestUser();
- String pw = user.getID();
- pwChangeAction.onPasswordChange(user, pw, root, getNamePathMapper());
+ pwChangeAction.onPasswordChange(user, "pw", createRoot("pw"), namePathMapper);
}
@Test
public void testPasswordChange() throws Exception {
- pwChangeAction.onPasswordChange(getTestUser(), "changedPassword", root, getNamePathMapper());
+ pwChangeAction.onPasswordChange(user, "changedPassword", createRoot("pw"), namePathMapper);
}
@Test
public void testUserWithoutPassword() throws Exception {
- String uid = "testUser" + UUID.randomUUID();
- User user = getUserManager(root).createUser(uid, null);
try {
- pwChangeAction.onPasswordChange(user, "changedPassword", root, getNamePathMapper());
+ pwChangeAction.onPasswordChange(user, "changedPassword", createRoot(null), namePathMapper);
} finally {
user.remove();
}
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/PasswordValidationActionTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/PasswordValidationActionTest.java?rev=1785258&r1=1785257&r2=1785258&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/PasswordValidationActionTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/PasswordValidationActionTest.java Fri Mar 3 10:28:08 2017
@@ -18,91 +18,59 @@ package org.apache.jackrabbit.oak.spi.se
import java.util.ArrayList;
import java.util.List;
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-import javax.jcr.RepositoryException;
import javax.jcr.nodetype.ConstraintViolationException;
-import com.google.common.collect.ImmutableList;
import org.apache.jackrabbit.api.security.user.User;
-import org.apache.jackrabbit.oak.AbstractSecurityTest;
import org.apache.jackrabbit.oak.api.Root;
-import org.apache.jackrabbit.oak.api.Type;
import org.apache.jackrabbit.oak.namepath.NamePathMapper;
import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
-import org.apache.jackrabbit.oak.spi.security.user.UserConfiguration;
-import org.apache.jackrabbit.oak.spi.security.user.UserConstants;
import org.apache.jackrabbit.oak.spi.security.user.util.PasswordUtil;
-import org.junit.After;
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.assertTrue;
import static org.junit.Assert.fail;
-public class PasswordValidationActionTest extends AbstractSecurityTest {
+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 PasswordValidationAction pwAction = new PasswordValidationAction();
- private final TestAction testAction = new TestAction();
- private final AuthorizableActionProvider actionProvider = new AuthorizableActionProvider() {
- @Nonnull
- @Override
- public List<? extends AuthorizableAction> getAuthorizableActions(@Nonnull SecurityProvider securityProvider) {
- return ImmutableList.of(pwAction, testAction);
- }
- };
private User user;
- private User testUser;
@Before
public void before() throws Exception {
- super.before();
-
- user = (User) getUserManager(root).getAuthorizable(adminSession.getAuthInfo().getUserID());
-
- testAction.reset();
- pwAction.init(getSecurityProvider(), ConfigurationParameters.of(
+ user = Mockito.mock(User.class);
+ pwAction.init(securityProvider, ConfigurationParameters.of(
PasswordValidationAction.CONSTRAINT, "^.*(?=.{8,})(?=.*[a-z])(?=.*[A-Z]).*"));
}
- @After
- public void after() throws Exception {
- if (testUser != null) {
- testUser.remove();
- root.commit();
- }
- root = null;
- super.after();
+ @Test
+ public void testOnCreateNullPw() throws Exception {
+ pwAction.onCreate(user, null, root, namePathMapper);
}
- @Override
- protected ConfigurationParameters getSecurityConfigParameters() {
- ConfigurationParameters userParams = ConfigurationParameters.of(
- UserConstants.PARAM_AUTHORIZABLE_ACTION_PROVIDER, actionProvider
- );
- return ConfigurationParameters.of(UserConfiguration.NAME, userParams);
+ @Test(expected = ConstraintViolationException.class)
+ public void testOnCreateInvalidPw() throws Exception {
+ pwAction.onCreate(user, "pw", root, namePathMapper);
}
- @Test
- public void testActionIsCalled() throws Exception {
- testUser = getUserManager(root).createUser("testUser", "testUser12345");
- root.commit();
- assertEquals(1, testAction.onCreateCalled);
-
- testUser.changePassword("pW12345678");
- assertEquals(1, testAction.onPasswordChangeCalled);
+ @Test(expected = ConstraintViolationException.class)
+ public void testOnCreateEmptyPw() throws Exception {
+ pwAction.onCreate(user, "", root, namePathMapper);
+ }
- testUser.changePassword("pW1234567890", "pW12345678");
- assertEquals(2, testAction.onPasswordChangeCalled);
+ @Test
+ public void testOnCreateValidPw() throws Exception {
+ pwAction.onCreate(user, "abCDefGH", root, namePathMapper);
}
@Test
- public void testPasswordValidationAction() throws Exception {
+ public void testPasswordValidationActionInvalid() throws Exception {
List<String> invalid = new ArrayList<String>();
invalid.add("pw1");
invalid.add("only6C");
@@ -112,14 +80,17 @@ public class PasswordValidationActionTes
for (String pw : invalid) {
try {
- pwAction.onPasswordChange(user, pw, root, NamePathMapper.DEFAULT);
+ pwAction.onPasswordChange(user, pw, root, namePathMapper);
fail("should throw constraint violation");
} catch (ConstraintViolationException e) {
// success
}
}
+ }
- List<String> valid = new ArrayList<String>();
+ @Test
+ public void testPasswordValidationActionValid() throws Exception {
+ List<String> valid = new ArrayList();
valid.add("abCDefGH");
valid.add("Abbbbbbbbbbbb");
valid.add("cDDDDDDDDDDDDDDDDD");
@@ -127,57 +98,15 @@ public class PasswordValidationActionTes
valid.add("&)(*&^%23qW");
for (String pw : valid) {
- pwAction.onPasswordChange(user, pw, root, NamePathMapper.DEFAULT);
+ pwAction.onPasswordChange(user, pw, root, namePathMapper);
}
}
- @Test
- public void testPasswordValidationActionOnCreate() throws Exception {
- String hashed = PasswordUtil.buildPasswordHash("DWkej32H");
- testUser = getUserManager(root).createUser("testuser", hashed);
- root.commit();
-
- String pwValue = root.getTree(testUser.getPath()).getProperty(UserConstants.REP_PASSWORD).getValue(Type.STRING);
- assertFalse(PasswordUtil.isPlainTextPassword(pwValue));
- assertTrue(PasswordUtil.isSame(pwValue, hashed));
- }
-
- @Test
+ @Test(expected = ConstraintViolationException.class)
public void testPasswordValidationActionOnChange() throws Exception {
- testUser = getUserManager(root).createUser("testuser", "testPw123456");
- root.commit();
- try {
- pwAction.init(getSecurityProvider(), ConfigurationParameters.of(PasswordValidationAction.CONSTRAINT, "abc"));
-
- String hashed = PasswordUtil.buildPasswordHash("abc");
- testUser.changePassword(hashed);
-
- fail("Password change must always enforce password validation.");
-
- } catch (ConstraintViolationException e) {
- // success
- }
- }
-
- //--------------------------------------------------------------------------
- private class TestAction extends AbstractAuthorizableAction {
+ pwAction.init(securityProvider, ConfigurationParameters.of(PasswordValidationAction.CONSTRAINT, "abc"));
- private int onCreateCalled = 0;
- private int onPasswordChangeCalled = 0;
-
- void reset() {
- onCreateCalled = 0;
- onPasswordChangeCalled = 0;
- }
-
- @Override
- public void onCreate(@Nonnull User user, @Nullable String password, @Nonnull Root root, @Nonnull NamePathMapper namePathMapper) throws RepositoryException {
- onCreateCalled++;
- }
-
- @Override
- public void onPasswordChange(@Nonnull User user, @Nullable String newPassword, @Nonnull Root root, @Nonnull NamePathMapper namePathMapper) throws RepositoryException {
- onPasswordChangeCalled++;
- }
+ String hashed = PasswordUtil.buildPasswordHash("abc");
+ pwAction.onPasswordChange(user, hashed, Mockito.mock(Root.class), Mockito.mock(NamePathMapper.class));
}
}
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/whiteboard/WhiteboardUserAuthenticationFactoryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/whiteboard/WhiteboardUserAuthenticationFactoryTest.java?rev=1785258&r1=1785257&r2=1785258&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/whiteboard/WhiteboardUserAuthenticationFactoryTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/whiteboard/WhiteboardUserAuthenticationFactoryTest.java Fri Mar 3 10:28:08 2017
@@ -22,17 +22,20 @@ import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.jcr.Credentials;
-import org.apache.jackrabbit.oak.AbstractSecurityTest;
import org.apache.jackrabbit.oak.api.Root;
import org.apache.jackrabbit.oak.spi.security.authentication.Authentication;
import org.apache.jackrabbit.oak.spi.security.user.UserAuthenticationFactory;
import org.apache.jackrabbit.oak.spi.security.user.UserConfiguration;
import org.junit.Test;
+import org.mockito.Mockito;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
-public class WhiteboardUserAuthenticationFactoryTest extends AbstractSecurityTest {
+public class WhiteboardUserAuthenticationFactoryTest {
+
+ private final Root root = Mockito.mock(Root.class);
+ private final UserConfiguration userConfiguration = Mockito.mock(UserConfiguration.class);
private WhiteboardUserAuthenticationFactory createFactory(@Nullable final UserAuthenticationFactory defaultFactory,
@Nonnull final String... userIds) {
@@ -48,6 +51,11 @@ public class WhiteboardUserAuthenticatio
};
}
+ @Nonnull
+ private UserConfiguration getUserConfiguration() {
+ return userConfiguration;
+ }
+
@Test
public void testSingleService() throws Exception {
WhiteboardUserAuthenticationFactory factory = createFactory(null, "test");