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 2019/06/21 15:17:25 UTC

svn commit: r1861789 - in /jackrabbit/oak/trunk/oak-core: pom.xml src/test/java/org/apache/jackrabbit/oak/security/authentication/LoginContextProviderImplTest.java

Author: angela
Date: Fri Jun 21 15:17:25 2019
New Revision: 1861789

URL: http://svn.apache.org/viewvc?rev=1861789&view=rev
Log:
OAK-8434 : LoginContextProviderImpl: missing tests for login with configured provider name

Modified:
    jackrabbit/oak/trunk/oak-core/pom.xml
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/LoginContextProviderImplTest.java

Modified: jackrabbit/oak/trunk/oak-core/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/pom.xml?rev=1861789&r1=1861788&r2=1861789&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/pom.xml (original)
+++ jackrabbit/oak/trunk/oak-core/pom.xml Fri Jun 21 15:17:25 2019
@@ -155,13 +155,14 @@
                             <rule>
                                 <element>PACKAGE</element>
                                 <includes>
+                                    <include>org.apache.jackrabbit.oak.security.authentication</include>
+                                    <include>org.apache.jackrabbit.oak.security.authentication.user</include>
+                                    <include>org.apache.jackrabbit.oak.security.authorization</include>
                                     <include>org.apache.jackrabbit.oak.security.principal</include>
+                                    <include>org.apache.jackrabbit.oak.security.privilege</include>
                                     <include>org.apache.jackrabbit.oak.security.user.autosave</include>
-                                    <include>org.apache.jackrabbit.oak.security.authentication.user</include>
                                     <include>org.apache.jackrabbit.oak.security.user.query</include>
                                     <include>org.apache.jackrabbit.oak.security.user.whiteboard</include>
-                                    <include>org.apache.jackrabbit.oak.security.authorization</include>
-                                    <include>org.apache.jackrabbit.oak.security.privilege</include>
                                 </includes>
                                 <excludes>
                                     <exclude>*Test</exclude>
@@ -196,22 +197,6 @@
                                     </limit>
                                 </limits>
                             </rule>
-                            <rule>
-                                <element>PACKAGE</element>
-                                <includes>
-                                    <include>org.apache.jackrabbit.oak.security.authentication</include>
-                                </includes>
-                                <excludes>
-                                    <exclude>*Test</exclude>
-                                </excludes>
-                                <limits>
-                                    <limit>
-                                        <counter>BRANCH</counter>
-                                        <value>COVEREDRATIO</value>
-                                        <minimum>0.90</minimum>
-                                    </limit>
-                                </limits>
-                            </rule>
                         </rules>
                     </configuration>
                 </execution>

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/LoginContextProviderImplTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/LoginContextProviderImplTest.java?rev=1861789&r1=1861788&r2=1861789&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/LoginContextProviderImplTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/LoginContextProviderImplTest.java Fri Jun 21 15:17:25 2019
@@ -18,18 +18,23 @@ package org.apache.jackrabbit.oak.securi
 
 import java.security.Principal;
 import java.security.PrivilegedAction;
+import java.security.Provider;
+import java.security.Security;
 import java.util.HashMap;
 import javax.jcr.GuestCredentials;
 import javax.jcr.SimpleCredentials;
 import javax.security.auth.Subject;
 import javax.security.auth.login.AppConfigurationEntry;
 import javax.security.auth.login.Configuration;
+import javax.security.auth.login.ConfigurationSpi;
 import javax.security.auth.login.LoginException;
 
 import com.google.common.collect.ImmutableSet;
 import org.apache.jackrabbit.oak.AbstractSecurityTest;
+import org.apache.jackrabbit.oak.security.authentication.token.TokenLoginModule;
 import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
 import org.apache.jackrabbit.oak.spi.security.authentication.AuthenticationConfiguration;
+import org.apache.jackrabbit.oak.spi.security.authentication.ConfigurationUtil;
 import org.apache.jackrabbit.oak.spi.security.authentication.GuestLoginModule;
 import org.apache.jackrabbit.oak.spi.security.authentication.JaasLoginContext;
 import org.apache.jackrabbit.oak.spi.security.authentication.LoginContext;
