如何在头文件中使用授权编写路由/端点的单元测试?
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
意味着用于测试以给定权限运行的方法。
以上是关于如何在头文件中使用授权编写路由/端点的单元测试?的主要内容,如果未能解决你的问题,请参考以下文章
在 Apache Camel 应用程序中,单元测试如何注入模拟端点来代替真实端点?