From 886bfa3daa286ece4f4ce5436c568411a525640b Mon Sep 17 00:00:00 2001 From: Rob Winch Date: Mon, 5 Feb 2018 16:46:42 -0600 Subject: [PATCH] NamespacePasswordEncoderTests groovy->java Issue: gh-4939 --- .../NamespacePasswordEncoderTests.java} | 116 ++++++++++-------- 1 file changed, 63 insertions(+), 53 deletions(-) rename config/src/test/{groovy/org/springframework/security/config/annotation/authentication/NamespacePasswordEncoderTests.groovy => java/org/springframework/security/config/annotation/authentication/NamespacePasswordEncoderTests.java} (50%) diff --git a/config/src/test/groovy/org/springframework/security/config/annotation/authentication/NamespacePasswordEncoderTests.groovy b/config/src/test/java/org/springframework/security/config/annotation/authentication/NamespacePasswordEncoderTests.java similarity index 50% rename from config/src/test/groovy/org/springframework/security/config/annotation/authentication/NamespacePasswordEncoderTests.groovy rename to config/src/test/java/org/springframework/security/config/annotation/authentication/NamespacePasswordEncoderTests.java index 5a584c8ffd..6e7eb91480 100644 --- a/config/src/test/groovy/org/springframework/security/config/annotation/authentication/NamespacePasswordEncoderTests.groovy +++ b/config/src/test/java/org/springframework/security/config/annotation/authentication/NamespacePasswordEncoderTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2013 the original author or authors. + * Copyright 2002-2018 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. @@ -13,61 +13,67 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.security.config.annotation.authentication -import static org.springframework.security.config.annotation.authentication.PasswordEncoderConfigurerConfigs.* +package org.springframework.security.config.annotation.authentication; -import javax.sql.DataSource - -import org.springframework.context.annotation.Bean -import org.springframework.context.annotation.Configuration -import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder -import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType -import org.springframework.ldap.core.support.BaseLdapPathContextSource; -import org.springframework.security.authentication.AuthenticationManager -import org.springframework.security.authentication.UsernamePasswordAuthenticationToken -import org.springframework.security.config.annotation.BaseSpringSpec -import org.springframework.security.config.annotation.authentication.configurers.ldap.LdapAuthenticationProviderConfigurer; +import org.junit.Rule; +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder; +import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; -import org.springframework.security.core.authority.AuthorityUtils -import org.springframework.security.core.userdetails.User -import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder -import org.springframework.security.ldap.authentication.LdapAuthenticationProvider; -import org.springframework.security.provisioning.InMemoryUserDetailsManager +import org.springframework.security.config.test.SpringTestRule; +import org.springframework.security.core.userdetails.User; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.provisioning.InMemoryUserDetailsManager; +import org.springframework.test.web.servlet.MockMvc; + +import javax.sql.DataSource; + +import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestBuilders.formLogin; +import static org.springframework.security.test.web.servlet.response.SecurityMockMvcResultMatchers.authenticated; /** - * * @author Rob Winch - * */ -class NamespacePasswordEncoderTests extends BaseSpringSpec { - def "password-encoder@ref with in memory"() { - when: - loadConfig(PasswordEncoderWithInMemoryConfig) - then: - authenticationManager.authenticate(new UsernamePasswordAuthenticationToken("user", "password")) +public class NamespacePasswordEncoderTests { + + @Rule + public final SpringTestRule spring = new SpringTestRule(); + + @Autowired + private MockMvc mockMvc; + + @Test + public void passwordEncoderRefWithInMemory() throws Exception { + this.spring.register(PasswordEncoderWithInMemoryConfig.class).autowire(); + + this.mockMvc.perform(formLogin()) + .andExpect(authenticated()); } @EnableWebSecurity static class PasswordEncoderWithInMemoryConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { - - BCryptPasswordEncoder encoder = new BCryptPasswordEncoder() + BCryptPasswordEncoder encoder = new BCryptPasswordEncoder(); auth .inMemoryAuthentication() - .withUser("user").password(encoder.encode("password")).roles("USER").and() - .passwordEncoder(encoder) + .withUser("user").password(encoder.encode("password")).roles("USER").and() + .passwordEncoder(encoder); } } - def "password-encoder@ref with jdbc"() { - when: - loadConfig(PasswordEncoderWithJdbcConfig) - then: - authenticationManager.authenticate(new UsernamePasswordAuthenticationToken("user", "password")) + @Test + public void passwordEncoderRefWithJdbc() throws Exception { + this.spring.register(PasswordEncoderWithJdbcConfig.class).autowire(); + + this.mockMvc.perform(formLogin()) + .andExpect(authenticated()); } @EnableWebSecurity @@ -75,45 +81,49 @@ class NamespacePasswordEncoderTests extends BaseSpringSpec { @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { - BCryptPasswordEncoder encoder = new BCryptPasswordEncoder() + BCryptPasswordEncoder encoder = new BCryptPasswordEncoder(); auth .jdbcAuthentication() - .withDefaultSchema() - .dataSource(dataSource()) - .withUser("user").password(encoder.encode("password")).roles("USER").and() - .passwordEncoder(encoder) + .withDefaultSchema() + .dataSource(dataSource()) + .withUser("user").password(encoder.encode("password")).roles("USER").and() + .passwordEncoder(encoder); } @Bean public DataSource dataSource() { - EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder() + EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder(); return builder.setType(EmbeddedDatabaseType.HSQL).build(); } } - def "password-encoder@ref with userdetailsservice"() { - when: - loadConfig(PasswordEncoderWithUserDetailsServiceConfig) - then: - authenticationManager.authenticate(new UsernamePasswordAuthenticationToken("user", "password")) + @Test + public void passwordEncoderRefWithUserDetailsService() throws Exception { + this.spring.register(PasswordEncoderWithUserDetailsServiceConfig.class).autowire(); + + this.mockMvc.perform(formLogin()) + .andExpect(authenticated()); } @EnableWebSecurity static class PasswordEncoderWithUserDetailsServiceConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { - - BCryptPasswordEncoder encoder = new BCryptPasswordEncoder() - User user = new User("user",encoder.encode("password"), AuthorityUtils.createAuthorityList("ROLE_USER")) - InMemoryUserDetailsManager uds = new InMemoryUserDetailsManager([user]) + BCryptPasswordEncoder encoder = new BCryptPasswordEncoder(); + UserDetails user = User.withUsername("user") + .passwordEncoder(encoder::encode) + .password("password") + .roles("USER") + .build(); + InMemoryUserDetailsManager uds = new InMemoryUserDetailsManager(user); auth .userDetailsService(uds) - .passwordEncoder(encoder) + .passwordEncoder(encoder); } @Bean public DataSource dataSource() { - EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder() + EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder(); return builder.setType(EmbeddedDatabaseType.HSQL).build(); } }