diff --git a/core/src/main/java/org/springframework/security/config/JdbcUserServiceBeanDefinitionParser.java b/core/src/main/java/org/springframework/security/config/JdbcUserServiceBeanDefinitionParser.java
index aad96d4167..8b7b15d713 100644
--- a/core/src/main/java/org/springframework/security/config/JdbcUserServiceBeanDefinitionParser.java
+++ b/core/src/main/java/org/springframework/security/config/JdbcUserServiceBeanDefinitionParser.java
@@ -50,7 +50,7 @@ public class JdbcUserServiceBeanDefinitionParser extends AbstractUserDetailsServ
if (StringUtils.hasText(groupAuthoritiesQuery)) {
builder.addPropertyValue("enableGroups", Boolean.TRUE);
- builder.addPropertyValue("authoritiesByUsernameQuery", groupAuthoritiesQuery);
+ builder.addPropertyValue("groupAuthoritiesByUsernameQuery", groupAuthoritiesQuery);
}
}
}
diff --git a/core/src/test/java/org/springframework/security/config/JdbcUserServiceBeanDefinitionParserTests.java b/core/src/test/java/org/springframework/security/config/JdbcUserServiceBeanDefinitionParserTests.java
index 57b1f2d79d..cc6cfd952d 100644
--- a/core/src/test/java/org/springframework/security/config/JdbcUserServiceBeanDefinitionParserTests.java
+++ b/core/src/test/java/org/springframework/security/config/JdbcUserServiceBeanDefinitionParserTests.java
@@ -1,8 +1,6 @@
package org.springframework.security.config;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.*;
import org.junit.After;
import org.junit.Test;
@@ -13,6 +11,7 @@ import org.springframework.security.providers.dao.DaoAuthenticationProvider;
import org.springframework.security.userdetails.UserDetails;
import org.springframework.security.userdetails.jdbc.JdbcUserDetailsManager;
import org.springframework.security.util.AuthorityUtils;
+import org.springframework.security.util.FieldUtils;
import org.springframework.security.util.InMemoryXmlApplicationContext;
/**
@@ -51,24 +50,37 @@ public class JdbcUserServiceBeanDefinitionParserTests {
@Test
public void beanIdIsParsedCorrectly() {
setContext("" + DATA_SOURCE);
- JdbcUserDetailsManager mgr = (JdbcUserDetailsManager) appContext.getBean("myUserService");
+ assertTrue(appContext.getBean("myUserService") instanceof JdbcUserDetailsManager);
}
@Test
- public void usernameAndGroupQueriesAreParsedCorrectly() {
+ public void usernameAndAuthorityQueriesAreParsedCorrectly() throws Exception {
+ String userQuery = "select username, password, true from users where username = ?";
+ String authoritiesQuery = "select username, authority from authorities where username = ? and 1 = 1";
setContext("" + DATA_SOURCE);
+ "users-by-username-query='"+ userQuery +"' " +
+ "authorities-by-username-query='" + authoritiesQuery + "'/>" + DATA_SOURCE);
JdbcUserDetailsManager mgr = (JdbcUserDetailsManager) appContext.getBean("myUserService");
+ assertEquals(userQuery, FieldUtils.getFieldValue(mgr, "usersByUsernameQuery"));
+ assertEquals(authoritiesQuery, FieldUtils.getFieldValue(mgr, "authoritiesByUsernameQuery"));
assertTrue(mgr.loadUserByUsername("rod") != null);
}
+ @Test
+ public void groupQueryIsParsedCorrectly() throws Exception {
+ setContext("" + DATA_SOURCE);
+ JdbcUserDetailsManager mgr = (JdbcUserDetailsManager) appContext.getBean("myUserService");
+ assertEquals("blah blah", FieldUtils.getFieldValue(mgr, "groupAuthoritiesByUsernameQuery"));
+ assertTrue((Boolean)FieldUtils.getFieldValue(mgr, "enableGroups"));
+ }
+
@Test
public void cacheRefIsparsedCorrectly() {
setContext(""
+ DATA_SOURCE +USER_CACHE_XML);
- JdbcUserDetailsManager mgr = (JdbcUserDetailsManager) appContext.getBean("myUserService");
CachingUserDetailsService cachingUserService =
(CachingUserDetailsService) appContext.getBean("myUserService" + AbstractUserDetailsServiceBeanDefinitionParser.CACHING_SUFFIX);
assertSame(cachingUserService.getUserCache(), appContext.getBean("userCache"));