1
0
mirror of synced 2026-08-05 09:47:05 +00:00

Remove blank lines from all tests

Remove all blank lines from test code so that test methods are
visually grouped together. This generally helps to make the test
classes easer to scan, however, the "given" / "when" / "then"
blocks used by some tests are now not as easy to discern.

Issue gh-8945
This commit is contained in:
Phillip Webb
2020-08-01 19:33:21 -07:00
committed by Rob Winch
parent 5bdd757108
commit a5aa6b3d7f
787 changed files with 9 additions and 10241 deletions
@@ -45,9 +45,7 @@ public class TestSecurityContextHolderTests {
public void clearContextClearsBoth() {
SecurityContextHolder.setContext(this.context);
TestSecurityContextHolder.setContext(this.context);
TestSecurityContextHolder.clearContext();
assertThat(SecurityContextHolder.getContext()).isNotSameAs(this.context);
assertThat(TestSecurityContextHolder.getContext()).isNotSameAs(this.context);
}
@@ -61,7 +59,6 @@ public class TestSecurityContextHolderTests {
@Test
public void setContextSetsBoth() {
TestSecurityContextHolder.setContext(this.context);
assertThat(TestSecurityContextHolder.getContext()).isSameAs(this.context);
assertThat(SecurityContextHolder.getContext()).isSameAs(this.context);
}
@@ -69,9 +66,7 @@ public class TestSecurityContextHolderTests {
@Test
public void setContextWithAuthentication() {
Authentication authentication = mock(Authentication.class);
TestSecurityContextHolder.setAuthentication(authentication);
assertThat(TestSecurityContextHolder.getContext().getAuthentication()).isSameAs(authentication);
}
@@ -46,7 +46,6 @@ public class SecurityTestExecutionListenerTests {
public void reactorContextTestSecurityContextHolderExecutionListenerTestIsRegistered() {
Mono<String> name = ReactiveSecurityContextHolder.getContext().map(SecurityContext::getAuthentication)
.map(Principal::getName);
StepVerifier.create(name).expectNext("user").verifyComplete();
}
@@ -30,7 +30,6 @@ public class WithMockCustomUserSecurityContextFactory implements WithSecurityCon
@Override
public SecurityContext createSecurityContext(WithMockCustomUser customUser) {
SecurityContext context = SecurityContextHolder.createEmptyContext();
CustomUserDetails principal = new CustomUserDetails(customUser.name(), customUser.username());
Authentication auth = new UsernamePasswordAuthenticationToken(principal, "password",
principal.getAuthorities());
@@ -35,7 +35,6 @@ import static org.assertj.core.api.Assertions.assertThat;
/**
* @author Rob Winch
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = WithMockUserTests.Config.class)
public class WithMockUserTests {
@@ -40,7 +40,6 @@ import static org.assertj.core.api.Assertions.assertThat;
/**
* @author Rob Winch
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = WithUserDetailsTests.Config.class)
public class WithUserDetailsTests {
@@ -20,7 +20,6 @@ package org.springframework.security.test.context.support;
* @author Rob Winch
* @since 5.0
*/
import java.util.concurrent.ForkJoinPool;
import org.junit.After;
@@ -60,20 +59,15 @@ public class ReactorContextTestExecutionListenerTests {
@Test
public void beforeTestMethodWhenSecurityContextEmptyThenReactorContextNull() throws Exception {
this.listener.beforeTestMethod(this.testContext);
Mono<?> result = ReactiveSecurityContextHolder.getContext();
StepVerifier.create(result).verifyComplete();
}
@Test
public void beforeTestMethodWhenNullAuthenticationThenReactorContextNull() throws Exception {
TestSecurityContextHolder.setContext(new SecurityContextImpl());
this.listener.beforeTestMethod(this.testContext);
Mono<?> result = ReactiveSecurityContextHolder.getContext();
StepVerifier.create(result).verifyComplete();
}
@@ -82,9 +76,7 @@ public class ReactorContextTestExecutionListenerTests {
TestingAuthenticationToken expectedAuthentication = new TestingAuthenticationToken("user", "password",
"ROLE_USER");
TestSecurityContextHolder.setAuthentication(expectedAuthentication);
this.listener.beforeTestMethod(this.testContext);
assertAuthentication(expectedAuthentication);
}
@@ -94,9 +86,7 @@ public class ReactorContextTestExecutionListenerTests {
"ROLE_USER");
SecurityContext context = new CustomContext(expectedAuthentication);
TestSecurityContextHolder.setContext(context);
this.listener.beforeTestMethod(this.testContext);
assertSecurityContext(context);
}
@@ -108,13 +98,10 @@ public class ReactorContextTestExecutionListenerTests {
TestingAuthenticationToken contextHolder = new TestingAuthenticationToken("contextHolder", "password",
"ROLE_USER");
TestSecurityContextHolder.setAuthentication(contextHolder);
this.listener.beforeTestMethod(this.testContext);
Mono<Authentication> authentication = Mono.just("any")
.flatMap((s) -> ReactiveSecurityContextHolder.getContext().map(SecurityContext::getAuthentication))
.subscriberContext(ReactiveSecurityContextHolder.withAuthentication(expectedAuthentication));
StepVerifier.create(authentication).expectNext(expectedAuthentication).verifyComplete();
}
@@ -125,39 +112,31 @@ public class ReactorContextTestExecutionListenerTests {
TestingAuthenticationToken contextHolder = new TestingAuthenticationToken("contextHolder", "password",
"ROLE_USER");
TestSecurityContextHolder.setAuthentication(contextHolder);
this.listener.beforeTestMethod(this.testContext);
Mono<Authentication> authentication = Mono.just("any")
.flatMap((s) -> ReactiveSecurityContextHolder.getContext().map(SecurityContext::getAuthentication))
.subscriberContext(ReactiveSecurityContextHolder.clearContext());
StepVerifier.create(authentication).verifyComplete();
}
@Test
public void afterTestMethodWhenSecurityContextEmptyThenNoError() throws Exception {
this.listener.beforeTestMethod(this.testContext);
this.listener.afterTestMethod(this.testContext);
}
@Test
public void afterTestMethodWhenSetupThenReactorContextNull() throws Exception {
beforeTestMethodWhenAuthenticationThenReactorContextHasAuthentication();
this.listener.afterTestMethod(this.testContext);
assertThat(Mono.subscriberContext().block().isEmpty()).isTrue();
}
@Test
public void afterTestMethodWhenDifferentHookIsRegistered() throws Exception {
Object obj = new Object();
Hooks.onLastOperator("CUSTOM_HOOK", (p) -> Mono.just(obj));
this.listener.afterTestMethod(this.testContext);
Object result = Mono.subscriberContext().block();
assertThat(result).isEqualTo(obj);
}
@@ -176,22 +155,18 @@ public class ReactorContextTestExecutionListenerTests {
TestingAuthenticationToken contextHolder = new TestingAuthenticationToken("contextHolder", "password",
"ROLE_USER");
TestSecurityContextHolder.setAuthentication(contextHolder);
this.listener.beforeTestMethod(this.testContext);
ForkJoinPool.commonPool().submit(() -> assertAuthentication(contextHolder)).join();
}
public void assertAuthentication(Authentication expected) {
Mono<Authentication> authentication = ReactiveSecurityContextHolder.getContext()
.map(SecurityContext::getAuthentication);
StepVerifier.create(authentication).expectNext(expected).verifyComplete();
}
private void assertSecurityContext(SecurityContext expected) {
Mono<SecurityContext> securityContext = ReactiveSecurityContextHolder.getContext();
StepVerifier.create(securityContext).expectNext(expected).verifyComplete();
}
@@ -32,7 +32,6 @@ public class WithAnonymousUserTests {
public void defaults() {
WithSecurityContext context = AnnotatedElementUtils.findMergedAnnotation(Annotated.class,
WithSecurityContext.class);
assertThat(context.setupBefore()).isEqualTo(TestExecutionEvent.TEST_METHOD);
}
@@ -40,7 +39,6 @@ public class WithAnonymousUserTests {
public void findMergedAnnotationWhenSetupExplicitThenOverridden() {
WithSecurityContext context = AnnotatedElementUtils.findMergedAnnotation(SetupExplicit.class,
WithSecurityContext.class);
assertThat(context.setupBefore()).isEqualTo(TestExecutionEvent.TEST_METHOD);
}
@@ -48,7 +46,6 @@ public class WithAnonymousUserTests {
public void findMergedAnnotationWhenSetupOverriddenThenOverridden() {
WithSecurityContext context = AnnotatedElementUtils.findMergedAnnotation(SetupOverridden.class,
WithSecurityContext.class);
assertThat(context.setupBefore()).isEqualTo(TestExecutionEvent.TEST_EXECUTION);
}
@@ -49,7 +49,6 @@ public class WithMockUserSecurityContextFactoryTests {
given(this.withUser.password()).willReturn("password");
given(this.withUser.roles()).willReturn(new String[] { "USER" });
given(this.withUser.authorities()).willReturn(new String[] {});
assertThat(this.factory.createSecurityContext(this.withUser).getAuthentication().getName())
.isEqualTo(this.withUser.value());
}
@@ -60,7 +59,6 @@ public class WithMockUserSecurityContextFactoryTests {
given(this.withUser.password()).willReturn("password");
given(this.withUser.roles()).willReturn(new String[] { "USER" });
given(this.withUser.authorities()).willReturn(new String[] {});
assertThat(this.factory.createSecurityContext(this.withUser).getAuthentication().getName())
.isEqualTo(this.withUser.username());
}
@@ -71,7 +69,6 @@ public class WithMockUserSecurityContextFactoryTests {
given(this.withUser.password()).willReturn("password");
given(this.withUser.roles()).willReturn(new String[] { "USER", "CUSTOM" });
given(this.withUser.authorities()).willReturn(new String[] {});
assertThat(this.factory.createSecurityContext(this.withUser).getAuthentication().getAuthorities())
.extracting("authority").containsOnly("ROLE_USER", "ROLE_CUSTOM");
}
@@ -82,7 +79,6 @@ public class WithMockUserSecurityContextFactoryTests {
given(this.withUser.password()).willReturn("password");
given(this.withUser.roles()).willReturn(new String[] { "USER" });
given(this.withUser.authorities()).willReturn(new String[] { "USER", "CUSTOM" });
assertThat(this.factory.createSecurityContext(this.withUser).getAuthentication().getAuthorities())
.extracting("authority").containsOnly("USER", "CUSTOM");
}
@@ -92,7 +88,6 @@ public class WithMockUserSecurityContextFactoryTests {
given(this.withUser.value()).willReturn("valueUser");
given(this.withUser.roles()).willReturn(new String[] { "CUSTOM" });
given(this.withUser.authorities()).willReturn(new String[] { "USER", "CUSTOM" });
this.factory.createSecurityContext(this.withUser);
}
@@ -101,7 +96,6 @@ public class WithMockUserSecurityContextFactoryTests {
given(this.withUser.value()).willReturn("valueUser");
given(this.withUser.roles()).willReturn(new String[] { "ROLE_FAIL" });
given(this.withUser.authorities()).willReturn(new String[] {});
this.factory.createSecurityContext(this.withUser);
}
@@ -32,10 +32,8 @@ public class WithMockUserTests {
assertThat(mockUser.password()).isEqualTo("password");
assertThat(mockUser.roles()).containsOnly("USER");
assertThat(mockUser.setupBefore()).isEqualByComparingTo(TestExecutionEvent.TEST_METHOD);
WithSecurityContext context = AnnotatedElementUtils.findMergedAnnotation(Annotated.class,
WithSecurityContext.class);
assertThat(context.setupBefore()).isEqualTo(TestExecutionEvent.TEST_METHOD);
}
@@ -43,7 +41,6 @@ public class WithMockUserTests {
public void findMergedAnnotationWhenSetupExplicitThenOverridden() {
WithSecurityContext context = AnnotatedElementUtils.findMergedAnnotation(SetupExplicit.class,
WithSecurityContext.class);
assertThat(context.setupBefore()).isEqualTo(TestExecutionEvent.TEST_METHOD);
}
@@ -51,7 +48,6 @@ public class WithMockUserTests {
public void findMergedAnnotationWhenSetupOverriddenThenOverridden() {
WithSecurityContext context = AnnotatedElementUtils.findMergedAnnotation(SetupOverridden.class,
WithSecurityContext.class);
assertThat(context.setupBefore()).isEqualTo(TestExecutionEvent.TEST_EXECUTION);
}
@@ -79,7 +79,6 @@ public class WithSecurityContextTestExcecutionListenerTests {
Class testClass = FakeTest.class;
given(this.testContext.getTestClass()).willReturn(testClass);
given(this.testContext.getTestMethod()).willReturn(ReflectionUtils.findMethod(testClass, "testNoAnnotation"));
this.listener.beforeTestMethod(this.testContext);
}
@@ -89,9 +88,7 @@ public class WithSecurityContextTestExcecutionListenerTests {
Class testClass = FakeTest.class;
given(this.testContext.getApplicationContext()).willThrow(new IllegalStateException());
given(this.testContext.getTestMethod()).willReturn(ReflectionUtils.findMethod(testClass, "testWithMockUser"));
this.listener.beforeTestMethod(this.testContext);
assertThat(TestSecurityContextHolder.getContext().getAuthentication().getName()).isEqualTo("user");
}
@@ -100,11 +97,8 @@ public class WithSecurityContextTestExcecutionListenerTests {
public void withSecurityContextAfterSqlScripts() {
SqlScriptsTestExecutionListener sql = new SqlScriptsTestExecutionListener();
WithSecurityContextTestExecutionListener security = new WithSecurityContextTestExecutionListener();
List<TestExecutionListener> listeners = Arrays.asList(security, sql);
AnnotationAwareOrderComparator.sort(listeners);
assertThat(listeners).containsExactly(sql, security);
}
@@ -113,13 +107,10 @@ public class WithSecurityContextTestExcecutionListenerTests {
public void orderOverridden() {
AbstractTestExecutionListener otherListener = new AbstractTestExecutionListener() {
};
List<TestExecutionListener> listeners = new ArrayList<>();
listeners.add(otherListener);
listeners.add(this.listener);
AnnotationAwareOrderComparator.sort(listeners);
assertThat(listeners).containsSequence(this.listener, otherListener);
}
@@ -131,9 +122,7 @@ public class WithSecurityContextTestExcecutionListenerTests {
TestContext testContext = mock(TestContext.class);
given(testContext.getTestMethod()).willReturn(method);
given(testContext.getApplicationContext()).willThrow(new IllegalStateException(""));
this.listener.beforeTestMethod(testContext);
assertThat(SecurityContextHolder.getContext().getAuthentication().getPrincipal())
.isInstanceOf(WithSuperClassWithSecurityContext.class);
}
@@ -80,9 +80,7 @@ public class WithSecurityContextTestExecutionListenerTests {
Method testMethod = TheTest.class.getMethod("withMockUserDefault");
given(this.testContext.getApplicationContext()).willReturn(this.applicationContext);
given(this.testContext.getTestMethod()).willReturn(testMethod);
this.listener.beforeTestMethod(this.testContext);
assertThat(TestSecurityContextHolder.getContext().getAuthentication()).isNotNull();
verify(this.testContext, never()).setAttribute(
eq(WithSecurityContextTestExecutionListener.SECURITY_CONTEXT_ATTR_NAME), any(SecurityContext.class));
@@ -93,9 +91,7 @@ public class WithSecurityContextTestExecutionListenerTests {
Method testMethod = TheTest.class.getMethod("withMockUserTestMethod");
given(this.testContext.getApplicationContext()).willReturn(this.applicationContext);
given(this.testContext.getTestMethod()).willReturn(testMethod);
this.listener.beforeTestMethod(this.testContext);
assertThat(TestSecurityContextHolder.getContext().getAuthentication()).isNotNull();
verify(this.testContext, never()).setAttribute(
eq(WithSecurityContextTestExecutionListener.SECURITY_CONTEXT_ATTR_NAME), any(SecurityContext.class));
@@ -106,9 +102,7 @@ public class WithSecurityContextTestExecutionListenerTests {
Method testMethod = TheTest.class.getMethod("withMockUserTestExecution");
given(this.testContext.getApplicationContext()).willReturn(this.applicationContext);
given(this.testContext.getTestMethod()).willReturn(testMethod);
this.listener.beforeTestMethod(this.testContext);
assertThat(TestSecurityContextHolder.getContext().getAuthentication()).isNull();
verify(this.testContext).setAttribute(eq(WithSecurityContextTestExecutionListener.SECURITY_CONTEXT_ATTR_NAME),
ArgumentMatchers.<Supplier<SecurityContext>>any());
@@ -120,9 +114,7 @@ public class WithSecurityContextTestExecutionListenerTests {
Method testMethod = TheTest.class.getMethod("withMockUserTestExecution");
given(this.testContext.getApplicationContext()).willReturn(this.applicationContext);
given(this.testContext.getTestMethod()).willReturn(testMethod);
this.listener.beforeTestMethod(this.testContext);
ArgumentCaptor<Supplier<SecurityContext>> supplierCaptor = ArgumentCaptor.forClass(Supplier.class);
verify(this.testContext).setAttribute(eq(WithSecurityContextTestExecutionListener.SECURITY_CONTEXT_ATTR_NAME),
supplierCaptor.capture());
@@ -136,7 +128,6 @@ public class WithSecurityContextTestExecutionListenerTests {
given(this.testContext.getApplicationContext()).willReturn(this.applicationContext);
// do not set a UserDetailsService Bean so it would fail if looked up
given(this.testContext.getTestMethod()).willReturn(testMethod);
this.listener.beforeTestMethod(this.testContext);
// bean lookup of UserDetailsService would fail if it has already been looked up
}
@@ -144,7 +135,6 @@ public class WithSecurityContextTestExecutionListenerTests {
@Test
public void beforeTestExecutionWhenTestContextNullThenSecurityContextNotSet() {
this.listener.beforeTestExecution(this.testContext);
assertThat(TestSecurityContextHolder.getContext().getAuthentication()).isNull();
}
@@ -155,9 +145,7 @@ public class WithSecurityContextTestExecutionListenerTests {
Supplier<SecurityContext> supplier = () -> securityContext;
given(this.testContext.removeAttribute(WithSecurityContextTestExecutionListener.SECURITY_CONTEXT_ATTR_NAME))
.willReturn(supplier);
this.listener.beforeTestExecution(this.testContext);
assertThat(TestSecurityContextHolder.getContext().getAuthentication())
.isEqualTo(securityContext.getAuthentication());
}
@@ -68,7 +68,6 @@ public class WithUserDetailsSecurityContextFactoryTests {
@Test(expected = IllegalArgumentException.class)
public void createSecurityContextEmptyValue() {
given(this.withUserDetails.value()).willReturn("");
this.factory.createSecurityContext(this.withUserDetails);
}
@@ -80,7 +79,6 @@ public class WithUserDetailsSecurityContextFactoryTests {
given(this.beans.getBean(UserDetailsService.class)).willReturn(this.userDetailsService);
given(this.withUserDetails.value()).willReturn(username);
given(this.userDetailsService.loadUserByUsername(username)).willReturn(this.userDetails);
SecurityContext context = this.factory.createSecurityContext(this.withUserDetails);
assertThat(context.getAuthentication()).isInstanceOf(UsernamePasswordAuthenticationToken.class);
assertThat(context.getAuthentication().getPrincipal()).isEqualTo(this.userDetails);
@@ -98,7 +96,6 @@ public class WithUserDetailsSecurityContextFactoryTests {
given(this.withUserDetails.userDetailsServiceBeanName()).willReturn(beanName);
given(this.userDetailsService.loadUserByUsername(username)).willReturn(this.userDetails);
given(this.beans.getBean(beanName, UserDetailsService.class)).willReturn(this.userDetailsService);
SecurityContext context = this.factory.createSecurityContext(this.withUserDetails);
assertThat(context.getAuthentication()).isInstanceOf(UsernamePasswordAuthenticationToken.class);
assertThat(context.getAuthentication().getPrincipal()).isEqualTo(this.userDetails);
@@ -111,7 +108,6 @@ public class WithUserDetailsSecurityContextFactoryTests {
given(this.withUserDetails.value()).willReturn(username);
given(this.beans.getBean(ReactiveUserDetailsService.class)).willReturn(this.reactiveUserDetailsService);
given(this.reactiveUserDetailsService.findByUsername(username)).willReturn(Mono.just(this.userDetails));
SecurityContext context = this.factory.createSecurityContext(this.withUserDetails);
assertThat(context.getAuthentication()).isInstanceOf(UsernamePasswordAuthenticationToken.class);
assertThat(context.getAuthentication().getPrincipal()).isEqualTo(this.userDetails);
@@ -127,7 +123,6 @@ public class WithUserDetailsSecurityContextFactoryTests {
given(this.beans.getBean(beanName, ReactiveUserDetailsService.class))
.willReturn(this.reactiveUserDetailsService);
given(this.reactiveUserDetailsService.findByUsername(username)).willReturn(Mono.just(this.userDetails));
SecurityContext context = this.factory.createSecurityContext(this.withUserDetails);
assertThat(context.getAuthentication()).isInstanceOf(UsernamePasswordAuthenticationToken.class);
assertThat(context.getAuthentication().getPrincipal()).isEqualTo(this.userDetails);
@@ -29,10 +29,8 @@ public class WithUserDetailsTests {
public void defaults() {
WithUserDetails userDetails = AnnotationUtils.findAnnotation(Annotated.class, WithUserDetails.class);
assertThat(userDetails.value()).isEqualTo("user");
WithSecurityContext context = AnnotatedElementUtils.findMergedAnnotation(Annotated.class,
WithSecurityContext.class);
assertThat(context.setupBefore()).isEqualTo(TestExecutionEvent.TEST_METHOD);
}
@@ -40,7 +38,6 @@ public class WithUserDetailsTests {
public void findMergedAnnotationWhenSetupExplicitThenOverridden() {
WithSecurityContext context = AnnotatedElementUtils.findMergedAnnotation(SetupExplicit.class,
WithSecurityContext.class);
assertThat(context.setupBefore()).isEqualTo(TestExecutionEvent.TEST_METHOD);
}
@@ -48,7 +45,6 @@ public class WithUserDetailsTests {
public void findMergedAnnotationWhenSetupOverriddenThenOverridden() {
WithSecurityContext context = AnnotatedElementUtils.findMergedAnnotation(SetupOverridden.class,
WithSecurityContext.class);
assertThat(context.setupBefore()).isEqualTo(TestExecutionEvent.TEST_EXECUTION);
}
@@ -43,11 +43,9 @@ abstract class AbstractMockServerConfigurersTests {
protected void assertPrincipalCreatedFromUserDetails(Principal principal, UserDetails originalUserDetails) {
assertThat(principal).isInstanceOf(UsernamePasswordAuthenticationToken.class);
UsernamePasswordAuthenticationToken authentication = (UsernamePasswordAuthenticationToken) principal;
assertThat(authentication.getCredentials()).isEqualTo(originalUserDetails.getPassword());
assertThat(authentication.getAuthorities()).containsOnlyElementsOf(originalUserDetails.getAuthorities());
UserDetails userDetails = (UserDetails) authentication.getPrincipal();
assertThat(userDetails.getPassword()).isEqualTo(authentication.getCredentials());
assertThat(authentication.getAuthorities()).containsOnlyElementsOf(userDetails.getAuthorities());
@@ -59,7 +59,6 @@ public class SecurityMockServerConfigurerOpaqueTokenTests extends AbstractMockSe
@Test
public void mockOpaqueTokenWhenUsingDefaultsThenBearerTokenAuthentication() {
this.client.mutateWith(SecurityMockServerConfigurers.mockOpaqueToken()).get().exchange().expectStatus().isOk();
SecurityContext context = this.securityContextController.removeSecurityContext();
assertThat(context.getAuthentication()).isInstanceOf(BearerTokenAuthentication.class);
BearerTokenAuthentication token = (BearerTokenAuthentication) context.getAuthentication();
@@ -74,7 +73,6 @@ public class SecurityMockServerConfigurerOpaqueTokenTests extends AbstractMockSe
.mutateWith(
SecurityMockServerConfigurers.mockOpaqueToken().authorities(this.authority1, this.authority2))
.get().exchange().expectStatus().isOk();
SecurityContext context = this.securityContextController.removeSecurityContext();
assertThat((List<GrantedAuthority>) context.getAuthentication().getAuthorities()).containsOnly(this.authority1,
this.authority2);
@@ -87,7 +85,6 @@ public class SecurityMockServerConfigurerOpaqueTokenTests extends AbstractMockSe
.mutateWith(SecurityMockServerConfigurers.mockOpaqueToken()
.attributes((attributes) -> attributes.put(OAuth2IntrospectionClaimNames.SUBJECT, sub)))
.get().exchange().expectStatus().isOk();
SecurityContext context = this.securityContextController.removeSecurityContext();
assertThat(context.getAuthentication()).isInstanceOf(BearerTokenAuthentication.class);
BearerTokenAuthentication token = (BearerTokenAuthentication) context.getAuthentication();
@@ -99,7 +96,6 @@ public class SecurityMockServerConfigurerOpaqueTokenTests extends AbstractMockSe
OAuth2AuthenticatedPrincipal principal = TestOAuth2AuthenticatedPrincipals.active();
this.client.mutateWith(SecurityMockServerConfigurers.mockOpaqueToken().principal(principal)).get().exchange()
.expectStatus().isOk();
SecurityContext context = this.securityContextController.removeSecurityContext();
assertThat(context.getAuthentication()).isInstanceOf(BearerTokenAuthentication.class);
BearerTokenAuthentication token = (BearerTokenAuthentication) context.getAuthentication();
@@ -110,24 +106,20 @@ public class SecurityMockServerConfigurerOpaqueTokenTests extends AbstractMockSe
public void mockOpaqueTokenWhenPrincipalSpecifiedThenLastCalledTakesPrecedence() {
OAuth2AuthenticatedPrincipal principal = TestOAuth2AuthenticatedPrincipals
.active((a) -> a.put("scope", "user"));
this.client
.mutateWith(SecurityMockServerConfigurers.mockOpaqueToken()
.attributes((a) -> a.put(OAuth2IntrospectionClaimNames.SUBJECT, "foo")).principal(principal))
.get().exchange().expectStatus().isOk();
SecurityContext context = this.securityContextController.removeSecurityContext();
assertThat(context.getAuthentication()).isInstanceOf(BearerTokenAuthentication.class);
BearerTokenAuthentication token = (BearerTokenAuthentication) context.getAuthentication();
assertThat((String) ((OAuth2AuthenticatedPrincipal) token.getPrincipal())
.getAttribute(OAuth2IntrospectionClaimNames.SUBJECT))
.isEqualTo(principal.getAttribute(OAuth2IntrospectionClaimNames.SUBJECT));
this.client
.mutateWith(SecurityMockServerConfigurers.mockOpaqueToken().principal(principal)
.attributes((a) -> a.put(OAuth2IntrospectionClaimNames.SUBJECT, "bar")))
.get().exchange().expectStatus().isOk();
context = this.securityContextController.removeSecurityContext();
assertThat(context.getAuthentication()).isInstanceOf(BearerTokenAuthentication.class);
token = (BearerTokenAuthentication) context.getAuthentication();
@@ -49,7 +49,6 @@ public class SecurityMockServerConfigurersAnnotatedTests extends AbstractMockSer
@WithMockUser
public void withMockUserWhenOnMethodThenSuccess() {
this.client.get().exchange().expectStatus().isOk();
Authentication authentication = TestSecurityContextHolder.getContext().getAuthentication();
this.controller.assertPrincipalIsEqualTo(authentication);
}
@@ -64,9 +63,7 @@ public class SecurityMockServerConfigurersAnnotatedTests extends AbstractMockSer
.apply(SecurityMockServerConfigurers.springSecurity())
.apply(SecurityMockServerConfigurers.mockAuthentication(authentication)).configureClient()
.defaultHeader(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON_VALUE).build();
this.client.get().exchange().expectStatus().isOk();
this.controller.assertPrincipalIsEqualTo(authentication);
}
@@ -77,7 +74,6 @@ public class SecurityMockServerConfigurersAnnotatedTests extends AbstractMockSer
"ROLE_USER");
this.client.mutateWith(SecurityMockServerConfigurers.mockAuthentication(authentication)).get().exchange()
.expectStatus().isOk();
this.controller.assertPrincipalIsEqualTo(authentication);
}
@@ -88,11 +84,8 @@ public class SecurityMockServerConfigurersAnnotatedTests extends AbstractMockSer
"ROLE_USER");
this.client.mutateWith(SecurityMockServerConfigurers.mockAuthentication(authentication)).get().exchange()
.expectStatus().isOk();
this.controller.assertPrincipalIsEqualTo(authentication);
this.client.get().exchange().expectStatus().isOk();
assertPrincipalCreatedFromUserDetails(this.controller.removePrincipal(), this.userBuilder.build());
}
@@ -101,7 +94,6 @@ public class SecurityMockServerConfigurersAnnotatedTests extends AbstractMockSer
public void withMockUserWhenOnMethodAndRequestIsExecutedOnDifferentThreadThenSuccess() {
Authentication authentication = TestSecurityContextHolder.getContext().getAuthentication();
ForkJoinPool.commonPool().submit(() -> this.client.get().exchange().expectStatus().isOk()).join();
this.controller.assertPrincipalIsEqualTo(authentication);
}
@@ -110,16 +102,12 @@ public class SecurityMockServerConfigurersAnnotatedTests extends AbstractMockSer
public void withMockUserAndWithCallOnSeparateThreadWhenMutateWithMockPrincipalAndNoMutateThenOverridesAnnotationAndUsesAnnotation() {
TestingAuthenticationToken authentication = new TestingAuthenticationToken("authentication", "secret",
"ROLE_USER");
ForkJoinPool.commonPool()
.submit(() -> this.client.mutateWith(SecurityMockServerConfigurers.mockAuthentication(authentication))
.get().exchange().expectStatus().isOk())
.join();
this.controller.assertPrincipalIsEqualTo(authentication);
ForkJoinPool.commonPool().submit(() -> this.client.get().exchange().expectStatus().isOk()).join();
assertPrincipalCreatedFromUserDetails(this.controller.removePrincipal(), this.userBuilder.build());
}
@@ -51,7 +51,6 @@ public class SecurityMockServerConfigurersClassAnnotatedTests extends AbstractMo
public void wheMockUserWhenClassAnnotatedThenSuccess() {
this.client.get().exchange().expectStatus().isOk().expectBody(String.class)
.consumeWith((response) -> assertThat(response.getResponseBody()).contains("\"username\":\"user\""));
Authentication authentication = TestSecurityContextHolder.getContext().getAuthentication();
this.controller.assertPrincipalIsEqualTo(authentication);
}
@@ -61,7 +60,6 @@ public class SecurityMockServerConfigurersClassAnnotatedTests extends AbstractMo
public void withMockUserWhenClassAndMethodAnnotationThenMethodOverrides() {
this.client.get().exchange().expectStatus().isOk().expectBody(String.class).consumeWith(
(response) -> assertThat(response.getResponseBody()).contains("\"username\":\"method-user\""));
Authentication authentication = TestSecurityContextHolder.getContext().getAuthentication();
this.controller.assertPrincipalIsEqualTo(authentication);
}
@@ -72,7 +70,6 @@ public class SecurityMockServerConfigurersClassAnnotatedTests extends AbstractMo
.expectStatus().isOk().expectBody(String.class)
.consumeWith((response) -> assertThat(response.getResponseBody())
.contains("\"username\":\"mutateWith-mockUser\""));
Principal principal = this.controller.removePrincipal();
assertPrincipalCreatedFromUserDetails(principal, this.userBuilder.username("mutateWith-mockUser").build());
}
@@ -63,7 +63,6 @@ public class SecurityMockServerConfigurersJwtTests extends AbstractMockServerCon
@Test
public void mockJwtWhenUsingDefaultsTheCreatesJwtAuthentication() {
this.client.mutateWith(SecurityMockServerConfigurers.mockJwt()).get().exchange().expectStatus().isOk();
SecurityContext context = this.securityContextController.removeSecurityContext();
assertThat(context.getAuthentication()).isInstanceOf(JwtAuthenticationToken.class);
JwtAuthenticationToken token = (JwtAuthenticationToken) context.getAuthentication();
@@ -78,7 +77,6 @@ public class SecurityMockServerConfigurersJwtTests extends AbstractMockServerCon
String name = new String("user");
this.client.mutateWith(SecurityMockServerConfigurers.mockJwt().jwt((jwt) -> jwt.subject(name))).get().exchange()
.expectStatus().isOk();
SecurityContext context = this.securityContextController.removeSecurityContext();
assertThat(context.getAuthentication()).isInstanceOf(JwtAuthenticationToken.class);
JwtAuthenticationToken token = (JwtAuthenticationToken) context.getAuthentication();
@@ -90,7 +88,6 @@ public class SecurityMockServerConfigurersJwtTests extends AbstractMockServerCon
this.client.mutateWith(SecurityMockServerConfigurers.mockJwt()
.jwt((jwt) -> jwt.claim("scope", "ignored authorities")).authorities(this.authority1, this.authority2))
.get().exchange().expectStatus().isOk();
SecurityContext context = this.securityContextController.removeSecurityContext();
assertThat((List<GrantedAuthority>) context.getAuthentication().getAuthorities()).containsOnly(this.authority1,
this.authority2);
@@ -102,7 +99,6 @@ public class SecurityMockServerConfigurersJwtTests extends AbstractMockServerCon
.mutateWith(
SecurityMockServerConfigurers.mockJwt().jwt((jwt) -> jwt.claim("scope", "scoped authorities")))
.get().exchange().expectStatus().isOk();
SecurityContext context = this.securityContextController.removeSecurityContext();
assertThat((List<GrantedAuthority>) context.getAuthentication().getAuthorities()).containsOnly(
new SimpleGrantedAuthority("SCOPE_scoped"), new SimpleGrantedAuthority("SCOPE_authorities"));
@@ -115,7 +111,6 @@ public class SecurityMockServerConfigurersJwtTests extends AbstractMockServerCon
SecurityMockServerConfigurers.mockJwt().jwt((jwt) -> jwt.claim("scope", "ignored authorities"))
.authorities((jwt) -> Arrays.asList(this.authority1)))
.get().exchange().expectStatus().isOk();
SecurityContext context = this.securityContextController.removeSecurityContext();
assertThat((List<GrantedAuthority>) context.getAuthentication().getAuthorities()).containsOnly(this.authority1);
}
@@ -125,7 +120,6 @@ public class SecurityMockServerConfigurersJwtTests extends AbstractMockServerCon
Jwt originalToken = TestJwts.jwt().header("header1", "value1").subject("some_user").build();
this.client.mutateWith(SecurityMockServerConfigurers.mockJwt().jwt(originalToken)).get().exchange()
.expectStatus().isOk();
SecurityContext context = this.securityContextController.removeSecurityContext();
assertThat(context.getAuthentication()).isInstanceOf(JwtAuthenticationToken.class);
JwtAuthenticationToken retrievedToken = (JwtAuthenticationToken) context.getAuthentication();
@@ -75,7 +75,6 @@ public class SecurityMockServerConfigurersOAuth2ClientTests extends AbstractMock
@Test
public void oauth2ClientWhenUsingDefaultsThenException() throws Exception {
WebHttpHandlerBuilder builder = WebHttpHandlerBuilder.webHandler(new DispatcherHandler());
assertThatCode(() -> SecurityMockServerConfigurers.mockOAuth2Client().beforeServerCreated(builder))
.isInstanceOf(IllegalArgumentException.class).hasMessageContaining("ClientRegistration");
@@ -83,10 +82,8 @@ public class SecurityMockServerConfigurersOAuth2ClientTests extends AbstractMock
@Test
public void oauth2ClientWhenUsingRegistrationIdThenProducesAuthorizedClient() throws Exception {
this.client.mutateWith(SecurityMockServerConfigurers.mockOAuth2Client("registration-id")).get().uri("/client")
.exchange().expectStatus().isOk();
OAuth2AuthorizedClient client = this.controller.authorizedClient;
assertThat(client).isNotNull();
assertThat(client.getClientRegistration().getRegistrationId()).isEqualTo("registration-id");
@@ -96,12 +93,10 @@ public class SecurityMockServerConfigurersOAuth2ClientTests extends AbstractMock
@Test
public void oauth2ClientWhenClientRegistrationThenUses() throws Exception {
ClientRegistration clientRegistration = TestClientRegistrations.clientRegistration()
.registrationId("registration-id").clientId("client-id").build();
this.client.mutateWith(SecurityMockServerConfigurers.mockOAuth2Client().clientRegistration(clientRegistration))
.get().uri("/client").exchange().expectStatus().isOk();
OAuth2AuthorizedClient client = this.controller.authorizedClient;
assertThat(client).isNotNull();
assertThat(client.getClientRegistration().getRegistrationId()).isEqualTo("registration-id");
@@ -111,12 +106,10 @@ public class SecurityMockServerConfigurersOAuth2ClientTests extends AbstractMock
@Test
public void oauth2ClientWhenClientRegistrationConsumerThenUses() throws Exception {
this.client
.mutateWith(SecurityMockServerConfigurers.mockOAuth2Client("registration-id")
.clientRegistration((c) -> c.clientId("client-id")))
.get().uri("/client").exchange().expectStatus().isOk();
OAuth2AuthorizedClient client = this.controller.authorizedClient;
assertThat(client).isNotNull();
assertThat(client.getClientRegistration().getRegistrationId()).isEqualTo("registration-id");
@@ -136,12 +129,10 @@ public class SecurityMockServerConfigurersOAuth2ClientTests extends AbstractMock
@Test
public void oauth2ClientWhenAccessTokenThenUses() throws Exception {
OAuth2AccessToken accessToken = TestOAuth2AccessTokens.noScopes();
this.client
.mutateWith(SecurityMockServerConfigurers.mockOAuth2Client("registration-id").accessToken(accessToken))
.get().uri("/client").exchange().expectStatus().isOk();
OAuth2AuthorizedClient client = this.controller.authorizedClient;
assertThat(client).isNotNull();
assertThat(client.getClientRegistration().getRegistrationId()).isEqualTo("registration-id");
@@ -153,11 +144,9 @@ public class SecurityMockServerConfigurersOAuth2ClientTests extends AbstractMock
public void oauth2ClientWhenUsedOnceThenDoesNotAffectRemainingTests() throws Exception {
this.client.mutateWith(SecurityMockServerConfigurers.mockOAuth2Client("registration-id")).get().uri("/client")
.exchange().expectStatus().isOk();
OAuth2AuthorizedClient client = this.controller.authorizedClient;
assertThat(client).isNotNull();
assertThat(client.getClientRegistration().getClientId()).isEqualTo("test-client");
client = new OAuth2AuthorizedClient(TestClientRegistrations.clientRegistration().build(), "sub",
TestOAuth2AccessTokens.noScopes());
given(this.authorizedClientRepository.loadAuthorizedClient(eq("registration-id"), any(Authentication.class),
@@ -72,7 +72,6 @@ public class SecurityMockServerConfigurersOAuth2LoginTests extends AbstractMockS
public void oauth2LoginWhenUsingDefaultsThenProducesDefaultAuthentication() {
this.client.mutateWith(SecurityMockServerConfigurers.mockOAuth2Login()).get().uri("/token").exchange()
.expectStatus().isOk();
OAuth2AuthenticationToken token = this.controller.token;
assertThat(token).isNotNull();
assertThat(token.getAuthorizedClientRegistrationId()).isEqualTo("test");
@@ -86,7 +85,6 @@ public class SecurityMockServerConfigurersOAuth2LoginTests extends AbstractMockS
public void oauth2LoginWhenUsingDefaultsThenProducesDefaultAuthorizedClient() {
this.client.mutateWith(SecurityMockServerConfigurers.mockOAuth2Login()).get().uri("/client").exchange()
.expectStatus().isOk();
OAuth2AuthorizedClient client = this.controller.authorizedClient;
assertThat(client).isNotNull();
assertThat(client.getClientRegistration().getRegistrationId()).isEqualTo("test");
@@ -100,7 +98,6 @@ public class SecurityMockServerConfigurersOAuth2LoginTests extends AbstractMockS
.mutateWith(SecurityMockServerConfigurers.mockOAuth2Login()
.authorities(new SimpleGrantedAuthority("SCOPE_admin")))
.get().uri("/token").exchange().expectStatus().isOk();
OAuth2AuthenticationToken token = this.controller.token;
assertThat((Collection<GrantedAuthority>) token.getPrincipal().getAuthorities())
.contains(new SimpleGrantedAuthority("SCOPE_admin"));
@@ -112,7 +109,6 @@ public class SecurityMockServerConfigurersOAuth2LoginTests extends AbstractMockS
.mutateWith(SecurityMockServerConfigurers.mockOAuth2Login()
.attributes((a) -> a.put("iss", "https://idp.example.org")))
.get().uri("/token").exchange().expectStatus().isOk();
OAuth2AuthenticationToken token = this.controller.token;
assertThat(token.getPrincipal().getAttributes()).containsEntry("iss", "https://idp.example.org");
}
@@ -121,16 +117,12 @@ public class SecurityMockServerConfigurersOAuth2LoginTests extends AbstractMockS
public void oauth2LoginWhenNameSpecifiedThenUserHasName() throws Exception {
OAuth2User oauth2User = new DefaultOAuth2User(AuthorityUtils.commaSeparatedStringToAuthorityList("SCOPE_read"),
Collections.singletonMap("custom-attribute", "test-subject"), "custom-attribute");
this.client.mutateWith(SecurityMockServerConfigurers.mockOAuth2Login().oauth2User(oauth2User)).get()
.uri("/token").exchange().expectStatus().isOk();
OAuth2AuthenticationToken token = this.controller.token;
assertThat(token.getPrincipal().getName()).isEqualTo("test-subject");
this.client.mutateWith(SecurityMockServerConfigurers.mockOAuth2Login().oauth2User(oauth2User)).get()
.uri("/client").exchange().expectStatus().isOk();
OAuth2AuthorizedClient client = this.controller.authorizedClient;
assertThat(client.getPrincipalName()).isEqualTo("test-subject");
}
@@ -139,17 +131,13 @@ public class SecurityMockServerConfigurersOAuth2LoginTests extends AbstractMockS
public void oauth2LoginWhenOAuth2UserSpecifiedThenLastCalledTakesPrecedence() throws Exception {
OAuth2User oauth2User = new DefaultOAuth2User(AuthorityUtils.createAuthorityList("SCOPE_read"),
Collections.singletonMap("sub", "subject"), "sub");
this.client.mutateWith(SecurityMockServerConfigurers.mockOAuth2Login()
.attributes((a) -> a.put("subject", "foo")).oauth2User(oauth2User)).get().uri("/token").exchange()
.expectStatus().isOk();
OAuth2AuthenticationToken token = this.controller.token;
assertThat(token.getPrincipal().getAttributes()).containsEntry("sub", "subject");
this.client.mutateWith(SecurityMockServerConfigurers.mockOAuth2Login().oauth2User(oauth2User)
.attributes((a) -> a.put("sub", "bar"))).get().uri("/token").exchange().expectStatus().isOk();
token = this.controller.token;
assertThat(token.getPrincipal().getAttributes()).containsEntry("sub", "bar");
}
@@ -73,7 +73,6 @@ public class SecurityMockServerConfigurersOidcLoginTests extends AbstractMockSer
public void oidcLoginWhenUsingDefaultsThenProducesDefaultAuthentication() {
this.client.mutateWith(SecurityMockServerConfigurers.mockOidcLogin()).get().uri("/token").exchange()
.expectStatus().isOk();
OAuth2AuthenticationToken token = this.controller.token;
assertThat(token).isNotNull();
assertThat(token.getAuthorizedClientRegistrationId()).isEqualTo("test");
@@ -88,7 +87,6 @@ public class SecurityMockServerConfigurersOidcLoginTests extends AbstractMockSer
public void oidcLoginWhenUsingDefaultsThenProducesDefaultAuthorizedClient() {
this.client.mutateWith(SecurityMockServerConfigurers.mockOidcLogin()).get().uri("/client").exchange()
.expectStatus().isOk();
OAuth2AuthorizedClient client = this.controller.authorizedClient;
assertThat(client).isNotNull();
assertThat(client.getClientRegistration().getRegistrationId()).isEqualTo("test");
@@ -102,7 +100,6 @@ public class SecurityMockServerConfigurersOidcLoginTests extends AbstractMockSer
.mutateWith(SecurityMockServerConfigurers.mockOidcLogin()
.authorities(new SimpleGrantedAuthority("SCOPE_admin")))
.get().uri("/token").exchange().expectStatus().isOk();
OAuth2AuthenticationToken token = this.controller.token;
assertThat((Collection<GrantedAuthority>) token.getPrincipal().getAuthorities())
.contains(new SimpleGrantedAuthority("SCOPE_admin"));
@@ -114,7 +111,6 @@ public class SecurityMockServerConfigurersOidcLoginTests extends AbstractMockSer
.mutateWith(SecurityMockServerConfigurers.mockOidcLogin()
.idToken((i) -> i.issuer("https://idp.example.org")))
.get().uri("/token").exchange().expectStatus().isOk();
OAuth2AuthenticationToken token = this.controller.token;
assertThat(token.getPrincipal().getAttributes()).containsEntry("iss", "https://idp.example.org");
}
@@ -124,7 +120,6 @@ public class SecurityMockServerConfigurersOidcLoginTests extends AbstractMockSer
this.client
.mutateWith(SecurityMockServerConfigurers.mockOidcLogin().userInfoToken((u) -> u.email("email@email")))
.get().uri("/token").exchange().expectStatus().isOk();
OAuth2AuthenticationToken token = this.controller.token;
assertThat(token.getPrincipal().getAttributes()).containsEntry("email", "email@email");
}
@@ -134,16 +129,12 @@ public class SecurityMockServerConfigurersOidcLoginTests extends AbstractMockSer
OidcUser oidcUser = new DefaultOidcUser(AuthorityUtils.commaSeparatedStringToAuthorityList("SCOPE_read"),
OidcIdToken.withTokenValue("id-token").claim("custom-attribute", "test-subject").build(),
"custom-attribute");
this.client.mutateWith(SecurityMockServerConfigurers.mockOAuth2Login().oauth2User(oidcUser)).get().uri("/token")
.exchange().expectStatus().isOk();
OAuth2AuthenticationToken token = this.controller.token;
assertThat(token.getPrincipal().getName()).isEqualTo("test-subject");
this.client.mutateWith(SecurityMockServerConfigurers.mockOAuth2Login().oauth2User(oidcUser)).get()
.uri("/client").exchange().expectStatus().isOk();
OAuth2AuthorizedClient client = this.controller.authorizedClient;
assertThat(client.getPrincipalName()).isEqualTo("test-subject");
}
@@ -153,18 +144,14 @@ public class SecurityMockServerConfigurersOidcLoginTests extends AbstractMockSer
public void oidcLoginWhenOidcUserSpecifiedThenLastCalledTakesPrecedence() throws Exception {
OidcUser oidcUser = new DefaultOidcUser(AuthorityUtils.createAuthorityList("SCOPE_read"),
TestOidcIdTokens.idToken().build());
this.client.mutateWith(
SecurityMockServerConfigurers.mockOidcLogin().idToken((i) -> i.subject("foo")).oidcUser(oidcUser)).get()
.uri("/token").exchange().expectStatus().isOk();
OAuth2AuthenticationToken token = this.controller.token;
assertThat(token.getPrincipal().getAttributes()).containsEntry("sub", "subject");
this.client.mutateWith(
SecurityMockServerConfigurers.mockOidcLogin().oidcUser(oidcUser).idToken((i) -> i.subject("bar"))).get()
.uri("/token").exchange().expectStatus().isOk();
token = this.controller.token;
assertThat(token.getPrincipal().getAttributes()).containsEntry("sub", "bar");
}
@@ -68,9 +68,7 @@ public class SecurityMockServerConfigurersTests extends AbstractMockServerConfig
@Test
public void mockUserWhenDefaultsThenSuccess() {
this.client.mutateWith(SecurityMockServerConfigurers.mockUser()).get().exchange().expectStatus().isOk();
Principal actual = this.controller.removePrincipal();
assertPrincipalCreatedFromUserDetails(actual, this.userBuilder.build());
}
@@ -81,9 +79,7 @@ public class SecurityMockServerConfigurersTests extends AbstractMockServerConfig
.apply(SecurityMockServerConfigurers.springSecurity()).apply(SecurityMockServerConfigurers.mockUser())
.configureClient().defaultHeader(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON_VALUE).build();
this.client.get().exchange().expectStatus().isOk();
Principal actual = this.controller.removePrincipal();
assertPrincipalCreatedFromUserDetails(actual, this.userBuilder.build());
}
@@ -91,9 +87,7 @@ public class SecurityMockServerConfigurersTests extends AbstractMockServerConfig
public void mockUserStringWhenLocalThenSuccess() {
this.client.mutateWith(SecurityMockServerConfigurers.mockUser(this.userBuilder.build().getUsername())).get()
.exchange().expectStatus().isOk();
Principal actual = this.controller.removePrincipal();
assertPrincipalCreatedFromUserDetails(actual, this.userBuilder.build());
}
@@ -103,9 +97,7 @@ public class SecurityMockServerConfigurersTests extends AbstractMockServerConfig
this.client
.mutateWith(SecurityMockServerConfigurers.mockUser("admin").password("secret").roles("USER", "ADMIN"))
.get().exchange().expectStatus().isOk();
Principal actual = this.controller.removePrincipal();
assertPrincipalCreatedFromUserDetails(actual, this.userBuilder.build());
}
@@ -114,9 +106,7 @@ public class SecurityMockServerConfigurersTests extends AbstractMockServerConfig
UserDetails userDetails = this.userBuilder.build();
this.client.mutateWith(SecurityMockServerConfigurers.mockUser(userDetails)).get().exchange().expectStatus()
.isOk();
Principal actual = this.controller.removePrincipal();
assertPrincipalCreatedFromUserDetails(actual, this.userBuilder.build());
}
@@ -124,9 +114,7 @@ public class SecurityMockServerConfigurersTests extends AbstractMockServerConfig
public void csrfWhenMutateWithThenDisablesCsrf() {
this.client.post().exchange().expectStatus().isEqualTo(HttpStatus.FORBIDDEN).expectBody()
.consumeWith((b) -> assertThat(new String(b.getResponseBody())).contains("CSRF"));
this.client.mutateWith(SecurityMockServerConfigurers.csrf()).post().exchange().expectStatus().isOk();
}
@Test
@@ -134,9 +122,7 @@ public class SecurityMockServerConfigurersTests extends AbstractMockServerConfig
this.client = WebTestClient.bindToController(this.controller).webFilter(new CsrfWebFilter())
.apply(SecurityMockServerConfigurers.springSecurity()).apply(SecurityMockServerConfigurers.csrf())
.configureClient().build();
this.client.get().exchange().expectStatus().isOk();
}
}
@@ -45,7 +45,6 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
/**
* @author Rob Winch
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
@WebAppConfiguration
@@ -66,7 +65,6 @@ public class Sec2935Tests {
public void postProcessorUserNoUser() throws Exception {
this.mvc.perform(get("/admin/abc").with(user("user").roles("ADMIN", "USER"))).andExpect(status().isNotFound())
.andExpect(authenticated().withUsername("user"));
this.mvc.perform(get("/admin/abc")).andExpect(status().isUnauthorized()).andExpect(unauthenticated());
}
@@ -74,7 +72,6 @@ public class Sec2935Tests {
public void postProcessorUserOtherUser() throws Exception {
this.mvc.perform(get("/admin/abc").with(user("user1").roles("ADMIN", "USER"))).andExpect(status().isNotFound())
.andExpect(authenticated().withUsername("user1"));
this.mvc.perform(get("/admin/abc").with(user("user2").roles("USER"))).andExpect(status().isForbidden())
.andExpect(authenticated().withUsername("user2"));
}
@@ -84,7 +81,6 @@ public class Sec2935Tests {
public void postProcessorUserWithMockUser() throws Exception {
this.mvc.perform(get("/admin/abc").with(user("user1").roles("ADMIN", "USER"))).andExpect(status().isNotFound())
.andExpect(authenticated().withUsername("user1"));
this.mvc.perform(get("/admin/abc")).andExpect(status().isForbidden())
.andExpect(authenticated().withUsername("user"));
}
@@ -94,10 +90,8 @@ public class Sec2935Tests {
public void defaultRequest() throws Exception {
this.mvc = MockMvcBuilders.webAppContextSetup(this.context).apply(springSecurity())
.defaultRequest(get("/").with(user("default"))).build();
this.mvc.perform(get("/admin/abc").with(user("user1").roles("ADMIN", "USER"))).andExpect(status().isNotFound())
.andExpect(authenticated().withUsername("user1"));
this.mvc.perform(get("/admin/abc")).andExpect(status().isForbidden())
.andExpect(authenticated().withUsername("default"));
}
@@ -108,10 +102,8 @@ public class Sec2935Tests {
public void defaultRequestOverridesWithMockUser() throws Exception {
this.mvc = MockMvcBuilders.webAppContextSetup(this.context).apply(springSecurity())
.defaultRequest(get("/").with(user("default"))).build();
this.mvc.perform(get("/admin/abc").with(user("user1").roles("ADMIN", "USER"))).andExpect(status().isNotFound())
.andExpect(authenticated().withUsername("user1"));
this.mvc.perform(get("/admin/abc")).andExpect(status().isForbidden())
.andExpect(authenticated().withUsername("default"));
}
@@ -54,7 +54,6 @@ public class SecurityMockMvcRequestBuildersFormLoginTests {
MockHttpServletRequest request = formLogin().buildRequest(this.servletContext);
CsrfToken token = (CsrfToken) request
.getAttribute(CsrfRequestPostProcessor.TestCsrfTokenRepository.TOKEN_ATTR_NAME);
assertThat(request.getParameter("username")).isEqualTo("user");
assertThat(request.getParameter("password")).isEqualTo("password");
assertThat(request.getMethod()).isEqualTo("POST");
@@ -67,10 +66,8 @@ public class SecurityMockMvcRequestBuildersFormLoginTests {
public void custom() {
MockHttpServletRequest request = formLogin("/login").user("username", "admin").password("password", "secret")
.buildRequest(this.servletContext);
CsrfToken token = (CsrfToken) request
.getAttribute(CsrfRequestPostProcessor.TestCsrfTokenRepository.TOKEN_ATTR_NAME);
assertThat(request.getParameter("username")).isEqualTo("admin");
assertThat(request.getParameter("password")).isEqualTo("secret");
assertThat(request.getMethod()).isEqualTo("POST");
@@ -82,10 +79,8 @@ public class SecurityMockMvcRequestBuildersFormLoginTests {
public void customWithUriVars() {
MockHttpServletRequest request = formLogin().loginProcessingUrl("/uri-login/{var1}/{var2}", "val1", "val2")
.user("username", "admin").password("password", "secret").buildRequest(this.servletContext);
CsrfToken token = (CsrfToken) request
.getAttribute(CsrfRequestPostProcessor.TestCsrfTokenRepository.TOKEN_ATTR_NAME);
assertThat(request.getParameter("username")).isEqualTo("admin");
assertThat(request.getParameter("password")).isEqualTo("secret");
assertThat(request.getMethod()).isEqualTo("POST");
@@ -104,7 +99,6 @@ public class SecurityMockMvcRequestBuildersFormLoginTests {
given(postProcessor.postProcessRequest(any())).willAnswer((i) -> i.getArgument(0));
MockMvc mockMvc = MockMvcBuilders.standaloneSetup(new Object())
.defaultRequest(MockMvcRequestBuilders.get("/").with(postProcessor)).build();
MvcResult mvcResult = mockMvc.perform(formLogin()).andReturn();
assertThat(mvcResult.getRequest().getMethod()).isEqualTo(HttpMethod.POST.name());
assertThat(mvcResult.getRequest().getHeader("Accept"))
@@ -121,7 +115,6 @@ public class SecurityMockMvcRequestBuildersFormLoginTests {
public void usesAcceptMediaForContentNegotiation() {
MockHttpServletRequest request = formLogin("/login").user("username", "admin").password("password", "secret")
.buildRequest(this.servletContext);
assertThat(request.getHeader("Accept")).isEqualTo(MediaType.APPLICATION_FORM_URLENCODED_VALUE);
}
@@ -52,10 +52,8 @@ public class SecurityMockMvcRequestBuildersFormLogoutTests {
@Test
public void defaults() {
MockHttpServletRequest request = logout().buildRequest(this.servletContext);
CsrfToken token = (CsrfToken) request
.getAttribute(CsrfRequestPostProcessor.TestCsrfTokenRepository.TOKEN_ATTR_NAME);
assertThat(request.getMethod()).isEqualTo("POST");
assertThat(request.getParameter(token.getParameterName())).isEqualTo(token.getToken());
assertThat(request.getRequestURI()).isEqualTo("/logout");
@@ -64,10 +62,8 @@ public class SecurityMockMvcRequestBuildersFormLogoutTests {
@Test
public void custom() {
MockHttpServletRequest request = logout("/admin/logout").buildRequest(this.servletContext);
CsrfToken token = (CsrfToken) request
.getAttribute(CsrfRequestPostProcessor.TestCsrfTokenRepository.TOKEN_ATTR_NAME);
assertThat(request.getMethod()).isEqualTo("POST");
assertThat(request.getParameter(token.getParameterName())).isEqualTo(token.getToken());
assertThat(request.getRequestURI()).isEqualTo("/admin/logout");
@@ -77,10 +73,8 @@ public class SecurityMockMvcRequestBuildersFormLogoutTests {
public void customWithUriVars() {
MockHttpServletRequest request = logout().logoutUrl("/uri-logout/{var1}/{var2}", "val1", "val2")
.buildRequest(this.servletContext);
CsrfToken token = (CsrfToken) request
.getAttribute(CsrfRequestPostProcessor.TestCsrfTokenRepository.TOKEN_ATTR_NAME);
assertThat(request.getMethod()).isEqualTo("POST");
assertThat(request.getParameter(token.getParameterName())).isEqualTo(token.getToken());
assertThat(request.getRequestURI()).isEqualTo("/uri-logout/val1/val2");
@@ -97,7 +91,6 @@ public class SecurityMockMvcRequestBuildersFormLogoutTests {
given(postProcessor.postProcessRequest(any())).willAnswer((i) -> i.getArgument(0));
MockMvc mockMvc = MockMvcBuilders.standaloneSetup(new Object())
.defaultRequest(MockMvcRequestBuilders.get("/").with(postProcessor)).build();
MvcResult mvcResult = mockMvc.perform(logout()).andReturn();
assertThat(mvcResult.getRequest().getMethod()).isEqualTo(HttpMethod.POST.name());
assertThat(mvcResult.getRequest().getHeader("Accept"))
@@ -74,7 +74,6 @@ public class SecurityMockMvcRequestPostProcessorsAuthenticationTests {
@Test
public void userDetails() {
authentication(this.authentication).postProcessRequest(this.request);
verify(this.repository).saveContext(this.contextCaptor.capture(), eq(this.request),
any(HttpServletResponse.class));
SecurityContext context = this.contextCaptor.getValue();
@@ -45,20 +45,16 @@ public class SecurityMockMvcRequestPostProcessorsCertificateTests {
@Test
public void x509SingleCertificate() {
MockHttpServletRequest postProcessedRequest = x509(this.certificate).postProcessRequest(this.request);
X509Certificate[] certificates = (X509Certificate[]) postProcessedRequest
.getAttribute("javax.servlet.request.X509Certificate");
assertThat(certificates).containsOnly(this.certificate);
}
@Test
public void x509ResourceName() throws Exception {
MockHttpServletRequest postProcessedRequest = x509("rod.cer").postProcessRequest(this.request);
X509Certificate[] certificates = (X509Certificate[]) postProcessedRequest
.getAttribute("javax.servlet.request.X509Certificate");
assertThat(certificates).hasSize(1);
assertThat(certificates[0].getSubjectDN().getName())
.isEqualTo("CN=rod, OU=Spring Security, O=Spring Framework");
@@ -155,12 +155,10 @@ public class SecurityMockMvcRequestPostProcessorsCsrfTests {
public void csrfWhenUsedThenDoesNotImpactOriginalRepository() throws Exception {
// @formatter:off
this.mockMvc.perform(post("/").with(csrf()));
MockHttpServletRequest request = new MockHttpServletRequest();
HttpSessionCsrfTokenRepository repo = new HttpSessionCsrfTokenRepository();
CsrfToken token = repo.generateToken(request);
repo.saveToken(token, request, new MockHttpServletResponse());
MockHttpServletRequestBuilder requestWithCsrf = post("/")
.param(token.getParameterName(), token.getToken())
.session((MockHttpSession) request.getSession());
@@ -55,7 +55,6 @@ public class SecurityMockMvcRequestPostProcessorsDigestTests {
public void setup() {
this.password = "password";
this.request = new MockHttpServletRequest();
this.entryPoint = new DigestAuthenticationEntryPoint();
this.entryPoint.setKey("key");
this.entryPoint.setRealmName("Spring Security");
@@ -74,7 +73,6 @@ public class SecurityMockMvcRequestPostProcessorsDigestTests {
@Test
public void digestWithFilter() throws Exception {
MockHttpServletRequest postProcessedRequest = digest().postProcessRequest(this.request);
assertThat(extractUser()).isEqualTo("user");
}
@@ -82,7 +80,6 @@ public class SecurityMockMvcRequestPostProcessorsDigestTests {
public void digestWithFilterCustomUsername() throws Exception {
String username = "admin";
MockHttpServletRequest postProcessedRequest = digest(username).postProcessRequest(this.request);
assertThat(extractUser()).isEqualTo(username);
}
@@ -92,7 +89,6 @@ public class SecurityMockMvcRequestPostProcessorsDigestTests {
this.password = "secret";
MockHttpServletRequest postProcessedRequest = digest(username).password(this.password)
.postProcessRequest(this.request);
assertThat(extractUser()).isEqualTo(username);
}
@@ -102,7 +98,6 @@ public class SecurityMockMvcRequestPostProcessorsDigestTests {
this.entryPoint.setRealmName("Custom");
MockHttpServletRequest postProcessedRequest = digest(username).realm(this.entryPoint.getRealmName())
.postProcessRequest(this.request);
assertThat(extractUser()).isEqualTo(username);
}
@@ -111,7 +106,6 @@ public class SecurityMockMvcRequestPostProcessorsDigestTests {
String username = "admin";
MockHttpServletRequest postProcessedRequest = digest(username).realm("Invalid")
.postProcessRequest(this.request);
assertThat(extractUser()).isNull();
}
@@ -95,7 +95,6 @@ public class SecurityMockMvcRequestPostProcessorsJwtTests {
@Test
public void jwtWhenUsingDefaultsThenProducesDefaultJwtAuthentication() {
jwt().postProcessRequest(this.request);
verify(this.repository).saveContext(this.contextCaptor.capture(), eq(this.request),
any(HttpServletResponse.class));
SecurityContext context = this.contextCaptor.getValue();
@@ -111,7 +110,6 @@ public class SecurityMockMvcRequestPostProcessorsJwtTests {
public void jwtWhenProvidingBuilderConsumerThenProducesJwtAuthentication() {
String name = new String("user");
jwt().jwt((jwt) -> jwt.subject(name)).postProcessRequest(this.request);
verify(this.repository).saveContext(this.contextCaptor.capture(), eq(this.request),
any(HttpServletResponse.class));
SecurityContext context = this.contextCaptor.getValue();
@@ -124,7 +122,6 @@ public class SecurityMockMvcRequestPostProcessorsJwtTests {
public void jwtWhenProvidingCustomAuthoritiesThenProducesJwtAuthentication() {
jwt().jwt((jwt) -> jwt.claim("scope", "ignored authorities")).authorities(this.authority1, this.authority2)
.postProcessRequest(this.request);
verify(this.repository).saveContext(this.contextCaptor.capture(), eq(this.request),
any(HttpServletResponse.class));
SecurityContext context = this.contextCaptor.getValue();
@@ -135,7 +132,6 @@ public class SecurityMockMvcRequestPostProcessorsJwtTests {
@Test
public void jwtWhenProvidingScopedAuthoritiesThenProducesJwtAuthentication() {
jwt().jwt((jwt) -> jwt.claim("scope", "scoped authorities")).postProcessRequest(this.request);
verify(this.repository).saveContext(this.contextCaptor.capture(), eq(this.request),
any(HttpServletResponse.class));
SecurityContext context = this.contextCaptor.getValue();
@@ -147,7 +143,6 @@ public class SecurityMockMvcRequestPostProcessorsJwtTests {
public void jwtWhenProvidingGrantedAuthoritiesThenProducesJwtAuthentication() {
jwt().jwt((jwt) -> jwt.claim("scope", "ignored authorities"))
.authorities((jwt) -> Arrays.asList(this.authority1)).postProcessRequest(this.request);
verify(this.repository).saveContext(this.contextCaptor.capture(), eq(this.request),
any(HttpServletResponse.class));
SecurityContext context = this.contextCaptor.getValue();
@@ -158,7 +153,6 @@ public class SecurityMockMvcRequestPostProcessorsJwtTests {
public void jwtWhenProvidingPreparedJwtThenUsesItForAuthentication() {
Jwt originalToken = TestJwts.jwt().header("header1", "value1").subject("some_user").build();
jwt().jwt(originalToken).postProcessRequest(this.request);
verify(this.repository).saveContext(this.contextCaptor.capture(), eq(this.request),
any(HttpServletResponse.class));
SecurityContext context = this.contextCaptor.getValue();
@@ -93,14 +93,12 @@ public class SecurityMockMvcRequestPostProcessorsOAuth2ClientTests {
@Test
public void oauth2ClientWhenUsingDefaultsThenException() throws Exception {
assertThatCode(() -> oauth2Client().postProcessRequest(new MockHttpServletRequest()))
.isInstanceOf(IllegalArgumentException.class).hasMessageContaining("ClientRegistration");
}
@Test
public void oauth2ClientWhenUsingDefaultsThenProducesDefaultAuthorizedClient() throws Exception {
this.mvc.perform(get("/access-token").with(oauth2Client("registration-id")))
.andExpect(content().string("access-token"));
this.mvc.perform(get("/client-id").with(oauth2Client("registration-id")))
@@ -109,7 +107,6 @@ public class SecurityMockMvcRequestPostProcessorsOAuth2ClientTests {
@Test
public void oauth2ClientWhenClientRegistrationThenUses() throws Exception {
ClientRegistration clientRegistration = TestClientRegistrations.clientRegistration()
.registrationId("registration-id").clientId("client-id").build();
this.mvc.perform(get("/client-id").with(oauth2Client().clientRegistration(clientRegistration)))
@@ -118,7 +115,6 @@ public class SecurityMockMvcRequestPostProcessorsOAuth2ClientTests {
@Test
public void oauth2ClientWhenClientRegistrationConsumerThenUses() throws Exception {
this.mvc.perform(get("/client-id")
.with(oauth2Client("registration-id").clientRegistration((c) -> c.clientId("client-id"))))
.andExpect(content().string("client-id"));
@@ -141,7 +137,6 @@ public class SecurityMockMvcRequestPostProcessorsOAuth2ClientTests {
public void oauth2ClientWhenUsedOnceThenDoesNotAffectRemainingTests() throws Exception {
this.mvc.perform(get("/client-id").with(oauth2Client("registration-id")))
.andExpect(content().string("test-client"));
OAuth2AuthorizedClient client = new OAuth2AuthorizedClient(TestClientRegistrations.clientRegistration().build(),
"sub", TestOAuth2AccessTokens.noScopes());
OAuth2AuthorizedClientRepository repository = this.context.getBean(OAuth2AuthorizedClientRepository.class);
@@ -88,14 +88,12 @@ public class SecurityMockMvcRequestPostProcessorsOAuth2LoginTests {
@Test
public void oauth2LoginWhenUsingDefaultsThenProducesDefaultAuthentication() throws Exception {
this.mvc.perform(get("/name").with(oauth2Login())).andExpect(content().string("user"));
this.mvc.perform(get("/admin/id-token/name").with(oauth2Login())).andExpect(status().isForbidden());
}
@Test
public void oauth2LoginWhenUsingDefaultsThenProducesDefaultAuthorizedClient() throws Exception {
this.mvc.perform(get("/client-id").with(oauth2Login())).andExpect(content().string("test-client"));
}
@@ -119,10 +117,8 @@ public class SecurityMockMvcRequestPostProcessorsOAuth2LoginTests {
Collections.singletonMap("custom-attribute", "test-subject"), "custom-attribute");
this.mvc.perform(get("/attributes/custom-attribute").with(oauth2Login().oauth2User(oauth2User)))
.andExpect(content().string("test-subject"));
this.mvc.perform(get("/name").with(oauth2Login().oauth2User(oauth2User)))
.andExpect(content().string("test-subject"));
this.mvc.perform(get("/client-name").with(oauth2Login().oauth2User(oauth2User)))
.andExpect(content().string("test-subject"));
}
@@ -138,7 +134,6 @@ public class SecurityMockMvcRequestPostProcessorsOAuth2LoginTests {
public void oauth2LoginWhenOAuth2UserSpecifiedThenLastCalledTakesPrecedence() throws Exception {
OAuth2User oauth2User = new DefaultOAuth2User(AuthorityUtils.createAuthorityList("SCOPE_read"),
Collections.singletonMap("username", "user"), "username");
this.mvc.perform(get("/attributes/sub")
.with(oauth2Login().attributes((a) -> a.put("sub", "bar")).oauth2User(oauth2User)))
.andExpect(status().isOk()).andExpect(content().string("no-attribute"));
@@ -193,14 +188,12 @@ public class SecurityMockMvcRequestPostProcessorsOAuth2LoginTests {
@GetMapping("/attributes/{attribute}")
String attributes(@AuthenticationPrincipal OAuth2User oauth2User,
@PathVariable("attribute") String attribute) {
return Optional.ofNullable((String) oauth2User.getAttribute(attribute)).orElse("no-attribute");
}
@GetMapping("/admin/scopes")
List<String> scopes(
@AuthenticationPrincipal(expression = "authorities") Collection<GrantedAuthority> authorities) {
return authorities.stream().map(GrantedAuthority::getAuthority).collect(Collectors.toList());
}
@@ -94,14 +94,12 @@ public class SecurityMockMvcRequestPostProcessorsOidcLoginTests {
@Test
public void oidcLoginWhenUsingDefaultsThenProducesDefaultAuthentication() throws Exception {
this.mvc.perform(get("/name").with(oidcLogin())).andExpect(content().string("user"));
this.mvc.perform(get("/admin/id-token/name").with(oidcLogin())).andExpect(status().isForbidden());
}
@Test
public void oidcLoginWhenUsingDefaultsThenProducesDefaultAuthorizedClient() throws Exception {
this.mvc.perform(get("/access-token").with(oidcLogin())).andExpect(content().string("access-token"));
}
@@ -128,12 +126,9 @@ public class SecurityMockMvcRequestPostProcessorsOidcLoginTests {
OidcUser oidcUser = new DefaultOidcUser(AuthorityUtils.commaSeparatedStringToAuthorityList("SCOPE_read"),
OidcIdToken.withTokenValue("id-token").claim("custom-attribute", "test-subject").build(),
"custom-attribute");
this.mvc.perform(get("/id-token/custom-attribute").with(oidcLogin().oidcUser(oidcUser)))
.andExpect(content().string("test-subject"));
this.mvc.perform(get("/name").with(oidcLogin().oidcUser(oidcUser))).andExpect(content().string("test-subject"));
this.mvc.perform(get("/client-name").with(oidcLogin().oidcUser(oidcUser)))
.andExpect(content().string("test-subject"));
}
@@ -143,7 +138,6 @@ public class SecurityMockMvcRequestPostProcessorsOidcLoginTests {
public void oidcLoginWhenOidcUserSpecifiedThenLastCalledTakesPrecedence() throws Exception {
OidcUser oidcUser = new DefaultOidcUser(AuthorityUtils.createAuthorityList("SCOPE_read"),
TestOidcIdTokens.idToken().build());
this.mvc.perform(get("/id-token/sub").with(oidcLogin().idToken((i) -> i.subject("foo")).oidcUser(oidcUser)))
.andExpect(status().isOk()).andExpect(content().string("subject"));
this.mvc.perform(get("/id-token/sub").with(oidcLogin().oidcUser(oidcUser).idToken((i) -> i.subject("bar"))))
@@ -82,7 +82,6 @@ public class SecurityMockMvcRequestPostProcessorsOpaqueTokenTests {
@Test
public void opaqueTokenWhenUsingDefaultsThenProducesDefaultAuthentication() throws Exception {
this.mvc.perform(get("/name").with(opaqueToken())).andExpect(content().string("user"));
this.mvc.perform(get("/admin/scopes").with(opaqueToken())).andExpect(status().isForbidden());
}
@@ -100,7 +99,6 @@ public class SecurityMockMvcRequestPostProcessorsOpaqueTokenTests {
OAuth2AuthenticatedPrincipal principal = mock(OAuth2AuthenticatedPrincipal.class);
given(principal.getName()).willReturn("ben");
given(principal.getAuthorities()).willReturn(authorities);
this.mvc.perform(get("/name").with(opaqueToken().principal(principal))).andExpect(content().string("ben"));
}
@@ -109,7 +107,6 @@ public class SecurityMockMvcRequestPostProcessorsOpaqueTokenTests {
public void opaqueTokenWhenPrincipalSpecifiedThenLastCalledTakesPrecedence() throws Exception {
OAuth2AuthenticatedPrincipal principal = TestOAuth2AuthenticatedPrincipals
.active((a) -> a.put("scope", "user"));
this.mvc.perform(get("/opaque-token/sub")
.with(opaqueToken().attributes((a) -> a.put("sub", "foo")).principal(principal)))
.andExpect(status().isOk()).andExpect(content().string((String) principal.getAttribute("sub")));
@@ -147,14 +144,12 @@ public class SecurityMockMvcRequestPostProcessorsOpaqueTokenTests {
@GetMapping("/opaque-token/{attribute}")
String tokenAttribute(@AuthenticationPrincipal OAuth2AuthenticatedPrincipal principal,
@PathVariable("attribute") String attribute) {
return principal.getAttribute(attribute);
}
@GetMapping("/admin/scopes")
List<String> scopes(
@AuthenticationPrincipal(expression = "authorities") Collection<GrantedAuthority> authorities) {
return authorities.stream().map(GrantedAuthority::getAuthority).collect(Collectors.toList());
}
@@ -73,7 +73,6 @@ public class SecurityMockMvcRequestPostProcessorsSecurityContextTests {
@Test
public void userDetails() {
securityContext(this.expectedContext).postProcessRequest(this.request);
verify(this.repository).saveContext(this.contextCaptor.capture(), eq(this.request),
any(HttpServletResponse.class));
SecurityContext context = this.contextCaptor.getValue();
@@ -68,9 +68,7 @@ public class SecurityMockMvcRequestPostProcessorsTestSecurityContextTests {
@Test
public void testSecurityContextSaves() {
TestSecurityContextHolder.setContext(this.context);
testSecurityContext().postProcessRequest(this.request);
verify(this.repository).saveContext(eq(this.context), eq(this.request), any(HttpServletResponse.class));
}
@@ -78,7 +76,6 @@ public class SecurityMockMvcRequestPostProcessorsTestSecurityContextTests {
@Test
public void testSecurityContextNoContext() {
testSecurityContext().postProcessRequest(this.request);
verify(this.repository, never()).saveContext(any(SecurityContext.class), eq(this.request),
any(HttpServletResponse.class));
}
@@ -75,7 +75,6 @@ public class SecurityMockMvcRequestPostProcessorsUserDetailsTests {
@Test
public void userDetails() {
user(this.userDetails).postProcessRequest(this.request);
verify(this.repository).saveContext(this.contextCaptor.capture(), eq(this.request),
any(HttpServletResponse.class));
SecurityContext context = this.contextCaptor.getValue();
@@ -81,9 +81,7 @@ public class SecurityMockMvcRequestPostProcessorsUserTests {
@Test
public void userWithDefaults() {
String username = "userabc";
user(username).postProcessRequest(this.request);
verify(this.repository).saveContext(this.contextCaptor.capture(), eq(this.request),
any(HttpServletResponse.class));
SecurityContext context = this.contextCaptor.getValue();
@@ -96,9 +94,7 @@ public class SecurityMockMvcRequestPostProcessorsUserTests {
@Test
public void userWithCustom() {
String username = "customuser";
user(username).roles("CUSTOM", "ADMIN").password("newpass").postProcessRequest(this.request);
verify(this.repository).saveContext(this.contextCaptor.capture(), eq(this.request),
any(HttpServletResponse.class));
SecurityContext context = this.contextCaptor.getValue();
@@ -112,9 +108,7 @@ public class SecurityMockMvcRequestPostProcessorsUserTests {
@Test
public void userCustomAuthoritiesVarargs() {
String username = "customuser";
user(username).authorities(this.authority1, this.authority2).postProcessRequest(this.request);
verify(this.repository).saveContext(this.contextCaptor.capture(), eq(this.request),
any(HttpServletResponse.class));
SecurityContext context = this.contextCaptor.getValue();
@@ -130,9 +124,7 @@ public class SecurityMockMvcRequestPostProcessorsUserTests {
@Test
public void userCustomAuthoritiesList() {
String username = "customuser";
user(username).authorities(Arrays.asList(this.authority1, this.authority2)).postProcessRequest(this.request);
verify(this.repository).saveContext(this.contextCaptor.capture(), eq(this.request),
any(HttpServletResponse.class));
SecurityContext context = this.contextCaptor.getValue();
@@ -69,7 +69,6 @@ public class Gh3409Tests {
this.mockMvc
.perform(get("/public/")
.with(securityContext(new SecurityContextImpl())));
this.mockMvc
.perform(get("/public/"))
.andExpect(unauthenticated());
@@ -82,7 +81,6 @@ public class Gh3409Tests {
this.mockMvc
.perform(get("/")
.with(securityContext(new SecurityContextImpl())));
this.mockMvc
.perform(get("/"))
.andExpect(unauthenticated());
@@ -104,7 +102,6 @@ public class Gh3409Tests {
.formLogin().and()
.httpBasic();
// @formatter:on
}
}
@@ -63,10 +63,8 @@ public class SecurityMockMvcConfigurerTests {
public void beforeMockMvcCreatedOverrideBean() throws Exception {
returnFilterBean();
SecurityMockMvcConfigurer configurer = new SecurityMockMvcConfigurer(this.filter);
configurer.afterConfigurerAdded(this.builder);
configurer.beforeMockMvcCreated(this.builder, this.context);
assertFilterAdded(this.filter);
verify(this.servletContext).setAttribute(BeanIds.SPRING_SECURITY_FILTER_CHAIN, this.filter);
}
@@ -75,27 +73,22 @@ public class SecurityMockMvcConfigurerTests {
public void beforeMockMvcCreatedBean() throws Exception {
returnFilterBean();
SecurityMockMvcConfigurer configurer = new SecurityMockMvcConfigurer();
configurer.afterConfigurerAdded(this.builder);
configurer.beforeMockMvcCreated(this.builder, this.context);
assertFilterAdded(this.beanFilter);
}
@Test
public void beforeMockMvcCreatedNoBean() throws Exception {
SecurityMockMvcConfigurer configurer = new SecurityMockMvcConfigurer(this.filter);
configurer.afterConfigurerAdded(this.builder);
configurer.beforeMockMvcCreated(this.builder, this.context);
assertFilterAdded(this.filter);
}
@Test(expected = IllegalStateException.class)
public void beforeMockMvcCreatedNoFilter() {
SecurityMockMvcConfigurer configurer = new SecurityMockMvcConfigurer();
configurer.afterConfigurerAdded(this.builder);
configurer.beforeMockMvcCreated(this.builder, this.context);
}
@@ -59,7 +59,6 @@ public class SecurityMockMvcConfigurersTests {
public void applySpringSecurityWhenAddFilterFirstThenFilterFirst() throws Exception {
MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).addFilters(this.noOpFilter)
.apply(springSecurity()).build();
mockMvc.perform(get("/")).andExpect(status().isOk());
}
@@ -73,7 +72,6 @@ public class SecurityMockMvcConfigurersTests {
public void applySpringSecurityWhenAddFilterSecondThenSecurityFirst() throws Exception {
MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).apply(springSecurity())
.addFilters(this.noOpFilter).build();
mockMvc.perform(get("/")).andExpect(status().is4xxClientError());
}
@@ -115,7 +115,6 @@ public class CustomConfigAuthenticationTests {
return new InMemoryUserDetailsManager(user);
}
// @formatter:on
@Bean
SecurityContextRepository securityContextRepository() {
HttpSessionSecurityContextRepository repo = new HttpSessionSecurityContextRepository();
@@ -98,7 +98,6 @@ public class WebTestUtilsTests {
}
// getSecurityContextRepository
@Test
public void getSecurityContextRepositoryNoWac() {
assertThat(WebTestUtils.getSecurityContextRepository(this.request))
@@ -131,31 +130,26 @@ public class WebTestUtilsTests {
@Test
public void findFilterNoMatchingFilters() {
loadConfig(PartialSecurityConfig.class);
assertThat(WebTestUtils.findFilter(this.request, SecurityContextPersistenceFilter.class)).isNull();
}
@Test
public void findFilterNoSpringSecurityFilterChainInContext() {
loadConfig(NoSecurityConfig.class);
CsrfFilter toFind = new CsrfFilter(new HttpSessionCsrfTokenRepository());
FilterChainProxy springSecurityFilterChain = new FilterChainProxy(
new DefaultSecurityFilterChain(AnyRequestMatcher.INSTANCE, toFind));
this.request.getServletContext().setAttribute(BeanIds.SPRING_SECURITY_FILTER_CHAIN, springSecurityFilterChain);
assertThat(WebTestUtils.findFilter(this.request, toFind.getClass())).isEqualTo(toFind);
}
@Test
public void findFilterExplicitWithSecurityFilterInContext() {
loadConfig(SecurityConfigWithDefaults.class);
CsrfFilter toFind = new CsrfFilter(new HttpSessionCsrfTokenRepository());
FilterChainProxy springSecurityFilterChain = new FilterChainProxy(
new DefaultSecurityFilterChain(AnyRequestMatcher.INSTANCE, toFind));
this.request.getServletContext().setAttribute(BeanIds.SPRING_SECURITY_FILTER_CHAIN, springSecurityFilterChain);
assertThat(WebTestUtils.findFilter(this.request, toFind.getClass())).isSameAs(toFind);
}