[java-shib-attribute] branch main updated: Use new shared InMemoryDirectory.

Daniel Fisher dfisher at vt.edu
Fri Nov 11 19:27:46 UTC 2022


This is an automated email from the git hooks/post-receive script.

dfisher pushed a commit to branch main
in repository java-shib-attribute.

View the commit online:
http://git.shibboleth.net/view/?p=java-shib-attribute.git;a=commit;h=9a77187d2b183657c01262381e4021f28f433710

The following commit(s) were added to refs/heads/main by this push:
     new 9a77187d2 Use new shared InMemoryDirectory.
9a77187d2 is described below

commit 9a77187d2b183657c01262381e4021f28f433710
Author: Daniel Fisher <dfisher at vt.edu>
AuthorDate: Fri Nov 11 13:50:38 2022 -0500

    Use new shared InMemoryDirectory.
---
 shib-attribute-resolver-impl/pom.xml               |  7 +-
 .../dc/ldap/impl/LDAPDataConnectorTest.java        | 33 ++++-----
 .../resolver/dc/ldap/impl/Regressions.java         | 33 ++++-----
 shib-attribute-resolver-spring/pom.xml             |  6 --
 .../resolver/spring/AttributeResolverTest.java     | 27 ++++----
 .../idp/attribute/resolver/spring/IdP1676Test.java | 35 +++++-----
 .../dc/ldap/impl/LDAPDataConnectorParserTest.java  | 80 ++++------------------
 .../failfast/AttributeResolverFailFastTest.java    | 44 +++++-------
 8 files changed, 86 insertions(+), 179 deletions(-)

diff --git a/shib-attribute-resolver-impl/pom.xml b/shib-attribute-resolver-impl/pom.xml
index a1a8078d0..e60660841 100644
--- a/shib-attribute-resolver-impl/pom.xml
+++ b/shib-attribute-resolver-impl/pom.xml
@@ -170,12 +170,7 @@
             <artifactId>hsqldb</artifactId>
             <scope>test</scope>
         </dependency>
-        <dependency>
-            <groupId>com.unboundid</groupId>
-            <artifactId>unboundid-ldapsdk</artifactId>
-            <scope>test</scope>
-        </dependency>
-    
+
         <dependency>
             <groupId>${spring.groupId}</groupId>
             <artifactId>spring-core</artifactId>
diff --git a/shib-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/dc/ldap/impl/LDAPDataConnectorTest.java b/shib-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/dc/ldap/impl/LDAPDataConnectorTest.java
index 6a4858bc7..3ea77ff35 100644
--- a/shib-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/dc/ldap/impl/LDAPDataConnectorTest.java
+++ b/shib-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/dc/ldap/impl/LDAPDataConnectorTest.java
@@ -36,15 +36,11 @@ import org.ldaptive.ConnectionFactory;
 import org.ldaptive.DefaultConnectionFactory;
 import org.ldaptive.SearchOperation;
 import org.ldaptive.SearchRequest;
+import org.springframework.core.io.ClassPathResource;
 import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
-import com.unboundid.ldap.listener.InMemoryDirectoryServer;
-import com.unboundid.ldap.listener.InMemoryDirectoryServerConfig;
-import com.unboundid.ldap.listener.InMemoryListenerConfig;
-import com.unboundid.ldap.sdk.LDAPException;
-
 import net.shibboleth.idp.attribute.EmptyAttributeValue;
 import net.shibboleth.idp.attribute.EmptyAttributeValue.EmptyType;
 import net.shibboleth.idp.attribute.IdPAttribute;
@@ -64,6 +60,7 @@ import net.shibboleth.idp.attribute.resolver.testing.TestSources;
 import net.shibboleth.shared.component.ComponentInitializationException;
 import net.shibboleth.shared.component.UninitializedComponentException;
 import net.shibboleth.shared.component.UnmodifiableComponentException;
+import net.shibboleth.shared.testing.InMemoryDirectory;
 import net.shibboleth.shared.testing.VelocityEngine;
 
 /**
@@ -82,30 +79,26 @@ public class LDAPDataConnectorTest {
     private static final String[] TEST_RETURN_ATTRIBUTES = new String[] {"cn", "sn", "uid", "mail"};
 
     /** In-memory directory server. */
