Use ReactorSecurityContextHolder
Issue gh-4713
This commit is contained in:
+3
-2
@@ -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
|
||||
|
||||
+4
-2
@@ -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)
|
||||
|
||||
+4
-2
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user