package org.apereo.cas.adaptors.ldap; import org.apereo.cas.util.ldap.uboundid.InMemoryTestLdapDirectoryServer; import org.ldaptive.LdapEntry; import org.springframework.core.io.ClassPathResource; import java.io.IOException; import java.io.InputStream; import java.util.Collection; /** * Base class for LDAP tests that provision and de-provision DIRECTORY data as part of test setup/teardown. * @author Marvin S. Addison * @author Misagh Moayyed * @since 4.1.0 */ public abstract class AbstractLdapTests { protected static InMemoryTestLdapDirectoryServer DIRECTORY; public static synchronized void initDirectoryServer(final InputStream ldifFile) throws IOException { try { final boolean createInstance = DIRECTORY == null || !DIRECTORY.isAlive(); if (createInstance) { final ClassPathResource properties = new ClassPathResource("ldap.properties"); final ClassPathResource schema = new ClassPathResource("schema/standard-ldap.schema"); DIRECTORY = new InMemoryTestLdapDirectoryServer(properties.getInputStream(), ldifFile, schema.getInputStream()); } } catch (final Exception e) { throw new RuntimeException(e.getMessage(), e); } } public static void initDirectoryServer() throws IOException { initDirectoryServer(new ClassPathResource("ldif/ldap-base.ldif").getInputStream()); } protected static InMemoryTestLdapDirectoryServer getDirectory() { return DIRECTORY; } protected Collection<LdapEntry> getEntries() { return DIRECTORY.getLdapEntries(); } }