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