Improve Jackrabbit testing
authorMathieu Baudier <mbaudier@argeo.org>
Tue, 1 Dec 2015 16:02:15 +0000 (16:02 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Tue, 1 Dec 2015 16:02:15 +0000 (16:02 +0000)
git-svn-id: https://svn.argeo.org/commons/trunk@8672 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

org.argeo.server.jcr/src/org/argeo/jackrabbit/JackrabbitAdminLoginModule.java [new file with mode: 0644]
org.argeo.server.jcr/src/org/argeo/jackrabbit/unit/jaas.config
org.argeo.server.jcr/src/org/argeo/jcr/unit/AbstractJcrTestCase.java

diff --git a/org.argeo.server.jcr/src/org/argeo/jackrabbit/JackrabbitAdminLoginModule.java b/org.argeo.server.jcr/src/org/argeo/jackrabbit/JackrabbitAdminLoginModule.java
new file mode 100644 (file)
index 0000000..7e17dbc
--- /dev/null
@@ -0,0 +1,47 @@
+package org.argeo.jackrabbit;
+
+import java.util.Map;
+
+import javax.security.auth.Subject;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.login.LoginException;
+import javax.security.auth.spi.LoginModule;
+
+import org.apache.jackrabbit.core.security.SecurityConstants;
+import org.apache.jackrabbit.core.security.principal.AdminPrincipal;
+
+public class JackrabbitAdminLoginModule implements LoginModule {
+       private Subject subject;
+
+       @Override
+       public void initialize(Subject subject, CallbackHandler callbackHandler,
+                       Map<String, ?> sharedState, Map<String, ?> options) {
+               this.subject = subject;
+       }
+
+       @Override
+       public boolean login() throws LoginException {
+               // TODO check permission?
+               return true;
+       }
+
+       @Override
+       public boolean commit() throws LoginException {
+               subject.getPrincipals().add(
+                               new AdminPrincipal(SecurityConstants.ADMIN_ID));
+               return true;
+       }
+
+       @Override
+       public boolean abort() throws LoginException {
+               return true;
+       }
+
+       @Override
+       public boolean logout() throws LoginException {
+               subject.getPrincipals().removeAll(
+                               subject.getPrincipals(AdminPrincipal.class));
+               return true;
+       }
+
+}
index 5f034efb7fc0f00ccd3830d051787a260d6fd0c1..11d2f96cf44a0d0adbe7183a0c10e526adbc3a46 100644 (file)
@@ -1,5 +1,5 @@
-TEST_SYSTEM {
-   org.argeo.security.core.SystemLoginModule requisite;
+TEST_JACKRABBIT_ADMIN {
+   org.argeo.jackrabbit.JackrabbitAdminLoginModule requisite;
 };
 
 Jackrabbit {
index 1d9eedc4d880826210df15837de507dfe63d8688..db8d70d391119dc00253e41167056fab38b5cd14 100644 (file)
@@ -39,7 +39,7 @@ public abstract class AbstractJcrTestCase extends TestCase {
        private Repository repository;
        private Session session = null;
 
-       public final static String LOGIN_CONTEXT_TEST_SYSTEM = "TEST_SYSTEM";
+       public final static String LOGIN_CONTEXT_TEST_SYSTEM = "TEST_JACKRABBIT_ADMIN";
 
        // protected abstract File getRepositoryFile() throws Exception;