From 3c7c256fc92842eca4631e3d359a07eca66a10a1 Mon Sep 17 00:00:00 2001 From: Rob Winch Date: Fri, 19 May 2017 08:48:58 -0500 Subject: [PATCH] WebTestHandler now returns wrapped ServerWebExchange For easier testing WebTestHandler now obtains the wrapped ServerWebExchange objects. --- .../web/reactive/server/WebTestHandler.java | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/webflux/src/test/java/org/springframework/security/test/web/reactive/server/WebTestHandler.java b/webflux/src/test/java/org/springframework/security/test/web/reactive/server/WebTestHandler.java index 1ce7e9d19f..0630d5f704 100644 --- a/webflux/src/test/java/org/springframework/security/test/web/reactive/server/WebTestHandler.java +++ b/webflux/src/test/java/org/springframework/security/test/web/reactive/server/WebTestHandler.java @@ -33,16 +33,21 @@ import java.util.Arrays; * @since 5.0 */ public class WebTestHandler { + private final MockWebHandler webHandler = new MockWebHandler(); private final WebHandler handler; - private WebTestHandler(WebHandler handler) { - this.handler = handler; + private WebTestHandler(WebFilter... filters) { + this.handler = new FilteringWebHandler(webHandler, Arrays.asList(filters)); } public WebHandlerResult exchange(BaseBuilder baseBuilder) { ServerWebExchange exchange = baseBuilder.toExchange(); + return exchange(exchange); + } + + public WebHandlerResult exchange(ServerWebExchange exchange) { handler.handle(exchange).block(); - return new WebHandlerResult(exchange); + return new WebHandlerResult(webHandler.exchange); } public static class WebHandlerResult { @@ -58,6 +63,16 @@ public class WebTestHandler { } public static WebTestHandler bindToWebFilters(WebFilter... filters) { - return new WebTestHandler(new FilteringWebHandler(exchange -> Mono.empty(), Arrays.asList(filters))); + return new WebTestHandler(filters); + } + + static class MockWebHandler implements WebHandler { + private ServerWebExchange exchange; + + @Override + public Mono handle(ServerWebExchange exchange) { + this.exchange = exchange; + return Mono.empty(); + } } }