如何在头文件中使用授权编写路由/端点的单元测试?

问题描述 投票:0回答:1

我正在用Spring Boot编写这个路由并使用auth0进行授权。它应该在标题中没有授权时返回401,并且当标题中有一个有效的auth0 id_token时返回200。为它编写单元测试的正确方法是什么?

要在标题中获得授权,我应该获得真正的id_token,还是有办法模拟一个?如果我应该使用真正的id_token,将它作为字符串存储在测试代码中是否合适,还是应该将其存储在其他地方(例如作为环境变量)以保护它?

unit-testing spring-boot auth0
1个回答
0
投票

Spring有@WithMockUser注释,以帮助测试需要经过身份验证的用户的方法。这可以使用如下:

@RunWith(SpringRunner.class)
@SpringBootTest
public class MyControllerTests {

    private MockMvc mockMvc;

    @Before
    public void setup() {
        mockMvc = MockMvcBuilders
            .webAppContextSetup(context)
            .apply(springSecurity())
            .build();
    }

    @Test
    @WithMockUser(roles = "ADMIN")
    public void shouldUpdateEntry() throws Exception {
        ....
    }
}

请注意,这不会测试身份验证本身。 @WithMockUser意味着用于测试以给定权限运行的方法。

© www.soinside.com 2019 - 2024. All rights reserved.