Browse Source

ReactorContextTestExecutionListener should use named hooks

Fixes: gh-6075
pull/6210/head
Aanuoluwapo Otitoola 7 years ago committed by Rob Winch
parent
commit
a28c677f88
  1. 5
      test/src/main/java/org/springframework/security/test/context/support/ReactorContextTestExecutionListener.java
  2. 10
      test/src/test/java/org/springframework/security/test/context/support/ReactorContextTestExecutionListenerTests.java

5
test/src/main/java/org/springframework/security/test/context/support/ReactorContextTestExecutionListener.java

@ -44,6 +44,7 @@ public class ReactorContextTestExecutionListener @@ -44,6 +44,7 @@ public class ReactorContextTestExecutionListener
extends DelegatingTestExecutionListener {
private static final String HOOKS_CLASS_NAME = "reactor.core.publisher.Hooks";
private static final String CONTEXT_OPERATOR_KEY = SecurityContext.class.getName();
public ReactorContextTestExecutionListener() {
super(createDelegate());
@ -59,12 +60,12 @@ public class ReactorContextTestExecutionListener @@ -59,12 +60,12 @@ public class ReactorContextTestExecutionListener
@Override
public void beforeTestMethod(TestContext testContext) throws Exception {
SecurityContext securityContext = TestSecurityContextHolder.getContext();
Hooks.onLastOperator(Operators.lift((s, sub) -> new SecuritySubContext<>(sub, securityContext)));
Hooks.onLastOperator(CONTEXT_OPERATOR_KEY, Operators.lift((s, sub) -> new SecuritySubContext<>(sub, securityContext)));
}
@Override
public void afterTestMethod(TestContext testContext) throws Exception {
Hooks.resetOnLastOperator();
Hooks.resetOnLastOperator(CONTEXT_OPERATOR_KEY);
}
private static class SecuritySubContext<T> implements CoreSubscriber<T> {

10
test/src/test/java/org/springframework/security/test/context/support/ReactorContextTestExecutionListenerTests.java

@ -174,6 +174,16 @@ public class ReactorContextTestExecutionListenerTests { @@ -174,6 +174,16 @@ public class ReactorContextTestExecutionListenerTests {
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);
assertThat(Mono.subscriberContext().block()).isEqualTo(obj);
}
@Test
public void orderWhenComparedToWithSecurityContextTestExecutionListenerIsAfter() {
OrderComparator comparator = new OrderComparator();

Loading…
Cancel
Save