@@ -37,12 +42,16 @@ import org.apache.jackrabbit.oak.spi.sec
 import org.apache.jackrabbit.oak.spi.security.authentication.LoginModuleMonitor;
 import org.apache.jackrabbit.oak.spi.security.authentication.PreAuthContext;
 import org.apache.jackrabbit.oak.spi.whiteboard.DefaultWhiteboard;
+import org.jetbrains.annotations.NotNull;
+import org.junit.After;
 import org.junit.Test;
 
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 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 LoginContextProviderImplTest extends AbstractSecurityTest {
 
@@ -59,6 +68,28 @@ public class LoginContextProviderImplTes
                 getContentRepository(), getSecurityProvider(), new DefaultWhiteboard(), LoginModuleMonitor.NOOP);
     }
 
+    @NotNull
+    private static String addProvider(boolean enableAppName) throws Exception {
+        Provider.Service service = mock(Provider.Service.class);
+        when(service.newInstance(null)).thenReturn(new ConfigurationSpi() {
+            @Override
+            protected AppConfigurationEntry[] engineGetAppConfigurationEntry(String name) {
+                if (enableAppName) {
+                    return new AppConfigurationEntry[]{
+                            new AppConfigurationEntry(GuestLoginModule.class.getName(), AppConfigurationEntry.LoginModuleControlFlag.OPTIONAL, new HashMap<>())
+                    };
+                } else {
+                    return null;
+                }
+            }
+        });
+        String name = "testProvider_"+enableAppName;
+        Provider provider = when(mock(Provider.class).getName()).thenReturn(name).getMock();
+        when(provider.getService("Configuration", "JavaLoginConfig")).thenReturn(service);
+        Security.addProvider(provider);
+        return provider.getName();
+    }
+
     @Test
     public void testGetLoginContext() throws Exception {
         LoginContext ctx = lcProvider.getLoginContext(new SimpleCredentials(getTestUser().getID(), getTestUser().getID().toCharArray()), root.getContentSession().getWorkspaceName());
@@ -79,16 +110,12 @@ public class LoginContextProviderImplTes
     @Test
     public void testGetPreAuthLoginContext() {
         Subject subject = new Subject(true, ImmutableSet.<Principal>of(), ImmutableSet.of(), ImmutableSet.of());
-        LoginContext ctx = Subject.doAs(subject, new PrivilegedAction<LoginContext>() {
-            @Override
-            public LoginContext run() {
-                try {
-                    return lcProvider.getLoginContext(null, null);
-                } catch (LoginException e) {
-                    throw new RuntimeException();
-                }
+        LoginContext ctx = Subject.doAs(subject, (PrivilegedAction<LoginContext>) () -> {
+            try {
+                return lcProvider.getLoginContext(null, null);
+            } catch (LoginException e) {
+                throw new RuntimeException();
             }
-
         });
 
         assertTrue(ctx instanceof PreAuthContext);
@@ -105,6 +132,28 @@ public class LoginContextProviderImplTes
         ctx.login();
     }
 
+    @Test(expected = LoginException.class)
+    public void testGetLoginContextWithIncompleteProvider() throws Exception {
+        String providerName = addProvider(false);
+        ConfigurationParameters params = ConfigurationParameters.of(AuthenticationConfiguration.PARAM_CONFIG_SPI_NAME, providerName);
+        LoginContextProvider provider = newLoginContextProviderImpl(params);
+
+        // no getAppConfigurationEntry not found with configuration
+        LoginContext ctx = provider.getLoginContext(new SimpleCredentials(getTestUser().getID(), getTestUser().getID().toCharArray()), null);
+        ctx.login();
+    }
+
+    @Test
+    public void testGetLoginContextWithCompleteProvider() throws Exception {
+        String providerName = addProvider(true);
+        ConfigurationParameters params = ConfigurationParameters.of(AuthenticationConfiguration.PARAM_CONFIG_SPI_NAME, providerName);
+        LoginContextProvider lcp = newLoginContextProviderImpl(params);
+
+        // as by configured provider -> guest getAppConfigurationEntry found
+        LoginContext ctx = lcp.getLoginContext(null, adminSession.getWorkspaceName());
+        ctx.login();
+    }
+
     @Test
     public void testGetLoginContextWithConfigurationPreset() throws Exception {
         Configuration.setConfiguration(new Configuration() {