我正在使用Spring Boot编写此路由,并使用auth0授权。 如果标头中没有授权,则应返回401,而标头中具有有效的auth0 id_token时,则应返回200。为此编写单元测试的正确方法是什么?
要获得标题中的授权,我应该获得真实的id_token,还是可以模拟一个?如果我应该使用真实的id_token,是否应该将其作为字符串存储在测试代码中,还是应该将其存储在其他地方(例如,作为环境变量)来保护它?
答案 0 :(得分: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
用于测试以给定特权运行的方法。