From df96e5573f441db1a12240d7aec17fb1454ae168 Mon Sep 17 00:00:00 2001 From: Rob Winch Date: Tue, 24 Feb 2015 16:12:02 -0600 Subject: [PATCH] Add test .properties Authentication Java Config --- .../AuthenticationManagerBuilderTests.groovy | 53 +++++++++++++++++-- 1 file changed, 49 insertions(+), 4 deletions(-) diff --git a/config/src/test/groovy/org/springframework/security/config/annotation/authentication/AuthenticationManagerBuilderTests.groovy b/config/src/test/groovy/org/springframework/security/config/annotation/authentication/AuthenticationManagerBuilderTests.groovy index f473a3f7ea..63a8a744c5 100644 --- a/config/src/test/groovy/org/springframework/security/config/annotation/authentication/AuthenticationManagerBuilderTests.groovy +++ b/config/src/test/groovy/org/springframework/security/config/annotation/authentication/AuthenticationManagerBuilderTests.groovy @@ -15,18 +15,28 @@ */ package org.springframework.security.config.annotation.authentication +import org.springframework.beans.factory.annotation.Value import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Configuration +import org.springframework.context.annotation.Import +import org.springframework.core.io.Resource; import org.springframework.security.authentication.AuthenticationEventPublisher import org.springframework.security.authentication.AuthenticationManager import org.springframework.security.authentication.AuthenticationProvider -import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.authentication.ProviderManager +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken +import org.springframework.security.authentication.dao.DaoAuthenticationProvider; import org.springframework.security.config.annotation.BaseSpringSpec import org.springframework.security.config.annotation.ObjectPostProcessor -import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; +import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder +import org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration +import org.springframework.security.config.annotation.authentication.configuration.EnableGlobalAuthentication +import org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; -import org.springframework.security.core.Authentication; +import org.springframework.security.core.Authentication +import org.springframework.security.core.userdetails.UserDetailsService +import org.springframework.security.provisioning.InMemoryUserDetailsManager; /** * @@ -119,4 +129,39 @@ class AuthenticationManagerBuilderTests extends BaseSpringSpec { then: auth.isConfigured() == false } + + def "user from properties"() { + setup: + loadConfig(UserFromPropertiesConfig) + AuthenticationManager manager = context.getBean(AuthenticationConfiguration).authenticationManager + when: + manager.authenticate(new UsernamePasswordAuthenticationToken("joe","joespassword")) + then: + noExceptionThrown() + } + + @Configuration + @EnableGlobalAuthentication + @Import(ObjectPostProcessorConfiguration.class) + static class UserFromPropertiesConfig { + + @Bean + public AuthenticationManager authenticationManager() { + return new ProviderManager(Arrays.asList(authenticationProvider())); + } + + @Bean + public AuthenticationProvider authenticationProvider() { + DaoAuthenticationProvider provider = new DaoAuthenticationProvider(); + provider.setUserDetailsService(userDetailsService()) + return provider; + } + + @Bean + public UserDetailsService userDetailsService(@Value("classpath:org/springframework/security/config/users.properties") Resource users) { + Properties properties = new Properties(); + properties.load(users.getInputStream()); + return new InMemoryUserDetailsManager(properties); + } + } }