Skip to content

Commit ba7418e

Browse files
committed
adapt UnboundIdContainer to SmartLifecycle to support ApplicationContext restart
Closes: gh-17543 Signed-off-by: Andrey Litvitski <[email protected]>
1 parent a2d687f commit ba7418e

File tree

9 files changed

+20
-26
lines changed

9 files changed

+20
-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: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,15 +32,17 @@
3232
import org.springframework.context.ApplicationContext;
3333
import org.springframework.context.ApplicationContextAware;
3434
import org.springframework.context.Lifecycle;
35+
import org.springframework.context.SmartLifecycle;
3536
import org.springframework.core.io.Resource;
3637
import org.springframework.lang.NonNull;
3738
import org.springframework.util.StringUtils;
3839

3940
/**
4041
* @author Eddú Meléndez
42+
* @author Andrey Litvitski
4143
*/
42-
public class UnboundIdContainer
43-
implements EmbeddedLdapServerContainer, InitializingBean, DisposableBean, Lifecycle, ApplicationContextAware {
44+
public class UnboundIdContainer implements EmbeddedLdapServerContainer, InitializingBean, DisposableBean,
45+
SmartLifecycle, ApplicationContextAware {
4446

4547
private InMemoryDirectoryServer directoryServer;
4648

@@ -142,4 +144,20 @@ public boolean isRunning() {
142144
return this.running;
143145
}
144146

147+
@Override
148+
public boolean isAutoStartup() {
149+
return true;
150+
}
151+
152+
@Override
153+
public void stop(Runnable callback) {
154+
stop();
155+
callback.run();
156+
}
157+
158+
@Override
159+
public int getPhase() {
160+
return 0;
161+
}
162+
145163
}

0 commit comments

Comments
 (0)