-    private InMemoryDirectoryServer directoryServer;
+    private InMemoryDirectory directoryServer;
 
     /**
-     * Creates an UnboundID in-memory directory server. Leverages LDIF found in test resources.
-     * 
-     * @throws LDAPException if the in-memory directory server cannot be created
+     * Creates an in-memory directory server. Leverages LDIF found in test resources.
      */
-    @BeforeClass public void setupDirectoryServer() throws LDAPException {
-
-        final InMemoryDirectoryServerConfig config = new InMemoryDirectoryServerConfig("dc=shibboleth,dc=net");
-        config.setListenerConfigs(InMemoryListenerConfig.createLDAPConfig("default", 10389));
-        config.addAdditionalBindCredentials("cn=Directory Manager", "password");
-        directoryServer = new InMemoryDirectoryServer(config);
-        directoryServer
-                .importFromLDIF(true,
-                        "src/test/resources/net/shibboleth/idp/attribute/resolver/impl/dc/ldap/ldapDataConnectorTest.ldif");
-        directoryServer.startListening();
+    @BeforeClass public void setupDirectoryServer() {
+        directoryServer =
+            new InMemoryDirectory(
+                new String[] {"dc=shibboleth,dc=net"},
+                new ClassPathResource("/net/shibboleth/idp/attribute/resolver/impl/dc/ldap/ldapDataConnectorTest.ldif"),
+                10389);
+        directoryServer.start();
     }
 
     /**
      * Shutdown the in-memory directory server.
      */
     @AfterClass public void teardownDirectoryServer() {
-        directoryServer.shutDown(true);
+        assertEquals(directoryServer.openConnectionCount(), 0);
+        directoryServer.stop(true);
     }
 
     /**
diff --git a/shib-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/dc/ldap/impl/Regressions.java b/shib-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/dc/ldap/impl/Regressions.java
index 72710b017..92e138e71 100644
--- a/shib-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/dc/ldap/impl/Regressions.java
+++ b/shib-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/dc/ldap/impl/Regressions.java
@@ -27,15 +27,11 @@ import org.ldaptive.ConnectionFactory;
 import org.ldaptive.DefaultConnectionFactory;
 import org.ldaptive.SearchOperation;
 import org.ldaptive.SearchRequest;
+import org.springframework.core.io.ClassPathResource;
 import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
-import com.unboundid.ldap.listener.InMemoryDirectoryServer;
-import com.unboundid.ldap.listener.InMemoryDirectoryServerConfig;
-import com.unboundid.ldap.listener.InMemoryListenerConfig;
-import com.unboundid.ldap.sdk.LDAPException;
-
 import net.shibboleth.idp.attribute.EmptyAttributeValue;
 import net.shibboleth.idp.attribute.EmptyAttributeValue.EmptyType;
 import net.shibboleth.idp.attribute.IdPAttribute;
@@ -50,6 +46,7 @@ import net.shibboleth.idp.attribute.resolver.dc.ldap.SearchResultMappingStrategy
 import net.shibboleth.idp.attribute.resolver.dc.ldap.StringAttributeValueMappingStrategy;
 import net.shibboleth.idp.attribute.resolver.testing.TestSources;
 import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.testing.InMemoryDirectory;
 
 @SuppressWarnings("javadoc")
 public class Regressions {
@@ -65,31 +62,27 @@ public class Regressions {
 
     
     /** In-memory directory server. */
-    private InMemoryDirectoryServer directoryServer;
+    private InMemoryDirectory directoryServer;
 
     
     /**
-     * Creates an UnboundID in-memory directory server. Leverages LDIF found in test resources.
-     * 
-     * @throws LDAPException if the in-memory directory server cannot be created
+     * Creates an in-memory directory server. Leverages LDIF found in test resources.
      */
-    @BeforeClass public void setupDirectoryServer() throws LDAPException {
-
-        final InMemoryDirectoryServerConfig config = new InMemoryDirectoryServerConfig("dc=shibboleth,dc=net");
-        config.setListenerConfigs(InMemoryListenerConfig.createLDAPConfig("default", 10390));
-        config.addAdditionalBindCredentials("cn=Directory Manager", "password");
-        directoryServer = new InMemoryDirectoryServer(config);
-        directoryServer
-                .importFromLDIF(true,
-                        "src/test/resources/net/shibboleth/idp/attribute/resolver/impl/dc/ldap/ldapDataConnectorTestEmpty.ldif");
-        directoryServer.startListening();
+    @BeforeClass public void setupDirectoryServer() {
+        directoryServer =
+            new InMemoryDirectory(
+                new String[] {"dc=shibboleth,dc=net"},
+                new ClassPathResource("/net/shibboleth/idp/attribute/resolver/impl/dc/ldap/ldapDataConnectorTestEmpty.ldif"),
+                10390);
+        directoryServer.start();
     }
 
     /**
      * Shutdown the in-memory directory server.
      */
     @AfterClass public void teardownDirectoryServer() {
-        directoryServer.shutDown(true);
+        assertEquals(directoryServer.openConnectionCount(), 0);
+        directoryServer.stop(true);
     }
 
     /**
diff --git a/shib-attribute-resolver-spring/pom.xml b/shib-attribute-resolver-spring/pom.xml
index 5d4c64a88..1b7693c02 100644
--- a/shib-attribute-resolver-spring/pom.xml
+++ b/shib-attribute-resolver-spring/pom.xml
@@ -178,12 +178,6 @@
             <scope>test</scope>
         </dependency>
         
-        <dependency>
-            <groupId>com.unboundid</groupId>
-            <artifactId>unboundid-ldapsdk</artifactId>
-            <scope>test</scope>
-        </dependency>
-
         <dependency>
             <groupId>${spring.groupId}</groupId>
             <artifactId>spring-test</artifactId>
diff --git a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/AttributeResolverTest.java b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/AttributeResolverTest.java
index e86e8f539..9f7bcd89f 100644
--- a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/AttributeResolverTest.java
+++ b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/AttributeResolverTest.java
@@ -45,11 +45,6 @@ import org.testng.annotations.AfterMethod;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
-import com.unboundid.ldap.listener.InMemoryDirectoryServer;
-import com.unboundid.ldap.listener.InMemoryDirectoryServerConfig;
-import com.unboundid.ldap.listener.InMemoryListenerConfig;
-import com.unboundid.ldap.sdk.LDAPException;
-
 import net.shibboleth.idp.attribute.IdPAttribute;
 import net.shibboleth.idp.attribute.IdPAttributeValue;
 import net.shibboleth.idp.attribute.StringAttributeValue;
@@ -70,6 +65,7 @@ import net.shibboleth.shared.spring.config.StringToDurationConverter;
 import net.shibboleth.shared.spring.config.StringToResourceConverter;
 import net.shibboleth.shared.spring.custom.SchemaTypeAwareXMLBeanDefinitionReader;
 import net.shibboleth.shared.testing.DatabaseTestingSupport;
+import net.shibboleth.shared.testing.InMemoryDirectory;
 
 /** A work in progress to test the attribute resolver service. */
 @SuppressWarnings("javadoc")
@@ -79,10 +75,10 @@ public class AttributeResolverTest extends OpenSAMLInitBaseTestCase {
     private final Logger log = LoggerFactory.getLogger(AttributeResolverTest.class);
 
     /* LDAP */
-    private InMemoryDirectoryServer directoryServer;
+    private InMemoryDirectory directoryServer;
 
     private static final String LDAP_INIT_FILE =
-            "src/test/resources/net/shibboleth/idp/attribute/resolver/spring/ldapDataConnectorTest.ldif";
+            "/net/shibboleth/idp/attribute/resolver/spring/ldapDataConnectorTest.ldif";
 
     /** DataBase initialise */
     private static final String DB_INIT_FILE = "/net/shibboleth/idp/attribute/resolver/spring/RdbmsStore.sql";
@@ -107,14 +103,14 @@ public class AttributeResolverTest extends OpenSAMLInitBaseTestCase {
         pendingTeardownContext = context;
     }
 
-    @BeforeClass public void setupDataConnectors() throws LDAPException {
+    @BeforeClass public void setupDataConnectors() {
         // LDAP
-        final InMemoryDirectoryServerConfig config = new InMemoryDirectoryServerConfig("dc=shibboleth,dc=net");
-        config.setListenerConfigs(InMemoryListenerConfig.createLDAPConfig("default", 10391));
-        config.addAdditionalBindCredentials("cn=Directory Manager", "password");
-        directoryServer = new InMemoryDirectoryServer(config);
-        directoryServer.importFromLDIF(true, LDAP_INIT_FILE);
-        directoryServer.startListening();
+        directoryServer =
+            new InMemoryDirectory(
+                new String[] {"dc=shibboleth,dc=net"},
+                new ClassPathResource(LDAP_INIT_FILE),
+                10391);
+        directoryServer.start();
 
         // RDBMS
         datasource = DatabaseTestingSupport.GetMockDataSource(DB_INIT_FILE, "myTestDB");
@@ -126,7 +122,8 @@ public class AttributeResolverTest extends OpenSAMLInitBaseTestCase {
      * Shutdown the in-memory directory server.
      */
     @AfterClass public void teardownDataConnectors() {
-        directoryServer.shutDown(true);
+        assertEquals(directoryServer.openConnectionCount(), 0);
+        directoryServer.stop(true);
     }
     
     private ReloadableService<AttributeResolver> getResolver(final String file) {
diff --git a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/IdP1676Test.java b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/IdP1676Test.java
index cba278502..65b90db45 100644
--- a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/IdP1676Test.java
+++ b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/IdP1676Test.java
@@ -30,16 +30,12 @@ import org.springframework.context.support.ConversionServiceFactoryBean;
 import org.springframework.context.support.GenericApplicationContext;
 import org.springframework.core.env.MutablePropertySources;
 import org.springframework.core.env.StandardEnvironment;
+import org.springframework.core.io.ClassPathResource;
 import org.springframework.mock.env.MockPropertySource;
 import org.testng.annotations.AfterClass;
 import org.testng.annotations.AfterMethod;
 import org.testng.annotations.Test;
 
-import com.unboundid.ldap.listener.InMemoryDirectoryServer;
-import com.unboundid.ldap.listener.InMemoryDirectoryServerConfig;
-import com.unboundid.ldap.listener.InMemoryListenerConfig;
-import com.unboundid.ldap.sdk.LDAPException;
-
 import net.shibboleth.idp.attribute.resolver.AttributeResolver;
 import net.shibboleth.idp.attribute.resolver.ResolutionException;
 import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
@@ -51,15 +47,16 @@ import net.shibboleth.shared.service.ServiceableComponent;
 import net.shibboleth.shared.spring.config.IdentifiableBeanPostProcessor;
 import net.shibboleth.shared.spring.config.StringToDurationConverter;
 import net.shibboleth.shared.spring.custom.SchemaTypeAwareXMLBeanDefinitionReader;
+import net.shibboleth.shared.testing.InMemoryDirectory;
 
 @SuppressWarnings("javadoc")
 public class IdP1676Test extends OpenSAMLInitBaseTestCase {
 
     /* LDAP */
-    private InMemoryDirectoryServer directoryServer;
+    private InMemoryDirectory directoryServer;
 
     private static final String LDAP_INIT_FILE =
-            "src/test/resources/net/shibboleth/idp/attribute/resolver/spring/ldapDataConnectorTest.ldif";
+            "/net/shibboleth/idp/attribute/resolver/spring/ldapDataConnectorTest.ldif";
     
     private GenericApplicationContext pendingTeardownContext = null;
     
@@ -80,15 +77,15 @@ public class IdP1676Test extends OpenSAMLInitBaseTestCase {
         pendingTeardownContext = context;
     }
 
-    protected synchronized void connectorOn() throws LDAPException {
+    protected synchronized void connectorOn() {
         if (directoryServer == null) {
             // LDAP
-            final InMemoryDirectoryServerConfig config = new InMemoryDirectoryServerConfig("dc=shibboleth,dc=net");
-            config.setListenerConfigs(InMemoryListenerConfig.createLDAPConfig("default", 10391));
-            config.addAdditionalBindCredentials("cn=Directory Manager", "password");
-            directoryServer = new InMemoryDirectoryServer(config);
-            directoryServer.importFromLDIF(true, LDAP_INIT_FILE);
-            directoryServer.startListening();
+            directoryServer =
+                new InMemoryDirectory(
+                    new String[] {"dc=shibboleth,dc=net"},
+                    new ClassPathResource(LDAP_INIT_FILE),
+                    10391);
+            directoryServer.start();
         }
     }
     
@@ -97,7 +94,7 @@ public class IdP1676Test extends OpenSAMLInitBaseTestCase {
      */
    public synchronized void connectorOff() {
        if (directoryServer != null) {
-           directoryServer.shutDown(true);
+           directoryServer.stop(true);
        }
        directoryServer = null;
     }
@@ -149,7 +146,7 @@ public class IdP1676Test extends OpenSAMLInitBaseTestCase {
     }
 
 
-    @Test public void failFast() throws LDAPException, ComponentInitializationException, ResolutionException {
+    @Test public void failFast() throws ComponentInitializationException, ResolutionException {
         connectorOff();
         ReloadableService<AttributeResolver> resolverService = getResolver(true, true);
         assertNull(resolverService.getServiceableComponent());
@@ -166,7 +163,7 @@ public class IdP1676Test extends OpenSAMLInitBaseTestCase {
         }
     }
     
-    @Test public void failFastNoPE() throws LDAPException, ComponentInitializationException, ResolutionException {
+    @Test public void failFastNoPE() throws ComponentInitializationException, ResolutionException {
         connectorOff();
         ReloadableService<AttributeResolver> resolverService = getResolver(true, false);
         assertNull(resolverService.getServiceableComponent());
@@ -179,7 +176,7 @@ public class IdP1676Test extends OpenSAMLInitBaseTestCase {
         connectorOff();
     }
 
-    @Test public void normal() throws LDAPException, ComponentInitializationException, ResolutionException, InterruptedException {
+    @Test public void normal() throws ComponentInitializationException, ResolutionException, InterruptedException {
         connectorOn();
         ReloadableService<AttributeResolver> resolverService = getResolver(false, true);
         testResolve(resolverService, 7);
@@ -201,7 +198,7 @@ public class IdP1676Test extends OpenSAMLInitBaseTestCase {
         testResolve(resolverService, 7);        
     }
     
-    @Test public void normalNoPE() throws LDAPException, ComponentInitializationException, ResolutionException, InterruptedException {
+    @Test public void normalNoPE() throws ComponentInitializationException, ResolutionException, InterruptedException {
         connectorOn();
         ReloadableService<AttributeResolver> resolverService = getResolver(false, false);
         testResolve(resolverService, 7);
diff --git a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/impl/LDAPDataConnectorParserTest.java b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/impl/LDAPDataConnectorParserTest.java
index e0de74607..ea4714df1 100644
--- a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/impl/LDAPDataConnectorParserTest.java
+++ b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/impl/LDAPDataConnectorParserTest.java
@@ -24,14 +24,13 @@ import static org.testng.Assert.assertNull;
 import static org.testng.Assert.assertTrue;
 
 import java.io.IOException;
-import java.security.GeneralSecurityException;
 import java.time.Duration;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 import java.util.stream.Collectors;
 
 import org.ldaptive.BindConnectionInitializer;
@@ -67,21 +66,6 @@ import org.testng.annotations.Test;
 
 import com.google.common.cache.Cache;
 import com.google.common.cache.CacheBuilder;
-import com.unboundid.asn1.ASN1OctetString;
-import com.unboundid.ldap.listener.InMemoryDirectoryServer;
-import com.unboundid.ldap.listener.InMemoryDirectoryServerConfig;
-import com.unboundid.ldap.listener.InMemoryListenerConfig;
-import com.unboundid.ldap.listener.InMemoryRequestHandler;
-import com.unboundid.ldap.listener.InMemorySASLBindHandler;
-import com.unboundid.ldap.sdk.BindResult;
-import com.unboundid.ldap.sdk.Control;
-import com.unboundid.ldap.sdk.DN;
-import com.unboundid.ldap.sdk.LDAPException;
-import com.unboundid.ldap.sdk.LDAPResult;
-import com.unboundid.ldap.sdk.ResultCode;
-import com.unboundid.util.ssl.KeyStoreKeyManager;
-import com.unboundid.util.ssl.SSLUtil;
-import com.unboundid.util.ssl.TrustStoreTrustManager;
 
 import net.shibboleth.idp.attribute.IdPAttribute;
 import net.shibboleth.idp.attribute.resolver.ResolutionException;
@@ -94,6 +78,7 @@ import net.shibboleth.idp.attribute.resolver.testing.TestSources;
 import net.shibboleth.shared.spring.context.FilesystemGenericApplicationContext;
 import net.shibboleth.shared.spring.resource.PreferFileSystemResourceLoader;
 import net.shibboleth.shared.spring.util.ApplicationContextBuilder;
+import net.shibboleth.shared.testing.InMemoryDirectory;
 
 
 /** Test for {@link LDAPDataConnectorParser}. */
@@ -101,7 +86,7 @@ import net.shibboleth.shared.spring.util.ApplicationContextBuilder;
 public class LDAPDataConnectorParserTest {
 
     /** In-memory directory server. */
-    private InMemoryDirectoryServer directoryServer;
+    private InMemoryDirectory directoryServer;
     
     private GenericApplicationContext pendingTeardownContext = null;
 
@@ -129,54 +114,17 @@ public class LDAPDataConnectorParserTest {
     }
 
     /**
-     * Creates an UnboundID in-memory directory server. Leverages LDIF found in test resources.
-     * 
-     * @throws LDAPException if the in-memory directory server cannot be created
-     * @throws GeneralSecurityException if the startTLS keystore or truststore cannot be loaded
+     * Creates an in-memory directory server. Leverages LDIF found in test resources.
      */
-    @BeforeClass public void setupDirectoryServer() throws LDAPException, GeneralSecurityException {
-        final InMemoryDirectoryServerConfig config = new InMemoryDirectoryServerConfig("dc=shibboleth,dc=net");
-        final SSLUtil sslUtil =
-                new SSLUtil(new KeyStoreKeyManager(
-                        "src/test/resources/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/server.keystore",
-                        "changeit".toCharArray()), new TrustStoreTrustManager(
-                        "src/test/resources/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/client.keystore",
-                        "changeit".toCharArray(), "JKS", false));
-        config.setListenerConfigs(InMemoryListenerConfig.createLDAPConfig("default", null, 10389,
-                sslUtil.createSSLSocketFactory()));
-        config.addAdditionalBindCredentials("cn=Directory Manager", "password");
-        config.addSASLBindHandler(new InMemorySASLBindHandler() {
-            @Override
-            public String getSASLMechanismName() {
-                return "DIGEST-MD5";
-            }
-
-            @Override
-            public BindResult processSASLBind(final InMemoryRequestHandler handler, final int messageID,
-                                              final DN bindDN, final ASN1OctetString credentials,
-                                              final List<Control> controls) {
-              // return success for all digest MD5 bind requests
-              return new BindResult(new LDAPResult(messageID, ResultCode.SUCCESS));
-            }
-        });
-        config.addSASLBindHandler(new InMemorySASLBindHandler() {
-            @Override
-            public String getSASLMechanismName() {
-                return "EXTERNAL";
-            }
-
-            @Override
-            public BindResult processSASLBind(final InMemoryRequestHandler handler, final int messageID,
-                                              final DN bindDN, final ASN1OctetString credentials,
-                                              final List<Control> controls) {
-                // return success for all EXTERNAL bind requests
-                return new BindResult(new LDAPResult(messageID, ResultCode.SUCCESS));
-            }
-        });
-        directoryServer = new InMemoryDirectoryServer(config);
-        directoryServer.importFromLDIF(true,
-                "src/test/resources/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/ldapDataConnectorTest.ldif");
-        directoryServer.startListening();
+    @BeforeClass public void setupDirectoryServer() {
+        directoryServer =
+            new InMemoryDirectory(
+                new String[] {"dc=shibboleth,dc=net"},
+                new ClassPathResource("/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/ldapDataConnectorTest.ldif"),
+                10389,
+                new ClassPathResource("/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/server.keystore"),
+                Optional.of(new ClassPathResource("/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/client.keystore")));
+        directoryServer.start();
         System.setProperty(
                 "org.ldaptive.sasl.defaultSaslClient",
                 TestSaslClient.class.getName());
@@ -186,7 +134,7 @@ public class LDAPDataConnectorParserTest {
      * Shutdown the in-memory directory server.
      */
     @AfterClass public void teardownDirectoryServer() {
-        directoryServer.shutDown(true);
+        directoryServer.stop(true);
         System.clearProperty("org.ldaptive.sasl.defaultSaslClient");
     }
 
diff --git a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/failfast/AttributeResolverFailFastTest.java b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/failfast/AttributeResolverFailFastTest.java
index f07cfbdcc..b69da76e5 100644
--- a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/failfast/AttributeResolverFailFastTest.java
+++ b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/failfast/AttributeResolverFailFastTest.java
@@ -17,34 +17,29 @@
 
 package net.shibboleth.idp.attribute.resolver.spring.failfast;
 
+import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertNotNull;
 import static org.testng.Assert.assertNull;
 
 import java.io.IOException;
-import java.security.GeneralSecurityException;
+import java.util.Optional;
 
 import javax.sql.DataSource;
 
+import org.springframework.core.io.ClassPathResource;
 import org.springframework.mock.env.MockPropertySource;
 import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Ignore;
 import org.testng.annotations.Test;
 
-import com.unboundid.ldap.listener.InMemoryDirectoryServer;
-import com.unboundid.ldap.listener.InMemoryDirectoryServerConfig;
-import com.unboundid.ldap.listener.InMemoryListenerConfig;
-import com.unboundid.ldap.sdk.LDAPException;
-import com.unboundid.util.ssl.KeyStoreKeyManager;
-import com.unboundid.util.ssl.SSLUtil;
-import com.unboundid.util.ssl.TrustStoreTrustManager;
-
 import net.shibboleth.idp.attribute.resolver.AttributeResolver;
 import net.shibboleth.idp.attribute.resolver.spring.dc.rdbms.impl.RDBMSDataConnectorParserTest;
 import net.shibboleth.shared.service.ReloadableService;
 import net.shibboleth.shared.service.ServiceableComponent;
 import net.shibboleth.shared.testing.DatabaseTestingSupport;
 import net.shibboleth.spring.testing.AbstractFailFastTest;
+import net.shibboleth.shared.testing.InMemoryDirectory;
 
 @Ignore
 @SuppressWarnings({"unchecked", "javadoc"})
@@ -54,28 +49,22 @@ public class AttributeResolverFailFastTest extends AbstractFailFastTest {
         return "/net/shibboleth/idp/attribute/resolver/failfast/";
     }
     
-    private InMemoryDirectoryServer directoryServer;
+    private InMemoryDirectory directoryServer;
     private DataSource datasource;
 
-    @BeforeClass(enabled = false) public void setupDirectoryServer() throws LDAPException, GeneralSecurityException {
+    @BeforeClass(enabled = false) public void setupDirectoryServer() {
         //
         // LDAP
         //
-        final InMemoryDirectoryServerConfig config = new InMemoryDirectoryServerConfig("dc=shibboleth,dc=net");
-        final SSLUtil sslUtil =
-                new SSLUtil(new KeyStoreKeyManager(
-                        "src/test/resources/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/server.keystore",
-                        "changeit".toCharArray()), new TrustStoreTrustManager(
-                        "src/test/resources/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/client.keystore",
-                        "changeit".toCharArray(), "JKS", false));
-        config.setListenerConfigs(InMemoryListenerConfig.createLDAPConfig("default", null, 20389,
-                sslUtil.createSSLSocketFactory()));
-        config.addAdditionalBindCredentials("cn=Directory Manager", "password");
-        directoryServer = new InMemoryDirectoryServer(config);
-        directoryServer.importFromLDIF(true,
-                "src/test/resources/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/ldapDataConnectorTest.ldif");
-        directoryServer.startListening();
-        
+        directoryServer =
+            new InMemoryDirectory(
+                new String[] {"dc=shibboleth,dc=net"},
+                new ClassPathResource("/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/ldapDataConnectorTest.ldif"),
+                20389,
+                new ClassPathResource("/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/server.keystore"),
+                Optional.of(new ClassPathResource("/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/client.keystore")));
+        directoryServer.start();
+
         //
         // RDBMS
         //
@@ -86,7 +75,8 @@ public class AttributeResolverFailFastTest extends AbstractFailFastTest {
     
     @AfterClass public void teardownDirectoryServer() {
         if (directoryServer != null) {
-            directoryServer.shutDown(true);
+            assertEquals(directoryServer.openConnectionCount(), 0);
+            directoryServer.stop(true);
         }
     }
 

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the commits mailing list