From 6979125ccf3d169f47ea8e6f4b6e1007a0a213ba Mon Sep 17 00:00:00 2001 From: Phillip Webb Date: Thu, 23 Jul 2020 13:05:15 -0700 Subject: [PATCH] Add noformat blocks around User.withUsername Find `User.withUsername` calls and protect them against formatting. Issue gh-8945 --- .../core/userdetails/UserDetailsMapFactoryBean.java | 2 ++ .../authentication/NamespacePasswordEncoderTests.java | 2 ++ .../web/reactive/EnableWebFluxSecurityTests.java | 2 ++ .../UserDetailsResourceFactoryBeanTests.java | 3 ++- ...veUserDetailsServiceAuthenticationManagerTests.java | 4 ++++ ...lsRepositoryReactiveAuthenticationManagerTests.java | 10 ++++++++-- .../MapReactiveUserDetailsServiceTests.java | 2 ++ .../security/core/userdetails/UserTests.java | 4 ++++ 8 files changed, 26 insertions(+), 3 deletions(-) diff --git a/config/src/main/java/org/springframework/security/config/core/userdetails/UserDetailsMapFactoryBean.java b/config/src/main/java/org/springframework/security/config/core/userdetails/UserDetailsMapFactoryBean.java index 0048eb7e4e..f455fd7363 100644 --- a/config/src/main/java/org/springframework/security/config/core/userdetails/UserDetailsMapFactoryBean.java +++ b/config/src/main/java/org/springframework/security/config/core/userdetails/UserDetailsMapFactoryBean.java @@ -67,12 +67,14 @@ public class UserDetailsMapFactoryBean implements FactoryBean users = factory.getObject(); - + // @formatter:off UserDetails expectedUser = User.withUsername("user") .password("password") .authorities("ROLE_USER") .build(); + // @formatter:on assertThat(users).containsExactly(expectedUser); } } diff --git a/core/src/test/java/org/springframework/security/authentication/ReactiveUserDetailsServiceAuthenticationManagerTests.java b/core/src/test/java/org/springframework/security/authentication/ReactiveUserDetailsServiceAuthenticationManagerTests.java index 73011471b0..d6352818cc 100644 --- a/core/src/test/java/org/springframework/security/authentication/ReactiveUserDetailsServiceAuthenticationManagerTests.java +++ b/core/src/test/java/org/springframework/security/authentication/ReactiveUserDetailsServiceAuthenticationManagerTests.java @@ -76,10 +76,12 @@ public class ReactiveUserDetailsServiceAuthenticationManagerTests { @Test public void authenticateWhenPasswordNotEqualThenBadCredentials() { + // @formatter:off UserDetails user = PasswordEncodedUser.withUsername(this.username) .password(this.password) .roles("USER") .build(); + // @formatter:on when(repository.findByUsername(user.getUsername())).thenReturn(Mono.just(user)); UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(username, this.password + "INVALID"); @@ -93,10 +95,12 @@ public class ReactiveUserDetailsServiceAuthenticationManagerTests { @Test public void authenticateWhenSuccessThenSuccess() { + // @formatter:off UserDetails user = PasswordEncodedUser.withUsername(this.username) .password(this.password) .roles("USER") .build(); + // @formatter:on when(repository.findByUsername(user.getUsername())).thenReturn(Mono.just(user)); UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(username, password); diff --git a/core/src/test/java/org/springframework/security/authentication/UserDetailsRepositoryReactiveAuthenticationManagerTests.java b/core/src/test/java/org/springframework/security/authentication/UserDetailsRepositoryReactiveAuthenticationManagerTests.java index 793edd5db3..937b61edb2 100644 --- a/core/src/test/java/org/springframework/security/authentication/UserDetailsRepositoryReactiveAuthenticationManagerTests.java +++ b/core/src/test/java/org/springframework/security/authentication/UserDetailsRepositoryReactiveAuthenticationManagerTests.java @@ -59,10 +59,12 @@ public class UserDetailsRepositoryReactiveAuthenticationManagerTests { @Mock private UserDetailsChecker postAuthenticationChecks; + // @formatter:off private UserDetails user = User.withUsername("user") .password("password") .roles("USER") .build(); + // @formatter:on private UserDetailsRepositoryReactiveAuthenticationManager manager; @@ -176,12 +178,13 @@ public class UserDetailsRepositoryReactiveAuthenticationManagerTests { @Test(expected = AccountExpiredException.class) public void authenticateWhenAccountExpiredThenException() { this.manager.setPasswordEncoder(this.encoder); - + // @formatter:off UserDetails expiredUser = User.withUsername("user") .password("password") .roles("USER") .accountExpired(true) .build(); + // @formatter:on when(this.userDetailsService.findByUsername(any())).thenReturn(Mono.just(expiredUser)); UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken( @@ -193,12 +196,13 @@ public class UserDetailsRepositoryReactiveAuthenticationManagerTests { @Test(expected = LockedException.class) public void authenticateWhenAccountLockedThenException() { this.manager.setPasswordEncoder(this.encoder); - + // @formatter:off UserDetails lockedUser = User.withUsername("user") .password("password") .roles("USER") .accountLocked(true) .build(); + // @formatter:on when(this.userDetailsService.findByUsername(any())).thenReturn(Mono.just(lockedUser)); UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken( @@ -211,11 +215,13 @@ public class UserDetailsRepositoryReactiveAuthenticationManagerTests { public void authenticateWhenAccountDisabledThenException() { this.manager.setPasswordEncoder(this.encoder); + // @formatter:off UserDetails disabledUser = User.withUsername("user") .password("password") .roles("USER") .disabled(true) .build(); + // @formatter:on when(this.userDetailsService.findByUsername(any())).thenReturn(Mono.just(disabledUser)); UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken( diff --git a/core/src/test/java/org/springframework/security/core/userdetails/MapReactiveUserDetailsServiceTests.java b/core/src/test/java/org/springframework/security/core/userdetails/MapReactiveUserDetailsServiceTests.java index 97154ac416..3bf1fd7007 100644 --- a/core/src/test/java/org/springframework/security/core/userdetails/MapReactiveUserDetailsServiceTests.java +++ b/core/src/test/java/org/springframework/security/core/userdetails/MapReactiveUserDetailsServiceTests.java @@ -27,10 +27,12 @@ import org.junit.Test; import reactor.core.publisher.Mono; public class MapReactiveUserDetailsServiceTests { + // @formatter:off private static final UserDetails USER_DETAILS = User.withUsername("user") .password("password") .roles("USER") .build(); + // @formatter:on private MapReactiveUserDetailsService users = new MapReactiveUserDetailsService(Arrays.asList(USER_DETAILS)); diff --git a/core/src/test/java/org/springframework/security/core/userdetails/UserTests.java b/core/src/test/java/org/springframework/security/core/userdetails/UserTests.java index 00478f6474..36f4ce417e 100644 --- a/core/src/test/java/org/springframework/security/core/userdetails/UserTests.java +++ b/core/src/test/java/org/springframework/security/core/userdetails/UserTests.java @@ -203,11 +203,13 @@ public class UserTests { @Test public void withUsernameWhenPasswordAndPasswordEncoderThenEncodes() { + // @formatter:off UserDetails withEncodedPassword = User.withUsername("user") .passwordEncoder(p -> p + "encoded") .password("password") .roles("USER") .build(); + // @formatter:on assertThat(withEncodedPassword.getPassword()).isEqualTo("passwordencoded"); } @@ -215,12 +217,14 @@ public class UserTests { @Test public void withUsernameWhenPasswordAndPasswordEncoderTwiceThenEncodesOnce() { Function encoder = p -> p + "encoded"; + // @formatter:off UserDetails withEncodedPassword = User.withUsername("user") .passwordEncoder(encoder) .password("password") .passwordEncoder(encoder) .roles("USER") .build(); + // @formatter:on assertThat(withEncodedPassword.getPassword()).isEqualTo("passwordencoded"); }