gpt4 book ai didi

java - 如何为具有 Spring Security 配置的 Spring Boot API 编写单元测试

转载 作者:行者123 更新时间:2023-12-04 09:45:58 25 4
gpt4 key购买 nike

我创建了一个 Spring Boot 包含各种端点的应用程序。 signup除外和登录端点我为其他请求添加了一个过滤器。所有其他请求应具有:
Authorization Bearer <token>
请求通过 Spring Security 过滤器链,通过 UserDetailService 检查用户是否存在于表中.

我想知道如何使用 Spring Security 为任何 GET/POST API 编写单元测试?

我想到的一种方法是通过调用 signup 来生成实际 token 。 API,然后使用 Signup API 生成的授权 token 调用其他 API。

或者

可能有一些方法可以模拟或跳过 Authorization Bearer 进行单元测试

我想知道遵循的正确/最佳方法是什么?

最佳答案

对于我的应用程序,我一直在使用 MockUser 的组合。带有 MockMvc 的注释 bean 。 MockUser能够使用用户及其主体填充 Spring SecurityContext,其中包括他的 User对象和 GrantedAuthority (又名角色)。有了这个,您可以测试您的 Controller ,而无需创建任何 token 。它更容易,并且与您的身份验证过程更加分离。

像这样:

@Test
@WithMockUser("admin")
void testAuthorize() throws Exception {
this.mockMvc.perform(get("/objects")).andExpect(status().isOk());
}

在 Spring 文档中,您可以阅读更多 about .你还有 @WithAnonymousUser ,模拟匿名用户, @WithUserDetails把自定义 UserDetailsService .

关于java - 如何为具有 Spring Security 配置的 Spring Boot API 编写单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62107632/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com