我正在为我的 Spring MVC 控制器设置单元测试,并且我正在尝试利用 Spring MVC 测试框架。对于我的控制器中的每个端点,我想确保只有具有指定权限的用户才能访问。我的问题是我使用自定义用户实现并在使用 mockMvc 工具时获取类转换异常。
对于每个请求,我希望它看起来像这样:
mockMvc.perform(MockMvcRequestBuilders.get(path).with(user("user").authorities(authorities)))
.andExpect(status().isOk())
.andExpect(authenticated().withUsername("user"));
我想以某种方式调整上述语句以指定我的自定义用户主体。请参阅下面的 Spring 的用户方法。我的第一个想法是我会覆盖该类UserRequestPostProcessor
并对其进行调整,以便它使用我的自定义用户类型而不是标准的 Spring Security 用户,但是这个类被声明为 final 并且不能被子类化。是否支持覆盖默认行为并使用自定义用户类型?
public static UserRequestPostProcessor user(String username) {
return new UserRequestPostProcessor(username);
}
据我所见,我是使用@WithSecurityContext注释我的测试的候选人,以便我可以在身份验证中设置我的自定义用户主体。我在这里担心的是,我将仅限于为每种方法测试一个用户,而这不适用于我正在尝试做的事情。
如何测试多个自定义用户提出的请求?