我有API端点,要求用户担任特定角色。因此,在一些测试中,我尝试到达这些端点并期望出现401错误,但得到200。我正在使用MockMvc执行调用。
以下是控制器类的一些代码片段,其中包含我正在测试的方法之一:
@RestController
public class MyController {
@GetMapping("/getcurrentuser")
public User getCurrent() {
...code
}
}
以下是我的测试类(仅显示相应的测试方法和变量):
@RunWith(SpringRunner.class)
@WebMvcTest(MyController.class)
@ContextConfiguration(classes = MyController.class)
public class MyControllerTest {
@Autowired
private MockMvc mockMvc;
@Test
public void testGetCurrentFailedDueToIncorrectRole() throws Exception {
mockMvc.perform(get("/api/getcurrentuser")
.with(user(USER_NAME).password(PASSWORD)))
.andExpect(status().isUnauthorized());
}
}
我也有一个spring安全配置类,但是我不确定在这次测试中是否将它带入上下文(对不起,我对spring和unit testing还是很陌生)。在该类中,我具有以下代码行:
.antMatchers("/api/**").hasAnyRole("ADMIN", "READ_ONLY")
以前显示的测试失败了,正如我说的是200。现在,我认为我在此测试的配置中做错了,这就是为什么不考虑角色的原因。也许我对“ .with”部分的工作方式感到困惑。
任何形式的帮助将不胜感激。
答案 0 :(得分:0)
如果您使用的是Spring Boot,则可能要尝试使用@SpringBootTest和@AutoConfigureMockMvc。