1
0
mirror of synced 2026-05-22 21:33:16 +00:00

UnboundIdContainer Disables Pauses for Ephemeral Port

Closes gh-17543
This commit is contained in:
Rob Winch
2025-07-21 07:28:35 -05:00
parent 63e0a56bee
commit 23cf29ba17
9 changed files with 9 additions and 26 deletions
@@ -26,7 +26,6 @@ import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ldap.AuthenticationException;
import org.springframework.ldap.core.support.AbstractContextSource;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit.jupiter.SpringExtension;
@@ -40,8 +39,6 @@ import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException
*/
@ExtendWith(SpringExtension.class)
@ContextConfiguration(classes = UnboundIdContainerConfig.class)
// FIXME: See https://github.com/spring-projects/spring-security/issues/17543
@DirtiesContext
public class DefaultSpringSecurityContextSourceTests {
@Autowired
@@ -34,7 +34,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ldap.UncategorizedLdapException;
import org.springframework.ldap.core.ContextExecutor;
import org.springframework.security.crypto.codec.Utf8;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit.jupiter.SpringExtension;
@@ -47,8 +46,6 @@ import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
*/
@ExtendWith(SpringExtension.class)
@ContextConfiguration(classes = UnboundIdContainerConfig.class)
// FIXME: See https://github.com/spring-projects/spring-security/issues/17543
@DirtiesContext
public class SpringSecurityLdapTemplateITests {
@Autowired
@@ -36,7 +36,6 @@ import org.springframework.security.core.SpringSecurityMessageSource;
import org.springframework.security.ldap.DefaultSpringSecurityContextSource;
import org.springframework.security.ldap.UnboundIdContainerConfig;
import org.springframework.security.ldap.search.FilterBasedLdapUserSearch;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit.jupiter.SpringExtension;
@@ -55,8 +54,6 @@ import static org.mockito.Mockito.spy;
*/
@ExtendWith(SpringExtension.class)
@ContextConfiguration(classes = UnboundIdContainerConfig.class)
// FIXME: See https://github.com/spring-projects/spring-security/issues/17543
@DirtiesContext
public class BindAuthenticatorTests {
@Autowired
@@ -32,7 +32,6 @@ import org.springframework.security.crypto.password.LdapShaPasswordEncoder;
import org.springframework.security.crypto.password.NoOpPasswordEncoder;
import org.springframework.security.ldap.DefaultSpringSecurityContextSource;
import org.springframework.security.ldap.UnboundIdContainerConfig;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit.jupiter.SpringExtension;
@@ -48,8 +47,6 @@ import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException
*/
@ExtendWith(SpringExtension.class)
@ContextConfiguration(classes = UnboundIdContainerConfig.class)
// FIXME: See https://github.com/spring-projects/spring-security/issues/17543
@DirtiesContext
public class PasswordComparisonAuthenticatorTests {
@Autowired
@@ -27,7 +27,6 @@ import org.springframework.ldap.core.DirContextOperations;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.security.ldap.DefaultSpringSecurityContextSource;
import org.springframework.security.ldap.UnboundIdContainerConfig;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit.jupiter.SpringExtension;
@@ -42,8 +41,6 @@ import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
*/
@ExtendWith(SpringExtension.class)
@ContextConfiguration(classes = UnboundIdContainerConfig.class)
// FIXME: See https://github.com/spring-projects/spring-security/issues/17543
@DirtiesContext
public class FilterBasedLdapUserSearchTests {
@Autowired
@@ -33,7 +33,6 @@ import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.AuthorityUtils;
import org.springframework.security.ldap.SpringSecurityLdapTemplate;
import org.springframework.security.ldap.UnboundIdContainerConfig;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit.jupiter.SpringExtension;
@@ -46,8 +45,6 @@ import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException
*/
@ExtendWith(SpringExtension.class)
@ContextConfiguration(classes = UnboundIdContainerConfig.class)
// FIXME: See https://github.com/spring-projects/spring-security/issues/17543
@DirtiesContext
@SuppressWarnings({ "deprecation" })
public class DefaultLdapAuthoritiesPopulatorTests {
@@ -37,7 +37,6 @@ import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.security.ldap.DefaultLdapUsernameToDnMapper;
import org.springframework.security.ldap.SpringSecurityLdapTemplate;
import org.springframework.security.ldap.UnboundIdContainerConfig;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit.jupiter.SpringExtension;
@@ -54,8 +53,6 @@ import static org.mockito.Mockito.verify;
*/
@ExtendWith(SpringExtension.class)
@ContextConfiguration(classes = UnboundIdContainerConfig.class)
// FIXME: See https://github.com/spring-projects/spring-security/issues/17543
@DirtiesContext
public class LdapUserDetailsManagerTests {
@Autowired
@@ -29,7 +29,6 @@ import org.springframework.ldap.core.ContextSource;
import org.springframework.ldap.core.DirContextAdapter;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.ldap.UnboundIdContainerConfig;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit.jupiter.SpringExtension;
@@ -41,8 +40,6 @@ import static org.assertj.core.api.Assertions.assertThat;
*/
@ExtendWith(SpringExtension.class)
@ContextConfiguration(classes = UnboundIdContainerConfig.class)
// FIXME: See https://github.com/spring-projects/spring-security/issues/17543
@DirtiesContext
public class NestedLdapAuthoritiesPopulatorTests {
@Autowired
@@ -31,6 +31,7 @@ import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.Lifecycle;
import org.springframework.core.io.Resource;
import org.springframework.lang.NonNull;
@@ -48,7 +49,9 @@ public class UnboundIdContainer
private int port = 53389;
private ApplicationContext context;
private boolean isEphemeral;
private ConfigurableApplicationContext context;
private boolean running;
@@ -67,6 +70,7 @@ public class UnboundIdContainer
@Override
public void setPort(int port) {
this.port = port;
this.isEphemeral = port == 0;
}
@Override
@@ -81,7 +85,7 @@ public class UnboundIdContainer
@Override
public void setApplicationContext(@NonNull ApplicationContext applicationContext) throws BeansException {
this.context = applicationContext;
this.context = (ConfigurableApplicationContext) applicationContext;
}
@Override
@@ -133,6 +137,9 @@ public class UnboundIdContainer
@Override
public void stop() {
if (this.isEphemeral && this.context != null && !this.context.isClosed()) {
return;
}
this.directoryServer.shutDown(true);
this.running = false;
}