我的Sping Boot 应用程序通过使用spring-boot-starter-oauth2-client
依赖关系充当OAuth2客户端。
现在,我想编写一个集成测试(@SpringBootTest
)来验证受OAuth2保护的REST端点的行为。Testing OAuth 2.0 Clients文档描述了可以使用mutateWith(mockOAuth2Client())
来模拟通过OAuth2进行的登录。
public class UserIT {
@Autowired
private WebTestClient webTestClient;
@Test
void test() {
webTestClient
.mutateWith(mockOAuth2Client("keycloak"))
.get()
.uri("/api/user/1345")
.exchange()
.expectStatus().isOk();
}
}
但是,测试失败,并显示以下消息:
java.lang.NullPointerException: Cannot invoke "org.springframework.web.server.adapter.WebHttpHandlerBuilder.filters(java.util.function.Consumer)" because "httpHandlerBuilder" is null
at org.springframework.security.test.web.reactive.server.SecurityMockServerConfigurers$OAuth2ClientMutator.afterConfigurerAdded(SecurityMockServerConfigurers.java:1113)
at org.springframework.test.web.reactive.server.DefaultWebTestClientBuilder.apply(DefaultWebTestClientBuilder.java:265)
at org.springframework.test.web.reactive.server.DefaultWebTestClient.mutateWith(DefaultWebTestClient.java:167)
据我所知,这个WebTestClient
设置只适合于“React式应用程序”,而我的应用程序是一个“Servlet应用程序”。不幸的是,我找不到如何为Servlet应用程序模拟这个OAuth2客户机的必要信息。
1条答案
按热度按时间lp0sw83n1#
我能够使用以下测试配置成功运行您的
@Autowired
和@Test
代码: