From 5c5efc9092e5263e19632f65dc14132044376bac Mon Sep 17 00:00:00 2001 From: Rob Winch <362503+rwinch@users.noreply.github.com> Date: Wed, 20 Aug 2025 12:00:24 -0500 Subject: [PATCH] SpringTestContext registers WebTestClient Bean Closes gh-17780 --- .../security/config/test/SpringTestContext.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/config/src/test/java/org/springframework/security/config/test/SpringTestContext.java b/config/src/test/java/org/springframework/security/config/test/SpringTestContext.java index cfe277bd44..2679796bb2 100644 --- a/config/src/test/java/org/springframework/security/config/test/SpringTestContext.java +++ b/config/src/test/java/org/springframework/security/config/test/SpringTestContext.java @@ -30,8 +30,11 @@ import org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostP import org.springframework.mock.web.MockServletConfig; import org.springframework.security.config.BeanIds; import org.springframework.security.config.util.InMemoryXmlWebApplicationContext; +import org.springframework.security.test.web.reactive.server.SecurityMockServerConfigurers; +import org.springframework.security.test.web.reactive.server.WebTestClientBuilder; import org.springframework.security.web.servlet.MockServletContext; import org.springframework.test.context.web.GenericXmlWebContextLoader; +import org.springframework.test.web.reactive.server.WebTestClient; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.request.RequestPostProcessor; import org.springframework.test.web.servlet.setup.ConfigurableMockMvcBuilder; @@ -42,6 +45,7 @@ import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; import org.springframework.web.context.support.XmlWebApplicationContext; import org.springframework.web.filter.OncePerRequestFilter; +import org.springframework.web.server.WebFilter; import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.springSecurity; @@ -156,6 +160,18 @@ public class SpringTestContext implements Closeable { // @formatter:on this.context.getBeanFactory().registerResolvableDependency(MockMvc.class, mockMvc); } + String webFluxSecurityBean = "org.springframework.security.config.annotation.web.reactive.WebFluxSecurityConfiguration.WebFilterChainFilter"; + if (this.context.containsBean(webFluxSecurityBean)) { + WebFilter springSecurityFilter = this.context.getBean(webFluxSecurityBean, WebFilter.class); + // @formatter:off + WebTestClient webTest = WebTestClient + .bindToController(new WebTestClientBuilder.Http200RestController()) + .webFilter(springSecurityFilter) + .apply(SecurityMockServerConfigurers.springSecurity()) + .build(); + // @formatter:on + this.context.getBeanFactory().registerResolvableDependency(WebTestClient.class, webTest); + } AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); bpp.setBeanFactory(this.context.getBeanFactory()); bpp.processInjection(this.test);