Skip to content

Commit 23cf29b

Browse files
committed
UnboundIdContainer Disables Pauses for Ephemeral Port
Closes gh-17543
1 parent 63e0a56 commit 23cf29b

File tree

9 files changed

+9
-26
lines changed

9 files changed

+9
-26
lines changed

ldap/src/integration-test/java/org/springframework/security/ldap/DefaultSpringSecurityContextSourceTests.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import org.springframework.beans.factory.annotation.Autowired;
2727
import org.springframework.ldap.AuthenticationException;
2828
import org.springframework.ldap.core.support.AbstractContextSource;
29-
import org.springframework.test.annotation.DirtiesContext;
3029
import org.springframework.test.context.ContextConfiguration;
3130
import org.springframework.test.context.junit.jupiter.SpringExtension;
3231

@@ -40,8 +39,6 @@
4039
*/
4140
@ExtendWith(SpringExtension.class)
4241
@ContextConfiguration(classes = UnboundIdContainerConfig.class)
43-
// FIXME: See https://github.com/spring-projects/spring-security/issues/17543
44-
@DirtiesContext
4542
public class DefaultSpringSecurityContextSourceTests {
4643

4744
@Autowired

ldap/src/integration-test/java/org/springframework/security/ldap/SpringSecurityLdapTemplateITests.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
import org.springframework.ldap.UncategorizedLdapException;
3535
import org.springframework.ldap.core.ContextExecutor;
3636
import org.springframework.security.crypto.codec.Utf8;
37-
import org.springframework.test.annotation.DirtiesContext;
3837
import org.springframework.test.context.ContextConfiguration;
3938
import org.springframework.test.context.junit.jupiter.SpringExtension;
4039

@@ -47,8 +46,6 @@
4746
*/
4847
@ExtendWith(SpringExtension.class)
4948
@ContextConfiguration(classes = UnboundIdContainerConfig.class)
50-
// FIXME: See https://github.com/spring-projects/spring-security/issues/17543
51-
@DirtiesContext
5249
public class SpringSecurityLdapTemplateITests {
5350

5451
@Autowired

ldap/src/integration-test/java/org/springframework/security/ldap/authentication/BindAuthenticatorTests.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@
3636
import org.springframework.security.ldap.DefaultSpringSecurityContextSource;
3737
import org.springframework.security.ldap.UnboundIdContainerConfig;
3838
import org.springframework.security.ldap.search.FilterBasedLdapUserSearch;
39-
import org.springframework.test.annotation.DirtiesContext;
4039
import org.springframework.test.context.ContextConfiguration;
4140
import org.springframework.test.context.junit.jupiter.SpringExtension;
4241

@@ -55,8 +54,6 @@
5554
*/
5655
@ExtendWith(SpringExtension.class)
5756
@ContextConfiguration(classes = UnboundIdContainerConfig.class)
58-
// FIXME: See https://github.com/spring-projects/spring-security/issues/17543
59-
@DirtiesContext
6057
public class BindAuthenticatorTests {
6158

6259
@Autowired

ldap/src/integration-test/java/org/springframework/security/ldap/authentication/PasswordComparisonAuthenticatorTests.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
import org.springframework.security.crypto.password.NoOpPasswordEncoder;
3333
import org.springframework.security.ldap.DefaultSpringSecurityContextSource;
3434
import org.springframework.security.ldap.UnboundIdContainerConfig;
35-
import org.springframework.test.annotation.DirtiesContext;
3635
import org.springframework.test.context.ContextConfiguration;
3736
import org.springframework.test.context.junit.jupiter.SpringExtension;
3837

@@ -48,8 +47,6 @@
4847
*/
4948
@ExtendWith(SpringExtension.class)
5049
@ContextConfiguration(classes = UnboundIdContainerConfig.class)
51-
// FIXME: See https://github.com/spring-projects/spring-security/issues/17543
52-
@DirtiesContext
5350
public class PasswordComparisonAuthenticatorTests {
5451

5552
@Autowired

ldap/src/integration-test/java/org/springframework/security/ldap/search/FilterBasedLdapUserSearchTests.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
import org.springframework.security.core.userdetails.UsernameNotFoundException;
2828
import org.springframework.security.ldap.DefaultSpringSecurityContextSource;
2929
import org.springframework.security.ldap.UnboundIdContainerConfig;
30-
import org.springframework.test.annotation.DirtiesContext;
3130
import org.springframework.test.context.ContextConfiguration;
3231
import org.springframework.test.context.junit.jupiter.SpringExtension;
3332

@@ -42,8 +41,6 @@
4241
*/
4342
@ExtendWith(SpringExtension.class)
4443
@ContextConfiguration(classes = UnboundIdContainerConfig.class)
45-
// FIXME: See https://github.com/spring-projects/spring-security/issues/17543
46-
@DirtiesContext
4744
public class FilterBasedLdapUserSearchTests {
4845

4946
@Autowired

ldap/src/integration-test/java/org/springframework/security/ldap/userdetails/DefaultLdapAuthoritiesPopulatorTests.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
import org.springframework.security.core.authority.AuthorityUtils;
3434
import org.springframework.security.ldap.SpringSecurityLdapTemplate;
3535
import org.springframework.security.ldap.UnboundIdContainerConfig;
36-
import org.springframework.test.annotation.DirtiesContext;
3736
import org.springframework.test.context.ContextConfiguration;
3837
import org.springframework.test.context.junit.jupiter.SpringExtension;
3938

@@ -46,8 +45,6 @@
4645
*/
4746
@ExtendWith(SpringExtension.class)
4847
@ContextConfiguration(classes = UnboundIdContainerConfig.class)
49-
// FIXME: See https://github.com/spring-projects/spring-security/issues/17543
50-
@DirtiesContext
5148
@SuppressWarnings({ "deprecation" })
5249
public class DefaultLdapAuthoritiesPopulatorTests {
5350

ldap/src/integration-test/java/org/springframework/security/ldap/userdetails/LdapUserDetailsManagerTests.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@
3737
import org.springframework.security.ldap.DefaultLdapUsernameToDnMapper;
3838
import org.springframework.security.ldap.SpringSecurityLdapTemplate;
3939
import org.springframework.security.ldap.UnboundIdContainerConfig;
40-
import org.springframework.test.annotation.DirtiesContext;
4140
import org.springframework.test.context.ContextConfiguration;
4241
import org.springframework.test.context.junit.jupiter.SpringExtension;
4342

@@ -54,8 +53,6 @@
5453
*/
5554
@ExtendWith(SpringExtension.class)
5655
@ContextConfiguration(classes = UnboundIdContainerConfig.class)
57-
// FIXME: See https://github.com/spring-projects/spring-security/issues/17543
58-
@DirtiesContext
5956
public class LdapUserDetailsManagerTests {
6057

6158
@Autowired

ldap/src/integration-test/java/org/springframework/security/ldap/userdetails/NestedLdapAuthoritiesPopulatorTests.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
import org.springframework.ldap.core.DirContextAdapter;
3030
import org.springframework.security.core.GrantedAuthority;
3131
import org.springframework.security.ldap.UnboundIdContainerConfig;
32-
import org.springframework.test.annotation.DirtiesContext;
3332
import org.springframework.test.context.ContextConfiguration;
3433
import org.springframework.test.context.junit.jupiter.SpringExtension;
3534

@@ -41,8 +40,6 @@
4140
*/
4241
@ExtendWith(SpringExtension.class)
4342
@ContextConfiguration(classes = UnboundIdContainerConfig.class)
44-
// FIXME: See https://github.com/spring-projects/spring-security/issues/17543
45-
@DirtiesContext
4643
public class NestedLdapAuthoritiesPopulatorTests {
4744

4845
@Autowired

ldap/src/main/java/org/springframework/security/ldap/server/UnboundIdContainer.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import org.springframework.beans.factory.InitializingBean;
3232
import org.springframework.context.ApplicationContext;
3333
import org.springframework.context.ApplicationContextAware;
34+
import org.springframework.context.ConfigurableApplicationContext;
3435
import org.springframework.context.Lifecycle;
3536
import org.springframework.core.io.Resource;
3637
import org.springframework.lang.NonNull;
@@ -48,7 +49,9 @@ public class UnboundIdContainer
4849

4950
private int port = 53389;
5051

51-
private ApplicationContext context;
52+
private boolean isEphemeral;
53+
54+
private ConfigurableApplicationContext context;
5255

5356
private boolean running;
5457

@@ -67,6 +70,7 @@ public int getPort() {
6770
@Override
6871
public void setPort(int port) {
6972
this.port = port;
73+
this.isEphemeral = port == 0;
7074
}
7175

7276
@Override
@@ -81,7 +85,7 @@ public void afterPropertiesSet() {
8185

8286
@Override
8387
public void setApplicationContext(@NonNull ApplicationContext applicationContext) throws BeansException {
84-
this.context = applicationContext;
88+
this.context = (ConfigurableApplicationContext) applicationContext;
8589
}
8690

8791
@Override
@@ -133,6 +137,9 @@ private void importLdif(InMemoryDirectoryServer directoryServer) {
133137

134138
@Override
135139
public void stop() {
140+
if (this.isEphemeral && this.context != null && !this.context.isClosed()) {
141+
return;
142+
}
136143
this.directoryServer.shutDown(true);
137144
this.running = false;
138145
}

0 commit comments

Comments
 (0)