【发布时间】:2019-02-10 07:53:58
【问题描述】:
我有 spring-security-oauth2 应用程序,它是一个 ResourceServer。我们有一个自定义的 PrincipalExtractor 类来构建自定义的 Principal 对象。此自定义 Principal 对象不扩展 Principal 或 UserDetails
class CustomUser{
//some custom fields
}
class CustomPrincipalExtractor implements PrincipalExtractor{
@Override
public CustomUser extractPrincipal(Map<String, Object> map){
return new CustomUser(map);
}
}
class SomeController{
@GetMapping
public ResponseEntity(@AuthenticationPrincipal CustomUser user){
//able to get user object
}
}
上面的代码工作正常。现在我想测试控制器,但无法传递 CustomUser 实例。
@SpringBootTest
@AutoConfigureMockMvc
public class SomeControllerTest{
@Autowired
private MockMvc mockMvc;
@Test
public void test(){
mockMvc.perform(get(...).principal(CANNOT pass CustomUser as it does not implement Principal))
}
}
我查看了其他一些要求自定义 HandlerMethodArgumentResolver 的解决方案,但不确定如何配置自动配置的 MockMvc
【问题讨论】:
标签: java spring spring-boot spring-security spring-security-oauth2