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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在头文件中使用授权编写路由/端点的单元测试?相关的知识,希望对你有一定的参考价值。

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

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

答案

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意味着用于测试以给定权限运行的方法。

以上是关于如何在头文件中使用授权编写路由/端点的单元测试?的主要内容,如果未能解决你的问题,请参考以下文章

Spring OAuth2 安全单元测试

如何从快递控制反应路由器

在 Apache Camel 应用程序中,单元测试如何注入模拟端点来代替真实端点?

Keycloak 直接访问授权在 keycloak userinfo 端点上无效

Slim Framework 端点单元测试

如何对我的 WCF 客户端类进行单元测试?