@ -1,5 +1,5 @@
@@ -1,5 +1,5 @@
/ *
* Copyright 2002 - 2022 the original author or authors .
* Copyright 2002 - 2024 the original author or authors .
*
* Licensed under the Apache License , Version 2 . 0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
@ -19,7 +19,10 @@ package org.springframework.security.config.authentication;
@@ -19,7 +19,10 @@ package org.springframework.security.config.authentication;
import org.junit.jupiter.api.AfterEach ;
import org.junit.jupiter.api.Test ;
import org.w3c.dom.Element ;
import org.xml.sax.SAXParseException ;
import org.springframework.beans.factory.parsing.BeanDefinitionParsingException ;
import org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException ;
import org.springframework.security.authentication.AuthenticationManager ;
import org.springframework.security.authentication.CachingUserDetailsService ;
import org.springframework.security.authentication.ProviderManager ;
@ -33,6 +36,7 @@ import org.springframework.security.provisioning.JdbcUserDetailsManager;
@@ -33,6 +36,7 @@ import org.springframework.security.provisioning.JdbcUserDetailsManager;
import org.springframework.security.util.FieldUtils ;
import static org.assertj.core.api.Assertions.assertThat ;
import static org.assertj.core.api.Assertions.assertThatExceptionOfType ;
import static org.mockito.Mockito.mock ;
/ * *
@ -160,6 +164,38 @@ public class JdbcUserServiceBeanDefinitionParserTests {
@@ -160,6 +164,38 @@ public class JdbcUserServiceBeanDefinitionParserTests {
assertThat ( AuthorityUtils . authorityListToSet ( rod . getAuthorities ( ) ) ) . contains ( "PREFIX_ROLE_SUPERVISOR" ) ;
}
@Test
public void testEmptyDataSourceRef ( ) {
// @formatter:off
String xml = "<authentication-manager>"
+ " <authentication-provider>"
+ " <jdbc-user-service data-source-ref=''/>"
+ " </authentication-provider>"
+ "</authentication-manager>" ;
assertThatExceptionOfType ( BeanDefinitionParsingException . class )
. isThrownBy ( ( ) - > setContext ( xml ) )
. withFailMessage ( "Expected exception due to empty data-source-ref" )
. withMessageContaining ( "data-source-ref is required for jdbc-user-service" ) ;
// @formatter:on
}
@Test
public void testMissingDataSourceRef ( ) {
// @formatter:off
String xml = "<authentication-manager>"
+ " <authentication-provider>"
+ " <jdbc-user-service/>"
+ " </authentication-provider>"
+ "</authentication-manager>" ;
assertThatExceptionOfType ( XmlBeanDefinitionStoreException . class )
. isThrownBy ( ( ) - > setContext ( xml ) )
. withFailMessage ( "Expected exception due to missing data-source-ref" )
. havingRootCause ( )
. isInstanceOf ( SAXParseException . class )
. withMessageContaining ( "Attribute 'data-source-ref' must appear on element 'jdbc-user-service'" ) ;
// @formatter:on
}
private void setContext ( String context ) {
this . appContext = new InMemoryXmlApplicationContext ( context ) ;
}