@ -42,6 +42,8 @@ import org.springframework.security.core.userdetails.User;
@@ -42,6 +42,8 @@ import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetailsService ;
import org.springframework.security.crypto.password.PasswordEncoder ;
import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository ;
import org.springframework.security.oauth2.jwt.JwtDecoder ;
import org.springframework.security.oauth2.server.resource.introspection.OAuth2TokenIntrospectionClient ;
import org.springframework.security.provisioning.InMemoryUserDetailsManager ;
import static org.assertj.core.api.Assertions.assertThat ;
@ -51,6 +53,7 @@ import static org.mockito.Mockito.mock;
@@ -51,6 +53,7 @@ import static org.mockito.Mockito.mock;
* Tests for { @link UserDetailsServiceAutoConfiguration } .
*
* @author Madhura Bhave
* @author HaiTao Zhang
* /
@ExtendWith ( OutputCaptureExtension . class )
class UserDetailsServiceAutoConfigurationTests {
@ -99,6 +102,22 @@ class UserDetailsServiceAutoConfigurationTests {
@@ -99,6 +102,22 @@ class UserDetailsServiceAutoConfigurationTests {
} ) ;
}
@Test
void defaultUserNotCreatedIfResourceServerWithOpaqueIsUsed ( ) {
this . contextRunner . withUserConfiguration ( TestConfigWithIntrospectionClient . class ) . run ( ( context ) - > {
assertThat ( context ) . hasSingleBean ( OAuth2TokenIntrospectionClient . class ) ;
assertThat ( context ) . doesNotHaveBean ( UserDetailsService . class ) ;
} ) ;
}
@Test
void defaultUserNotCreatedIfResourceServerWithJWTIsUsed ( ) {
this . contextRunner . withUserConfiguration ( TestConfigWithJwtDecoder . class ) . run ( ( context ) - > {
assertThat ( context ) . hasSingleBean ( JwtDecoder . class ) ;
assertThat ( context ) . doesNotHaveBean ( UserDetailsService . class ) ;
} ) ;
}
@Test
void userDetailsServiceWhenPasswordEncoderAbsentAndDefaultPassword ( ) {
this . contextRunner . withUserConfiguration ( TestSecurityConfiguration . class ) . run ( ( ( context ) - > {
@ -208,6 +227,28 @@ class UserDetailsServiceAutoConfigurationTests {
@@ -208,6 +227,28 @@ class UserDetailsServiceAutoConfigurationTests {
}
@Configuration ( proxyBeanMethods = false )
@Import ( TestSecurityConfiguration . class )
static class TestConfigWithJwtDecoder {
@Bean
JwtDecoder jwtDecoder ( ) {
return mock ( JwtDecoder . class ) ;
}
}
@Configuration ( proxyBeanMethods = false )
@Import ( TestSecurityConfiguration . class )
static class TestConfigWithIntrospectionClient {
@Bean
OAuth2TokenIntrospectionClient introspectionClient ( ) {
return mock ( OAuth2TokenIntrospectionClient . class ) ;
}
}
@Configuration ( proxyBeanMethods = false )
@Import ( TestSecurityConfiguration . class )
static class TestConfigWithAuthenticationManagerBuilder {