You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2016/11/07 16:33:35 UTC
svn commit: r1768548 - in
/sling/trunk/bundles/jcr/repoinit/src/test/java/org/apache/sling/jcr/repoinit:
CreateUsersTest.java impl/TestUtil.java
Author: cziegeler
Date: Mon Nov 7 16:33:35 2016
New Revision: 1768548
URL: http://svn.apache.org/viewvc?rev=1768548&view=rev
Log:
SLING-6219 : Allow to create users with repoinit
Added:
sling/trunk/bundles/jcr/repoinit/src/test/java/org/apache/sling/jcr/repoinit/CreateUsersTest.java (with props)
Modified:
sling/trunk/bundles/jcr/repoinit/src/test/java/org/apache/sling/jcr/repoinit/impl/TestUtil.java
Added: sling/trunk/bundles/jcr/repoinit/src/test/java/org/apache/sling/jcr/repoinit/CreateUsersTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/repoinit/src/test/java/org/apache/sling/jcr/repoinit/CreateUsersTest.java?rev=1768548&view=auto
==============================================================================
--- sling/trunk/bundles/jcr/repoinit/src/test/java/org/apache/sling/jcr/repoinit/CreateUsersTest.java (added)
+++ sling/trunk/bundles/jcr/repoinit/src/test/java/org/apache/sling/jcr/repoinit/CreateUsersTest.java Mon Nov 7 16:33:35 2016
@@ -0,0 +1,98 @@
+/*
+ * 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.sling.jcr.repoinit;
+
+import java.util.Random;
+
+import javax.jcr.RepositoryException;
+
+import org.apache.sling.jcr.repoinit.impl.TestUtil;
+import org.apache.sling.testing.mock.sling.ResourceResolverType;
+import org.apache.sling.testing.mock.sling.junit.SlingContext;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+
+/** Test the creation and delete of users */
+public class CreateUsersTest {
+
+ @Rule
+ public final SlingContext context = new SlingContext(ResourceResolverType.JCR_OAK);
+
+ private static final Random random = new Random(42);
+ private String namePrefix;
+ private TestUtil U;
+
+ @Before
+ public void setup() throws RepositoryException {
+ U = new TestUtil(context);
+ namePrefix = "user_" + random.nextInt();
+ }
+
+ @Test
+ public void createDeleteSingleTest() throws Exception {
+ final String userId = namePrefix + "_cdst";
+ U.assertUser("at start of test", userId, false);
+ U.parseAndExecute("create user " + userId);
+ U.assertUser("after creating user", userId, true);
+ U.parseAndExecute("delete user " + userId);
+ U.assertUser("after deleting user", userId, false);
+ }
+
+ private String user(int index) {
+ return namePrefix + "_" + index;
+ }
+
+ @Test
+ public void createUserMultipleTimes() throws Exception {
+ final String username = namePrefix + "_multiple";
+ U.assertUser("before test", username, false);
+ final String input = "create user " + username;
+ for(int i=0; i < 50; i++) {
+ U.parseAndExecute(input);
+ }
+ U.assertUser("after creating it multiple times", username, true);
+ }
+
+ @Test
+ public void createDeleteMultipleTest() throws Exception {
+ final int n = 50;
+
+ {
+ final StringBuilder input = new StringBuilder();
+ for(int i=0; i < n; i++) {
+ U.assertUser("at start of test", user(i), false);
+ input.append("create user ").append(user(i)).append("\n");
+ }
+ U.parseAndExecute(input.toString());
+ }
+
+ {
+ final StringBuilder input = new StringBuilder();
+ for(int i=0; i < n; i++) {
+ U.assertUser("before deleting user", user(i), true);
+ input.append("delete user ").append(user(i)).append("\n");
+ }
+ U.parseAndExecute(input.toString());
+ }
+
+
+ for(int i=0; i < n; i++) {
+ U.assertUser("after deleting users", user(i), false);
+ }
+ }
+}
Propchange: sling/trunk/bundles/jcr/repoinit/src/test/java/org/apache/sling/jcr/repoinit/CreateUsersTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: sling/trunk/bundles/jcr/repoinit/src/test/java/org/apache/sling/jcr/repoinit/CreateUsersTest.java
------------------------------------------------------------------------------
svn:keywords = author date id revision rev url
Modified: sling/trunk/bundles/jcr/repoinit/src/test/java/org/apache/sling/jcr/repoinit/impl/TestUtil.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/repoinit/src/test/java/org/apache/sling/jcr/repoinit/impl/TestUtil.java?rev=1768548&r1=1768547&r2=1768548&view=diff
==============================================================================
--- sling/trunk/bundles/jcr/repoinit/src/test/java/org/apache/sling/jcr/repoinit/impl/TestUtil.java (original)
+++ sling/trunk/bundles/jcr/repoinit/src/test/java/org/apache/sling/jcr/repoinit/impl/TestUtil.java Mon Nov 7 16:33:35 2016
@@ -16,8 +16,10 @@
*/
package org.apache.sling.jcr.repoinit.impl;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.io.Reader;
@@ -40,18 +42,18 @@ import org.apache.sling.testing.mock.sli
/** Test utilities */
public class TestUtil {
-
+
public static final String JCR_PRIMARY_TYPE = "jcr:primaryType";
public final Session adminSession;
public final String id;
public final String username;
-
+
public TestUtil(SlingContext ctx) {
adminSession = ctx.resourceResolver().adaptTo(Session.class);
id = UUID.randomUUID().toString();
username = "user_" + id;
}
-
+
public List<Operation> parse(String input) throws RepoInitParsingException {
final Reader r = new StringReader(input);
try {
@@ -61,6 +63,17 @@ public class TestUtil {
}
}
+ public void assertUser(String info, String id, boolean expectToExist) throws RepositoryException {
+ final Authorizable a = UserUtil.getUserManager(adminSession).getAuthorizable(id);
+ if(!expectToExist) {
+ assertNull(info + ", expecting Principal to be absent:" + id, a);
+ } else {
+ assertNotNull(info + ", expecting Principal to exist:" + id, a);
+ final User u = (User)a;
+ assertFalse(info + ", expecting Principal to be a plain user:" + id, u.isSystemUser());
+ }
+ }
+
public void assertServiceUser(String info, String id, boolean expectToExist) throws RepositoryException {
final Authorizable a = UserUtil.getUserManager(adminSession).getAuthorizable(id);
if(!expectToExist) {
@@ -68,14 +81,14 @@ public class TestUtil {
} else {
assertNotNull(info + ", expecting Principal to exist:" + id, a);
final User u = (User)a;
- assertNotNull(info + ", expecting Principal to be a System user:" + id, u.isSystemUser());
+ assertTrue(info + ", expecting Principal to be a System user:" + id, u.isSystemUser());
}
}
-
+
public void assertNodeExists(String path) throws RepositoryException {
assertNodeExists(path, null);
}
-
+
public void assertNodeExists(String path, String primaryType) throws RepositoryException {
if(!adminSession.nodeExists(path)) {
fail("Node does not exist:" + path);
@@ -91,31 +104,31 @@ public class TestUtil {
}
}
}
-
+
public void parseAndExecute(String input) throws RepositoryException, RepoInitParsingException {
final JcrRepoInitOpsProcessorImpl p = new JcrRepoInitOpsProcessorImpl();
p.apply(adminSession, parse(input));
adminSession.save();
}
-
+
public void cleanupUser() throws RepositoryException, RepoInitParsingException {
parseAndExecute("delete service user " + username);
assertServiceUser("in cleanupUser()", username, false);
}
-
+
public Session loginService(String serviceUsername) throws RepositoryException {
final SimpleCredentials cred = new SimpleCredentials(serviceUsername, new char[0]);
return adminSession.impersonate(cred);
}
-
+
public Session getAdminSession() {
return adminSession;
}
-
+
public void cleanup() {
adminSession.logout();
}
-
+
public String getTestCndStatement(String nsPrefix, String nsURI) throws RepositoryException, RepoInitParsingException {
return "register nodetypes\n"
+ "<<===\n"
@@ -123,7 +136,7 @@ public class TestUtil {
+ "===>>\n"
;
}
-
+
public String getTestCND(String nsPrefix, String nsURI) {
return "<" + nsPrefix + "='" + nsURI + "'>\n"
+ "[" + nsPrefix + ":foo] > nt:unstructured\n";