Skip to content

Commit 5c5efc9

Browse files
committed
SpringTestContext registers WebTestClient Bean
Closes gh-17780
1 parent 806297d commit 5c5efc9

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

config/src/test/java/org/springframework/security/config/test/SpringTestContext.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,11 @@
3030
import org.springframework.mock.web.MockServletConfig;
3131
import org.springframework.security.config.BeanIds;
3232
import org.springframework.security.config.util.InMemoryXmlWebApplicationContext;
33+
import org.springframework.security.test.web.reactive.server.SecurityMockServerConfigurers;
34+
import org.springframework.security.test.web.reactive.server.WebTestClientBuilder;
3335
import org.springframework.security.web.servlet.MockServletContext;
3436
import org.springframework.test.context.web.GenericXmlWebContextLoader;
37+
import org.springframework.test.web.reactive.server.WebTestClient;
3538
import org.springframework.test.web.servlet.MockMvc;
3639
import org.springframework.test.web.servlet.request.RequestPostProcessor;
3740
import org.springframework.test.web.servlet.setup.ConfigurableMockMvcBuilder;
@@ -42,6 +45,7 @@
4245
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
4346
import org.springframework.web.context.support.XmlWebApplicationContext;
4447
import org.springframework.web.filter.OncePerRequestFilter;
48+
import org.springframework.web.server.WebFilter;
4549

4650
import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.springSecurity;
4751

@@ -156,6 +160,18 @@ public void autowire() {
156160
// @formatter:on
157161
this.context.getBeanFactory().registerResolvableDependency(MockMvc.class, mockMvc);
158162
}
163+
String webFluxSecurityBean = "org.springframework.security.config.annotation.web.reactive.WebFluxSecurityConfiguration.WebFilterChainFilter";
164+
if (this.context.containsBean(webFluxSecurityBean)) {
165+
WebFilter springSecurityFilter = this.context.getBean(webFluxSecurityBean, WebFilter.class);
166+
// @formatter:off
167+
WebTestClient webTest = WebTestClient
168+
.bindToController(new WebTestClientBuilder.Http200RestController())
169+
.webFilter(springSecurityFilter)
170+
.apply(SecurityMockServerConfigurers.springSecurity())
171+
.build();
172+
// @formatter:on
173+
this.context.getBeanFactory().registerResolvableDependency(WebTestClient.class, webTest);
174+
}
159175
AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor();
160176
bpp.setBeanFactory(this.context.getBeanFactory());
161177
bpp.processInjection(this.test);

0 commit comments

Comments
 (0)