diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 8c5398a..a7f0750 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - java-version: [ 8, 11 ] + java-version: [ 11, 17 ] steps: - uses: actions/checkout@v2 @@ -46,11 +46,11 @@ jobs: needs: build steps: - uses: actions/checkout@v2 - - name: Set up Java 8 + - name: Set up Java 11 uses: actions/setup-java@v3 with: distribution: 'zulu' - java-version: 8 + java-version: 11 server-id: sonatype-nexus-snapshots server-username: MAVEN_USERNAME server-password: MAVEN_PASSWORD diff --git a/embedded-ldap-core/pom.xml b/embedded-ldap-core/pom.xml new file mode 100644 index 0000000..7e6b4ad --- /dev/null +++ b/embedded-ldap-core/pom.xml @@ -0,0 +1,33 @@ + + + + org.zapodot + embedded-ldap-junit-parent + 0.9.1-SNAPSHOT + + 4.0.0 + + embedded-ldap-core + + + + com.unboundid + unboundid-ldapsdk + + + net.bytebuddy + byte-buddy + + + com.google.guava + guava + + + org.slf4j + slf4j-api + + + + \ No newline at end of file diff --git a/src/main/java/org/zapodot/junit/ldap/EmbeddedLdapRuleBuilder.java b/embedded-ldap-core/src/main/java/org/zapodot/junit/ldap/AbstractEmbeddedLdapSupportBuilder.java old mode 100755 new mode 100644 similarity index 74% rename from src/main/java/org/zapodot/junit/ldap/EmbeddedLdapRuleBuilder.java rename to embedded-ldap-core/src/main/java/org/zapodot/junit/ldap/AbstractEmbeddedLdapSupportBuilder.java index 83ba6f5..d83c90b --- a/src/main/java/org/zapodot/junit/ldap/EmbeddedLdapRuleBuilder.java +++ b/embedded-ldap-core/src/main/java/org/zapodot/junit/ldap/AbstractEmbeddedLdapSupportBuilder.java @@ -9,7 +9,6 @@ import com.unboundid.ldap.sdk.schema.Schema; import com.unboundid.ldif.LDIFException; import org.zapodot.junit.ldap.internal.AuthenticationConfiguration; -import org.zapodot.junit.ldap.internal.EmbeddedLdapRuleImpl; import javax.net.ssl.SSLSocketFactory; import java.io.File; @@ -22,53 +21,38 @@ import java.util.List; import java.util.Objects; -/** - * A builder providing a fluent way of defining EmbeddedLdapRule instances - */ -public class EmbeddedLdapRuleBuilder { - +public abstract class AbstractEmbeddedLdapSupportBuilder { public static final String DEFAULT_DOMAIN = "dc=example,dc=com"; public static final String DEFAULT_BIND_DSN = "cn=Directory manager"; public static final String DEFAULT_BIND_CREDENTIALS = "password"; public static final String LDAP_SERVER_LISTENER_NAME = "test-listener"; public static final int MIN_PORT_EXCLUSIVE = 0; public static final int MAX_PORT_EXCLUSIVE = 65535; - private List domainDsn = new LinkedList<>(); - - private String bindDSN = DEFAULT_BIND_DSN; + protected List domainDsn = new LinkedList<>(); - private String bindCredentials = DEFAULT_BIND_CREDENTIALS; + protected String bindDSN = DEFAULT_BIND_DSN; - private List ldifsToImport = new LinkedList<>(); + protected String bindCredentials = DEFAULT_BIND_CREDENTIALS; - private List schemaLdifs = new LinkedList<>(); + protected List ldifsToImport = new LinkedList<>(); - private boolean addDefaultSchema = true; + protected List schemaLdifs = new LinkedList<>(); - private Integer bindPort = 0; + protected boolean addDefaultSchema = true; - private InetAddress bindAddress = InetAddress.getLoopbackAddress(); + protected Integer bindPort = 0; - private AuthenticationConfiguration authenticationConfiguration; + protected InetAddress bindAddress = InetAddress.getLoopbackAddress(); - private InMemoryListenerConfig listenerConfig = null; + protected AuthenticationConfiguration authenticationConfiguration; - private boolean useTls = false; - private SSLSocketFactory socketFactory = null; + protected InMemoryListenerConfig listenerConfig = null; - private Integer maxSizeLimit = null; + protected boolean useTls = false; + protected SSLSocketFactory socketFactory = null; - public EmbeddedLdapRuleBuilder() { - } + protected Integer maxSizeLimit = null; - /** - * Creates a new builder - * - * @return a new EmbeddedLdapRuleBuilder instance - */ - public static EmbeddedLdapRuleBuilder newInstance() { - return new EmbeddedLdapRuleBuilder(); - } /** * Sets a domainDsn to be used. May be multiple values. If not set, it will default to the value of the {@link #DEFAULT_DOMAIN DEFAULT_DOMAIN} field @@ -76,7 +60,7 @@ public static EmbeddedLdapRuleBuilder newInstance() { * @param domainDsn a valid DSN string * @return same EmbeddedLdapRuleBuilder instance with the domainDsn field set */ - public EmbeddedLdapRuleBuilder usingDomainDsn(final String domainDsn) { + public AbstractEmbeddedLdapSupportBuilder usingDomainDsn(final String domainDsn) { this.domainDsn.add(domainDsn); return this; } @@ -87,7 +71,7 @@ public EmbeddedLdapRuleBuilder usingDomainDsn(final String domainDsn) { * @param bindDSN a valid DSN string * @return same EmbeddedLdapRuleBuilder instance with the bindDSN field set */ - public EmbeddedLdapRuleBuilder usingBindDSN(final String bindDSN) { + public AbstractEmbeddedLdapSupportBuilder usingBindDSN(final String bindDSN) { this.bindDSN = bindDSN; return this; } @@ -98,7 +82,7 @@ public EmbeddedLdapRuleBuilder usingBindDSN(final String bindDSN) { * @param bindCredentials a password string * @return same EmbeddedLdapRuleBuilder instance with the bindCredentials field set */ - public EmbeddedLdapRuleBuilder usingBindCredentials(final String bindCredentials) { + public AbstractEmbeddedLdapSupportBuilder usingBindCredentials(final String bindCredentials) { this.bindCredentials = bindCredentials; return this; } @@ -111,7 +95,7 @@ public EmbeddedLdapRuleBuilder usingBindCredentials(final String bindCredentials * @throws IllegalArgumentException if the provided value for port is not between @{link MIN_PORT_EXCLUSIVE} * and @{MAX_PORT_EXCLUSIVE} (exclusive) */ - public EmbeddedLdapRuleBuilder bindingToPort(final int port) { + public AbstractEmbeddedLdapSupportBuilder bindingToPort(final int port) { if ((port < MIN_PORT_EXCLUSIVE) || (port > MAX_PORT_EXCLUSIVE)) { throw new IllegalArgumentException(String.format("Value \"%s\" is not a valid port number", port)); } @@ -126,7 +110,7 @@ public EmbeddedLdapRuleBuilder bindingToPort(final int port) { * @return same EmbeddedLdapRuleBuilder instance with the bindAddress field set * @throws IllegalArgumentException if the value provided for \"address\" is invalid */ - public EmbeddedLdapRuleBuilder bindingToAddress(final String address) { + public AbstractEmbeddedLdapSupportBuilder bindingToAddress(final String address) { Objects.requireNonNull(address); try { final InetAddress addressByName = InetAddress.getByName(address); @@ -137,7 +121,7 @@ public EmbeddedLdapRuleBuilder bindingToAddress(final String address) { return this; } - public EmbeddedLdapRuleBuilder withMaxSizeLimit(final int maxSizeLimit) { + public AbstractEmbeddedLdapSupportBuilder withMaxSizeLimit(final int maxSizeLimit) { this.maxSizeLimit = Integer.valueOf(maxSizeLimit); return this; } @@ -147,7 +131,7 @@ public EmbeddedLdapRuleBuilder withMaxSizeLimit(final int maxSizeLimit) { * * @return same EmbeddedLdapRuleBuilder instance with the withoutDefaultSchema field set to FALSE */ - public EmbeddedLdapRuleBuilder withoutDefaultSchema() { + public AbstractEmbeddedLdapSupportBuilder withoutDefaultSchema() { this.addDefaultSchema = false; return this; } @@ -158,7 +142,7 @@ public EmbeddedLdapRuleBuilder withoutDefaultSchema() { * @param ldifSchemaFiles LDIF-files containing schema element definitions * @return same EmbeddedLdapRuleBuilder with the given LDIF-files added to the internal schema file collection. */ - public EmbeddedLdapRuleBuilder withSchema(final String... ldifSchemaFiles) { + public AbstractEmbeddedLdapSupportBuilder withSchema(final String... ldifSchemaFiles) { this.schemaLdifs.addAll(Arrays.asList(ldifSchemaFiles)); return this; } @@ -169,19 +153,19 @@ public EmbeddedLdapRuleBuilder withSchema(final String... ldifSchemaFiles) { * @param ldifFiles LDIF-files to import * @return same EmbeddedLdapRuleBuilder instance with the provided ldifFiles added to the list of LDIF files to import */ - public EmbeddedLdapRuleBuilder importingLdifs(final String... ldifFiles) { + public AbstractEmbeddedLdapSupportBuilder importingLdifs(final String... ldifFiles) { if (ldifFiles != null) { ldifsToImport.addAll(Arrays.asList(ldifFiles)); } return this; } - public EmbeddedLdapRuleBuilder withListener(InMemoryListenerConfig listenerConfig) { + public AbstractEmbeddedLdapSupportBuilder withListener(InMemoryListenerConfig listenerConfig) { this.listenerConfig = listenerConfig; return this; } - public EmbeddedLdapRuleBuilder useTls(boolean useTls) { + public AbstractEmbeddedLdapSupportBuilder useTls(boolean useTls) { this.useTls = useTls; return this; } @@ -191,14 +175,10 @@ public EmbeddedLdapRuleBuilder useTls(boolean useTls) { * * @return a new EmbeddedLdapRule instance */ - public EmbeddedLdapRule build() { - Objects.requireNonNull(bindDSN, "\"bindDSN\" can not be null"); - return EmbeddedLdapRuleImpl.createForConfiguration(createInMemoryServerConfiguration(), - authenticationConfiguration, - ldifsToImport, useTls, socketFactory); - } + abstract public T build(); - private InMemoryDirectoryServerConfig createInMemoryServerConfiguration() { + + protected InMemoryDirectoryServerConfig createInMemoryServerConfiguration() { try { final InMemoryDirectoryServerConfig inMemoryDirectoryServerConfig = new InMemoryDirectoryServerConfig(domainDsnArray()); @@ -210,10 +190,10 @@ private InMemoryDirectoryServerConfig createInMemoryServerConfiguration() { if (listenerConfig == null) { listenerConfig = InMemoryListenerConfig.createLDAPConfig( - LDAP_SERVER_LISTENER_NAME, - bindAddress, - bindPort, - null); + LDAP_SERVER_LISTENER_NAME, + bindAddress, + bindPort, + null); } inMemoryDirectoryServerConfig.setListenerConfigs(listenerConfig); inMemoryDirectoryServerConfig.setSchema(customSchema()); @@ -243,8 +223,8 @@ private Schema customSchema() { final Schema initialSchema = (addDefaultSchema ? Schema.getDefaultStandardSchema() : null); if (!schemaFiles.isEmpty()) { final Schema customSchema = initialSchema == null - ? Schema.getSchema(schemaFiles) - : Schema.mergeSchemas(initialSchema, Schema.getSchema(schemaFiles)); + ? Schema.getSchema(schemaFiles) + : Schema.mergeSchemas(initialSchema, Schema.getSchema(schemaFiles)); return customSchema; } else { return null; @@ -278,8 +258,9 @@ public File apply(final String input) { })); } - public EmbeddedLdapRuleBuilder withSocketFactory(SSLSocketFactory socketFactory) { + public AbstractEmbeddedLdapSupportBuilder withSocketFactory(SSLSocketFactory socketFactory) { this.socketFactory = socketFactory; return this; } + } diff --git a/src/main/java/org/zapodot/junit/ldap/internal/AuthenticationConfiguration.java b/embedded-ldap-core/src/main/java/org/zapodot/junit/ldap/internal/AuthenticationConfiguration.java similarity index 100% rename from src/main/java/org/zapodot/junit/ldap/internal/AuthenticationConfiguration.java rename to embedded-ldap-core/src/main/java/org/zapodot/junit/ldap/internal/AuthenticationConfiguration.java diff --git a/src/main/java/org/zapodot/junit/ldap/internal/jndi/ContextInterceptor.java b/embedded-ldap-core/src/main/java/org/zapodot/junit/ldap/internal/jndi/ContextInterceptor.java similarity index 100% rename from src/main/java/org/zapodot/junit/ldap/internal/jndi/ContextInterceptor.java rename to embedded-ldap-core/src/main/java/org/zapodot/junit/ldap/internal/jndi/ContextInterceptor.java diff --git a/src/main/java/org/zapodot/junit/ldap/internal/jndi/ContextProxy.java b/embedded-ldap-core/src/main/java/org/zapodot/junit/ldap/internal/jndi/ContextProxy.java similarity index 100% rename from src/main/java/org/zapodot/junit/ldap/internal/jndi/ContextProxy.java rename to embedded-ldap-core/src/main/java/org/zapodot/junit/ldap/internal/jndi/ContextProxy.java diff --git a/src/main/java/org/zapodot/junit/ldap/internal/jndi/ContextProxyFactory.java b/embedded-ldap-core/src/main/java/org/zapodot/junit/ldap/internal/jndi/ContextProxyFactory.java similarity index 98% rename from src/main/java/org/zapodot/junit/ldap/internal/jndi/ContextProxyFactory.java rename to embedded-ldap-core/src/main/java/org/zapodot/junit/ldap/internal/jndi/ContextProxyFactory.java index 9f50508..76ae1fd 100755 --- a/src/main/java/org/zapodot/junit/ldap/internal/jndi/ContextProxyFactory.java +++ b/embedded-ldap-core/src/main/java/org/zapodot/junit/ldap/internal/jndi/ContextProxyFactory.java @@ -98,10 +98,10 @@ private static Constructor getDeclaredConstructor() { public static DirContext asDelegatingDirContext(final InitialDirContext initialDirContext) { try { - final DirContext dirContext = DIR_CONTEXT_PROXY_TYPE.newInstance(); + final DirContext dirContext = DIR_CONTEXT_PROXY_TYPE.getDeclaredConstructor().newInstance(); ((DirContextProxy) dirContext).setDelegatedDirContext(initialDirContext); return dirContext; - } catch (InstantiationException | IllegalAccessException e) { + } catch (InstantiationException | IllegalAccessException | NoSuchMethodException | InvocationTargetException e) { throw new IllegalStateException("Could not wrap DirContext", e); } } diff --git a/src/main/java/org/zapodot/junit/ldap/internal/jndi/DirContextProxy.java b/embedded-ldap-core/src/main/java/org/zapodot/junit/ldap/internal/jndi/DirContextProxy.java similarity index 100% rename from src/main/java/org/zapodot/junit/ldap/internal/jndi/DirContextProxy.java rename to embedded-ldap-core/src/main/java/org/zapodot/junit/ldap/internal/jndi/DirContextProxy.java diff --git a/src/main/java/org/zapodot/junit/ldap/internal/package-info.java b/embedded-ldap-core/src/main/java/org/zapodot/junit/ldap/internal/package-info.java similarity index 100% rename from src/main/java/org/zapodot/junit/ldap/internal/package-info.java rename to embedded-ldap-core/src/main/java/org/zapodot/junit/ldap/internal/package-info.java diff --git a/src/main/java/org/zapodot/junit/ldap/internal/unboundid/LDAPConnectionProxy.java b/embedded-ldap-core/src/main/java/org/zapodot/junit/ldap/internal/unboundid/LDAPConnectionProxy.java similarity index 100% rename from src/main/java/org/zapodot/junit/ldap/internal/unboundid/LDAPConnectionProxy.java rename to embedded-ldap-core/src/main/java/org/zapodot/junit/ldap/internal/unboundid/LDAPConnectionProxy.java diff --git a/src/main/java/org/zapodot/junit/ldap/internal/unboundid/LDAPInterfaceProxyFactory.java b/embedded-ldap-core/src/main/java/org/zapodot/junit/ldap/internal/unboundid/LDAPInterfaceProxyFactory.java similarity index 100% rename from src/main/java/org/zapodot/junit/ldap/internal/unboundid/LDAPInterfaceProxyFactory.java rename to embedded-ldap-core/src/main/java/org/zapodot/junit/ldap/internal/unboundid/LDAPInterfaceProxyFactory.java diff --git a/embedded-ldap-junit-jupiter/pom.xml b/embedded-ldap-junit-jupiter/pom.xml new file mode 100644 index 0000000..6981d9d --- /dev/null +++ b/embedded-ldap-junit-jupiter/pom.xml @@ -0,0 +1,42 @@ + + + + embedded-ldap-junit-parent + org.zapodot + 0.9.1-SNAPSHOT + + 4.0.0 + + embedded-ldap-junit-jupiter + + + + org.zapodot + embedded-ldap-core + + + org.junit.jupiter + junit-jupiter-api + + + + org.junit.jupiter + junit-jupiter-engine + + + + + + + org.junit + junit-bom + ${junit-jupiter.version} + pom + import + + + + + \ No newline at end of file diff --git a/embedded-ldap-junit-jupiter/src/main/java/org/zapodot/ldap/jupiter/EmbeddedLdapExtension.java b/embedded-ldap-junit-jupiter/src/main/java/org/zapodot/ldap/jupiter/EmbeddedLdapExtension.java new file mode 100644 index 0000000..61b6ca5 --- /dev/null +++ b/embedded-ldap-junit-jupiter/src/main/java/org/zapodot/ldap/jupiter/EmbeddedLdapExtension.java @@ -0,0 +1,9 @@ +package org.zapodot.ldap.jupiter; + +import org.junit.jupiter.api.extension.*; + +/** + * Extension for JUnit 5 Jupiter + */ +public interface EmbeddedLdapExtension extends Extension, BeforeEachCallback, AfterEachCallback, BeforeAllCallback, AfterAllCallback { +} diff --git a/embedded-ldap-junit-jupiter/src/main/java/org/zapodot/ldap/jupiter/EmbeddedLdapExtensionBuilder.java b/embedded-ldap-junit-jupiter/src/main/java/org/zapodot/ldap/jupiter/EmbeddedLdapExtensionBuilder.java new file mode 100644 index 0000000..83c87b4 --- /dev/null +++ b/embedded-ldap-junit-jupiter/src/main/java/org/zapodot/ldap/jupiter/EmbeddedLdapExtensionBuilder.java @@ -0,0 +1,15 @@ +package org.zapodot.ldap.jupiter; + +import org.zapodot.junit.ldap.AbstractEmbeddedLdapSupportBuilder; + +public class EmbeddedLdapExtensionBuilder extends AbstractEmbeddedLdapSupportBuilder { + + public static EmbeddedLdapExtensionBuilder newInstance() { + return new EmbeddedLdapExtensionBuilder(); + } + + @Override + public EmbeddedLdapExtension build() { + return null; + } +} diff --git a/embedded-ldap-junit-jupiter/src/main/java/org/zapodot/ldap/jupiter/internal/EmbeddedLdapExtensionImpl.java b/embedded-ldap-junit-jupiter/src/main/java/org/zapodot/ldap/jupiter/internal/EmbeddedLdapExtensionImpl.java new file mode 100644 index 0000000..66c8f85 --- /dev/null +++ b/embedded-ldap-junit-jupiter/src/main/java/org/zapodot/ldap/jupiter/internal/EmbeddedLdapExtensionImpl.java @@ -0,0 +1,26 @@ +package org.zapodot.ldap.jupiter.internal; + +import org.junit.jupiter.api.extension.ExtensionContext; +import org.zapodot.ldap.jupiter.EmbeddedLdapExtension; + +public class EmbeddedLdapExtensionImpl implements EmbeddedLdapExtension { + @Override + public void afterAll(final ExtensionContext extensionContext) throws Exception { + + } + + @Override + public void afterEach(final ExtensionContext extensionContext) throws Exception { + + } + + @Override + public void beforeAll(final ExtensionContext extensionContext) throws Exception { + + } + + @Override + public void beforeEach(final ExtensionContext extensionContext) throws Exception { + + } +} diff --git a/embedded-ldap-junit-jupiter/src/main/java/org/zapodot/ldap/jupiter/internal/package-info.java b/embedded-ldap-junit-jupiter/src/main/java/org/zapodot/ldap/jupiter/internal/package-info.java new file mode 100755 index 0000000..a52f334 --- /dev/null +++ b/embedded-ldap-junit-jupiter/src/main/java/org/zapodot/ldap/jupiter/internal/package-info.java @@ -0,0 +1,6 @@ +/** + * Internal API. May be removed, moved or changed without prior deprecation + * + * @author zapodot at gmail dot com + */ +package org.zapodot.ldap.jupiter.internal; \ No newline at end of file diff --git a/embedded-ldap-junit/pom.xml b/embedded-ldap-junit/pom.xml new file mode 100644 index 0000000..b434e3f --- /dev/null +++ b/embedded-ldap-junit/pom.xml @@ -0,0 +1,69 @@ + + + 4.0.0 + + org.zapodot + embedded-ldap-junit-parent + 0.9.1-SNAPSHOT + + + embedded-ldap-junit + ${project.artifactId} + + + + org.zapodot + embedded-ldap-core + + + com.unboundid + unboundid-ldapsdk + ${unboundid-ldapsdk.version} + + + junit + junit + ${junit.version} + + + com.google.guava + guava + + + net.bytebuddy + byte-buddy + + + org.slf4j + slf4j-api + + + ch.qos.logback + logback-classic + ${logback.version} + test + + + org.bouncycastle + bcprov-jdk18on + ${bouncycastle.version} + test + + + org.bouncycastle + bcpkix-jdk18on + ${bouncycastle.version} + test + + + + + + maven-surefire-plugin + + + + + \ No newline at end of file diff --git a/src/main/java/org/zapodot/junit/ldap/EmbeddedLdapRule.java b/embedded-ldap-junit/src/main/java/org/zapodot/junit/ldap/EmbeddedLdapRule.java similarity index 100% rename from src/main/java/org/zapodot/junit/ldap/EmbeddedLdapRule.java rename to embedded-ldap-junit/src/main/java/org/zapodot/junit/ldap/EmbeddedLdapRule.java diff --git a/embedded-ldap-junit/src/main/java/org/zapodot/junit/ldap/EmbeddedLdapRuleBuilder.java b/embedded-ldap-junit/src/main/java/org/zapodot/junit/ldap/EmbeddedLdapRuleBuilder.java new file mode 100755 index 0000000..fdc3c01 --- /dev/null +++ b/embedded-ldap-junit/src/main/java/org/zapodot/junit/ldap/EmbeddedLdapRuleBuilder.java @@ -0,0 +1,33 @@ +package org.zapodot.junit.ldap; + +import org.zapodot.junit.ldap.internal.EmbeddedLdapRuleImpl; + +import java.util.Objects; + +/** + * A builder providing a fluent way of defining EmbeddedLdapRule instances + */ +public class EmbeddedLdapRuleBuilder extends AbstractEmbeddedLdapSupportBuilder { + + public EmbeddedLdapRuleBuilder() { + } + + public static EmbeddedLdapRuleBuilder newInstance() { + + return new EmbeddedLdapRuleBuilder(); + } + + /** + * Creates a new rule based on the information that was previously provided + * + * @return a new EmbeddedLdapRule instance + */ + public EmbeddedLdapRule build() { + Objects.requireNonNull(bindDSN, "\"bindDSN\" can not be null"); + return EmbeddedLdapRuleImpl.createForConfiguration(createInMemoryServerConfiguration(), + authenticationConfiguration, + ldifsToImport, useTls, socketFactory); + } + + +} diff --git a/src/main/java/org/zapodot/junit/ldap/internal/EmbeddedLdapRuleImpl.java b/embedded-ldap-junit/src/main/java/org/zapodot/junit/ldap/internal/EmbeddedLdapRuleImpl.java similarity index 99% rename from src/main/java/org/zapodot/junit/ldap/internal/EmbeddedLdapRuleImpl.java rename to embedded-ldap-junit/src/main/java/org/zapodot/junit/ldap/internal/EmbeddedLdapRuleImpl.java index a394874..8daaeee 100755 --- a/src/main/java/org/zapodot/junit/ldap/internal/EmbeddedLdapRuleImpl.java +++ b/embedded-ldap-junit/src/main/java/org/zapodot/junit/ldap/internal/EmbeddedLdapRuleImpl.java @@ -7,6 +7,9 @@ import com.unboundid.ldap.sdk.LDAPConnection; import com.unboundid.ldap.sdk.LDAPException; import com.unboundid.ldap.sdk.LDAPInterface; +import net.bytebuddy.ByteBuddy; +import net.bytebuddy.dynamic.loading.ClassLoadingStrategy; +import net.bytebuddy.implementation.FixedValue; import org.junit.runner.Description; import org.junit.runners.model.Statement; import org.slf4j.Logger; @@ -20,14 +23,11 @@ import javax.naming.directory.DirContext; import javax.naming.directory.InitialDirContext; import javax.naming.ldap.LdapContext; -import java.io.UnsupportedEncodingException; -import java.lang.reflect.Modifier; - import javax.net.SocketFactory; import javax.net.ssl.SSLSocketFactory; - import java.io.IOException; import java.io.UnsupportedEncodingException; +import java.lang.reflect.Modifier; import java.net.InetAddress; import java.net.Socket; import java.net.URLDecoder; @@ -35,10 +35,6 @@ import java.util.Hashtable; import java.util.List; -import net.bytebuddy.ByteBuddy; -import net.bytebuddy.dynamic.loading.ClassLoadingStrategy; -import net.bytebuddy.implementation.FixedValue; - public class EmbeddedLdapRuleImpl implements EmbeddedLdapRule { private static final String JAVA_RT_CONTROL_FACTORY = "com.sun.jndi.ldap.DefaultResponseControlFactory"; diff --git a/embedded-ldap-junit/src/main/java/org/zapodot/junit/ldap/internal/package-info.java b/embedded-ldap-junit/src/main/java/org/zapodot/junit/ldap/internal/package-info.java new file mode 100755 index 0000000..c89bcca --- /dev/null +++ b/embedded-ldap-junit/src/main/java/org/zapodot/junit/ldap/internal/package-info.java @@ -0,0 +1,6 @@ +/** + * Internal API. May be removed, moved or changed without prior deprecation + * + * @author zapodot at gmail dot com + */ +package org.zapodot.junit.ldap.internal; \ No newline at end of file diff --git a/src/main/java/org/zapodot/junit/ldap/package-info.java b/embedded-ldap-junit/src/main/java/org/zapodot/junit/ldap/package-info.java similarity index 100% rename from src/main/java/org/zapodot/junit/ldap/package-info.java rename to embedded-ldap-junit/src/main/java/org/zapodot/junit/ldap/package-info.java diff --git a/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleBuilderTest.java b/embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleBuilderTest.java similarity index 100% rename from src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleBuilderTest.java rename to embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleBuilderTest.java diff --git a/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleClassRuleTest.java b/embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleClassRuleTest.java similarity index 100% rename from src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleClassRuleTest.java rename to embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleClassRuleTest.java diff --git a/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleCustomSchemaDuplicatedTest.java b/embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleCustomSchemaDuplicatedTest.java similarity index 100% rename from src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleCustomSchemaDuplicatedTest.java rename to embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleCustomSchemaDuplicatedTest.java diff --git a/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleCustomStandardAndCustomSchemaTest.java b/embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleCustomStandardAndCustomSchemaTest.java similarity index 100% rename from src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleCustomStandardAndCustomSchemaTest.java rename to embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleCustomStandardAndCustomSchemaTest.java diff --git a/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleCustomWithoutSchemaTest.java b/embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleCustomWithoutSchemaTest.java similarity index 100% rename from src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleCustomWithoutSchemaTest.java rename to embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleCustomWithoutSchemaTest.java diff --git a/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleCustomWithoutStandardSchemaTest.java b/embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleCustomWithoutStandardSchemaTest.java similarity index 100% rename from src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleCustomWithoutStandardSchemaTest.java rename to embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleCustomWithoutStandardSchemaTest.java diff --git a/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleMultipleDSNs.java b/embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleMultipleDSNs.java similarity index 100% rename from src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleMultipleDSNs.java rename to embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleMultipleDSNs.java diff --git a/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleNoAuthTest.java b/embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleNoAuthTest.java similarity index 100% rename from src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleNoAuthTest.java rename to embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleNoAuthTest.java diff --git a/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleStandardContext.java b/embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleStandardContext.java similarity index 100% rename from src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleStandardContext.java rename to embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleStandardContext.java diff --git a/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleStarttlsTest.java b/embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleStarttlsTest.java similarity index 100% rename from src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleStarttlsTest.java rename to embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleStarttlsTest.java diff --git a/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleTest.java b/embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleTest.java similarity index 100% rename from src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleTest.java rename to embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleTest.java diff --git a/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleTlsTest.java b/embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleTlsTest.java similarity index 88% rename from src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleTlsTest.java rename to embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleTlsTest.java index 43c703d..8a176e5 100755 --- a/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleTlsTest.java +++ b/embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleTlsTest.java @@ -1,40 +1,8 @@ package org.zapodot.junit.ldap; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; - -import java.util.Arrays; -import java.io.IOException; -import java.math.BigInteger; -import java.net.InetAddress; -import java.security.KeyManagementException; -import java.security.KeyPair; -import java.security.KeyPairGenerator; -import java.security.KeyStore; -import java.security.KeyStoreException; -import java.security.NoSuchAlgorithmException; -import java.security.Provider; -import java.security.Security; -import java.security.UnrecoverableKeyException; -import java.security.cert.Certificate; -import java.security.cert.CertificateException; -import java.security.cert.X509Certificate; -import java.util.Arrays; -import java.util.Calendar; -import java.util.Date; - -import javax.naming.Context; -import javax.naming.NamingEnumeration; -import javax.naming.directory.DirContext; -import javax.naming.directory.SearchControls; - -import javax.net.ssl.KeyManager; -import javax.net.ssl.KeyManagerFactory; -import javax.net.ssl.SSLContext; -import javax.net.ssl.TrustManager; -import javax.net.ssl.TrustManagerFactory; - +import com.google.common.collect.Iterators; +import com.unboundid.ldap.listener.InMemoryListenerConfig; +import com.unboundid.ldap.sdk.*; import org.bouncycastle.asn1.ASN1ObjectIdentifier; import org.bouncycastle.asn1.x509.BasicConstraints; import org.bouncycastle.cert.X509CertificateHolder; @@ -47,16 +15,23 @@ import org.junit.Rule; import org.junit.Test; -import com.google.common.collect.Iterators; -import com.unboundid.ldap.listener.InMemoryListenerConfig; -import com.unboundid.ldap.sdk.AddRequest; -import com.unboundid.ldap.sdk.Attribute; -import com.unboundid.ldap.sdk.LDAPConnection; -import com.unboundid.ldap.sdk.LDAPInterface; -import com.unboundid.ldap.sdk.SearchRequest; -import com.unboundid.ldap.sdk.SearchResult; -import com.unboundid.ldap.sdk.SearchResultEntry; -import com.unboundid.ldap.sdk.SearchScope; +import javax.naming.Context; +import javax.naming.NamingEnumeration; +import javax.naming.directory.DirContext; +import javax.naming.directory.SearchControls; +import javax.net.ssl.*; +import java.io.IOException; +import java.math.BigInteger; +import java.net.InetAddress; +import java.security.*; +import java.security.cert.Certificate; +import java.security.cert.CertificateException; +import java.security.cert.X509Certificate; +import java.util.Arrays; +import java.util.Calendar; +import java.util.Date; + +import static org.junit.Assert.*; public class EmbeddedLdapRuleTlsTest { diff --git a/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleWithListeningAddressProvidedTest.java b/embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleWithListeningAddressProvidedTest.java similarity index 100% rename from src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleWithListeningAddressProvidedTest.java rename to embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleWithListeningAddressProvidedTest.java diff --git a/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleWithSpacesTest.java b/embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleWithSpacesTest.java similarity index 100% rename from src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleWithSpacesTest.java rename to embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/EmbeddedLdapRuleWithSpacesTest.java diff --git a/src/test/java/org/zapodot/junit/ldap/internal/AuthenticationConfigurationTest.java b/embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/internal/AuthenticationConfigurationTest.java similarity index 100% rename from src/test/java/org/zapodot/junit/ldap/internal/AuthenticationConfigurationTest.java rename to embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/internal/AuthenticationConfigurationTest.java diff --git a/src/test/java/org/zapodot/junit/ldap/internal/jndi/ContextProxyFactoryTest.java b/embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/internal/jndi/ContextProxyFactoryTest.java similarity index 100% rename from src/test/java/org/zapodot/junit/ldap/internal/jndi/ContextProxyFactoryTest.java rename to embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/internal/jndi/ContextProxyFactoryTest.java diff --git a/src/test/java/org/zapodot/junit/ldap/internal/unboundid/LDAPInterfaceProxyFactoryTest.java b/embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/internal/unboundid/LDAPInterfaceProxyFactoryTest.java similarity index 100% rename from src/test/java/org/zapodot/junit/ldap/internal/unboundid/LDAPInterfaceProxyFactoryTest.java rename to embedded-ldap-junit/src/test/java/org/zapodot/junit/ldap/internal/unboundid/LDAPInterfaceProxyFactoryTest.java diff --git a/src/test/resources/custom-schema.ldif b/embedded-ldap-junit/src/test/resources/custom-schema.ldif similarity index 100% rename from src/test/resources/custom-schema.ldif rename to embedded-ldap-junit/src/test/resources/custom-schema.ldif diff --git a/src/test/resources/example.ldif b/embedded-ldap-junit/src/test/resources/example.ldif similarity index 100% rename from src/test/resources/example.ldif rename to embedded-ldap-junit/src/test/resources/example.ldif diff --git a/src/test/resources/folder with space/example.ldif b/embedded-ldap-junit/src/test/resources/folder with space/example.ldif similarity index 100% rename from src/test/resources/folder with space/example.ldif rename to embedded-ldap-junit/src/test/resources/folder with space/example.ldif diff --git a/src/test/resources/folder/.placeholder b/embedded-ldap-junit/src/test/resources/folder/.placeholder similarity index 100% rename from src/test/resources/folder/.placeholder rename to embedded-ldap-junit/src/test/resources/folder/.placeholder diff --git a/src/test/resources/invalid.ldif b/embedded-ldap-junit/src/test/resources/invalid.ldif similarity index 100% rename from src/test/resources/invalid.ldif rename to embedded-ldap-junit/src/test/resources/invalid.ldif diff --git a/src/test/resources/standard-schema.ldif b/embedded-ldap-junit/src/test/resources/standard-schema.ldif similarity index 100% rename from src/test/resources/standard-schema.ldif rename to embedded-ldap-junit/src/test/resources/standard-schema.ldif diff --git a/pom.xml b/pom.xml index 1278128..110855c 100644 --- a/pom.xml +++ b/pom.xml @@ -5,12 +5,19 @@ 4.0.0 org.zapodot - embedded-ldap-junit + embedded-ldap-junit-parent + pom 0.9.1-SNAPSHOT ${project.artifactId} Library that provides a JUnit rule for setting up an in-memory LDAP server by using the glorious Unboundid LDAP SDK https://github.com/zapodot/embedded-ldap-junit 2015 + + + embedded-ldap-core + embedded-ldap-junit + embedded-ldap-junit-jupiter + zapodot @@ -24,12 +31,13 @@ 4.13.2 + 5.9.1 6.0.6 1.7.36 31.1-jre - 1.12.17 + 1.14.4 1.2.11 - 1.70 + 1.72 UTF-8 3.2.1 3.4.1 @@ -37,54 +45,43 @@ 3.0.1 1.6.13 3.1.0 - 8 - 0.8.8 + 11 + 0.8.9 - - - com.unboundid - unboundid-ldapsdk - ${unboundid-ldapsdk.version} - - - junit - junit - ${junit.version} - - - com.google.guava - guava - ${guava.version} - - - net.bytebuddy - byte-buddy - ${byte-buddy.version} - - - org.slf4j - slf4j-api - ${slf4j.version} - - - ch.qos.logback - logback-classic - ${logback.version} - test - - - org.bouncycastle - bcprov-jdk15on - ${bouncycastle.version} - test - - - org.bouncycastle - bcpkix-jdk15on - ${bouncycastle.version} - test - - + + + + org.zapodot + embedded-ldap-core + ${project.version} + + + org.zapodot + embedded-ldap-junit + ${project.version} + + + com.unboundid + unboundid-ldapsdk + ${unboundid-ldapsdk.version} + + + com.google.guava + guava + ${guava.version} + + + net.bytebuddy + byte-buddy + ${byte-buddy.version} + + + org.slf4j + slf4j-api + ${slf4j.version} + + +