From 208e73a37a344ab60d42b6071636af019123d4ed Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Tue, 1 Dec 2015 16:02:15 +0000 Subject: [PATCH] Improve Jackrabbit testing git-svn-id: https://svn.argeo.org/commons/trunk@8672 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- .../JackrabbitAdminLoginModule.java | 47 +++++++++++++++++++ .../src/org/argeo/jackrabbit/unit/jaas.config | 4 +- .../argeo/jcr/unit/AbstractJcrTestCase.java | 2 +- 3 files changed, 50 insertions(+), 3 deletions(-) create mode 100644 org.argeo.server.jcr/src/org/argeo/jackrabbit/JackrabbitAdminLoginModule.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 index 000000000..7e17dbca1 --- /dev/null +++ b/org.argeo.server.jcr/src/org/argeo/jackrabbit/JackrabbitAdminLoginModule.java @@ -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 sharedState, Map 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; + } + +} diff --git a/org.argeo.server.jcr/src/org/argeo/jackrabbit/unit/jaas.config b/org.argeo.server.jcr/src/org/argeo/jackrabbit/unit/jaas.config index 5f034efb7..11d2f96cf 100644 --- a/org.argeo.server.jcr/src/org/argeo/jackrabbit/unit/jaas.config +++ b/org.argeo.server.jcr/src/org/argeo/jackrabbit/unit/jaas.config @@ -1,5 +1,5 @@ -TEST_SYSTEM { - org.argeo.security.core.SystemLoginModule requisite; +TEST_JACKRABBIT_ADMIN { + org.argeo.jackrabbit.JackrabbitAdminLoginModule requisite; }; Jackrabbit { diff --git a/org.argeo.server.jcr/src/org/argeo/jcr/unit/AbstractJcrTestCase.java b/org.argeo.server.jcr/src/org/argeo/jcr/unit/AbstractJcrTestCase.java index 1d9eedc4d..db8d70d39 100644 --- a/org.argeo.server.jcr/src/org/argeo/jcr/unit/AbstractJcrTestCase.java +++ b/org.argeo.server.jcr/src/org/argeo/jcr/unit/AbstractJcrTestCase.java @@ -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; -- 2.30.2