У меня есть приложение 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