1
0
mirror of synced 2026-08-05 01:36:56 +00:00

Use ReactorSecurityContextHolder

Issue gh-4713
This commit is contained in:
Rob Winch
2017-10-25 16:18:27 -05:00
parent 9ea4df5b5d
commit 747473257f
8 changed files with 55 additions and 43 deletions
@@ -18,6 +18,7 @@ package org.springframework.security.test.context.support;
import org.reactivestreams.Subscription;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.ReactiveSecurityContextHolder;
import org.springframework.security.test.context.TestSecurityContextHolder;
import org.springframework.test.context.TestContext;
import org.springframework.test.context.TestExecutionListener;
@@ -25,7 +26,6 @@ import org.springframework.test.context.support.AbstractTestExecutionListener;
import org.springframework.util.ClassUtils;
import reactor.core.CoreSubscriber;
import reactor.core.publisher.Hooks;
import reactor.core.publisher.Mono;
import reactor.core.publisher.Operators;
import reactor.util.context.Context;
@@ -76,7 +76,8 @@ public class ReactorContextTestExecutionListener
if (authentication == null) {
return context;
}
return context.put(Authentication.class, Mono.just(authentication));
Context toMerge = ReactiveSecurityContextHolder.withAuthentication(authentication);
return context.putAll(toMerge);
}
@Override
@@ -20,6 +20,8 @@ import static org.assertj.core.api.Assertions.assertThat;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.ReactiveSecurityContextHolder;
import org.springframework.security.core.context.SecurityContext;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.test.context.support.WithMockUser;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@@ -42,8 +44,8 @@ public class SecurityTestExecutionListenerTests {
@WithMockUser
@Test
public void reactorContextTestSecurityContextHolderExecutionListenerTestIsRegistered() {
Mono<String> name = Mono.subscriberContext()
.flatMap( context -> context.<Mono<Authentication>>get(Authentication.class))
Mono<String> name = ReactiveSecurityContextHolder.getContext()
.map(SecurityContext::getAuthentication)
.map(Principal::getName);
StepVerifier.create(name)
@@ -26,6 +26,8 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import org.springframework.security.core.context.ReactiveSecurityContextHolder;
import org.springframework.security.core.context.SecurityContext;
import reactor.core.publisher.Hooks;
import reactor.core.publisher.Mono;
import reactor.test.StepVerifier;
@@ -108,8 +110,8 @@ public class ReactorContextTestExecutionListenerTests {
}
public void assertAuthentication(Authentication expected) {
Mono<Authentication> authentication = Mono.subscriberContext()
.flatMap( context -> context.<Mono<Authentication>>get(Authentication.class));
Mono<Authentication> authentication = ReactiveSecurityContextHolder.getContext()
.map(SecurityContext::getAuthentication);
StepVerifier.create(authentication)
.expectNext(expected)