diff --git a/config/src/main/java/org/springframework/security/config/annotation/authentication/configurers/provisioning/UserDetailsManagerConfigurer.java b/config/src/main/java/org/springframework/security/config/annotation/authentication/configurers/provisioning/UserDetailsManagerConfigurer.java index a03c45df6c..6dfd328c95 100644 --- a/config/src/main/java/org/springframework/security/config/annotation/authentication/configurers/provisioning/UserDetailsManagerConfigurer.java +++ b/config/src/main/java/org/springframework/security/config/annotation/authentication/configurers/provisioning/UserDetailsManagerConfigurer.java @@ -275,7 +275,7 @@ public class UserDetailsManagerConfigurer, C return this; } - private UserDetails build() { + UserDetails build() { return this.user.build(); } } diff --git a/config/src/test/groovy/org/springframework/security/config/annotation/provisioning/UserDetailsManagerConfigurerTests.groovy b/config/src/test/groovy/org/springframework/security/config/annotation/provisioning/UserDetailsManagerConfigurerTests.groovy deleted file mode 100644 index bd38dcf3bd..0000000000 --- a/config/src/test/groovy/org/springframework/security/config/annotation/provisioning/UserDetailsManagerConfigurerTests.groovy +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright 2002-2013 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.springframework.security.config.annotation.provisioning - -import org.springframework.security.config.annotation.authentication.configurers.provisioning.UserDetailsManagerConfigurer; -import org.springframework.security.core.authority.SimpleGrantedAuthority -import org.springframework.security.core.userdetails.UserDetails -import org.springframework.security.provisioning.InMemoryUserDetailsManager - -import spock.lang.Specification - -/** - * - * @author Rob Winch - * - */ -class UserDetailsManagerConfigurerTests extends Specification { - - def "all attributes supported"() { - setup: - InMemoryUserDetailsManager userDetailsManager = new InMemoryUserDetailsManager([]) - when: - UserDetails userDetails = new UserDetailsManagerConfigurer>(userDetailsManager) - .withUser("user") - .password("password") - .roles("USER") - .disabled(true) - .accountExpired(true) - .accountLocked(true) - .credentialsExpired(true) - .build() - then: - userDetails.username == 'user' - userDetails.password == 'password' - userDetails.authorities.collect { it.authority } == ["ROLE_USER"] - !userDetails.accountNonExpired - !userDetails.accountNonLocked - !userDetails.credentialsNonExpired - !userDetails.enabled - } - - def "authorities(GrantedAuthorities...) works"() { - setup: - InMemoryUserDetailsManager userDetailsManager = new InMemoryUserDetailsManager([]) - SimpleGrantedAuthority authority = new SimpleGrantedAuthority("ROLE_USER") - when: - UserDetails userDetails = new UserDetailsManagerConfigurer>(userDetailsManager) - .withUser("user") - .password("password") - .authorities(authority) - .build() - then: - userDetails.authorities == [authority] as Set - } - - def "authorities(String...) works"() { - setup: - InMemoryUserDetailsManager userDetailsManager = new InMemoryUserDetailsManager([]) - String authority = "ROLE_USER" - when: - UserDetails userDetails = new UserDetailsManagerConfigurer>(userDetailsManager) - .withUser("user") - .password("password") - .authorities(authority) - .build() - then: - userDetails.authorities.collect { it.authority } == [authority] - } - - - def "authorities(List) works"() { - setup: - InMemoryUserDetailsManager userDetailsManager = new InMemoryUserDetailsManager([]) - SimpleGrantedAuthority authority = new SimpleGrantedAuthority("ROLE_USER") - when: - UserDetails userDetails = new UserDetailsManagerConfigurer>(userDetailsManager) - .withUser("user") - .password("password") - .authorities([authority]) - .build() - then: - userDetails.authorities == [authority] as Set - } -} diff --git a/config/src/test/java/org/springframework/security/config/annotation/authentication/configurers/provisioning/UserDetailsManagerConfigurerTests.java b/config/src/test/java/org/springframework/security/config/annotation/authentication/configurers/provisioning/UserDetailsManagerConfigurerTests.java new file mode 100644 index 0000000000..7fe404795f --- /dev/null +++ b/config/src/test/java/org/springframework/security/config/annotation/authentication/configurers/provisioning/UserDetailsManagerConfigurerTests.java @@ -0,0 +1,107 @@ +/* + * Copyright 2002-2017 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.security.config.annotation.authentication.configurers.provisioning; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.util.Arrays; + +import org.junit.Before; +import org.junit.Test; +import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; +import org.springframework.security.core.authority.SimpleGrantedAuthority; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.provisioning.InMemoryUserDetailsManager; + +/** +* +* @author Rob Winch +* @author Adolfo Eloy +*/ +public class UserDetailsManagerConfigurerTests { + + private InMemoryUserDetailsManager userDetailsManager; + + @Before + public void setup() { + userDetailsManager = new InMemoryUserDetailsManager(); + } + + @Test + public void allAttributesSupported() { + UserDetails userDetails = new UserDetailsManagerConfigurer>(userDetailsManager) + .withUser("user") + .password("password") + .roles("USER") + .disabled(true) + .accountExpired(true) + .accountLocked(true) + .credentialsExpired(true) + .build(); + + assertThat(userDetails.getUsername()).isEqualTo("user"); + assertThat(userDetails.getPassword()).isEqualTo("password"); + assertThat(userDetails.getAuthorities().stream().findFirst().get().getAuthority()).isEqualTo("ROLE_USER"); + assertThat(userDetails.isAccountNonExpired()).isFalse(); + assertThat(userDetails.isAccountNonLocked()).isFalse(); + assertThat(userDetails.isCredentialsNonExpired()).isFalse(); + assertThat(userDetails.isEnabled()).isFalse(); + } + + @Test + public void authoritiesWithGrantedAuthorityWorks() { + SimpleGrantedAuthority authority = new SimpleGrantedAuthority("ROLE_USER"); + + UserDetails userDetails = new UserDetailsManagerConfigurer>(userDetailsManager) + .withUser("user") + .password("password") + .authorities(authority) + .build(); + + assertThat(userDetails.getAuthorities().stream().findFirst().get()).isEqualTo(authority); + } + + @Test + public void authoritiesWithStringAuthorityWorks() { + String authority = "ROLE_USER"; + + UserDetails userDetails = new UserDetailsManagerConfigurer>(userDetailsManager) + .withUser("user") + .password("password") + .authorities(authority) + .build(); + + assertThat(userDetails.getAuthorities().stream().findFirst().get().getAuthority()).isEqualTo(authority); + } + + @Test + public void authoritiesWithAListOfGrantedAuthorityWorks() { + SimpleGrantedAuthority authority = new SimpleGrantedAuthority("ROLE_USER"); + + UserDetails userDetails = new UserDetailsManagerConfigurer>(userDetailsManager) + .withUser("user") + .password("password") + .authorities(Arrays.asList(authority)) + .build(); + + assertThat(userDetails.getAuthorities().stream().findFirst().get()).isEqualTo(authority); + } +}