Как в тесты сервисов и контроллеров передать OAuth2Authentication
В методы контроллера и сервиса приходит параметр OAuth2Authentication. Как можно его передать(сгенерировать) в тестах в контроллера и сервиса?
Пример метода из сервиса
@Transactional
public void update(OAuth2Authentication authentication) {
...
}
Пример метода из контроллера
@PutMapping
public void update(OAuth2Authentication authentication) {
service.update(authentication);
}
UPD:
В тестах сервисов я использую аннотацию @WithUserDetails(value = "[email protected]"), чтобы достать из бд существующего пользователя.
Далее с помощью ResourceServerTokenServices через токен достаю OAuth2Authentication выглядит это следующим образом:
OAuth2Authentication authentication = resourceServerTokenServices.loadAuthentication(token);
Из authentication мне надо достать Details. И возникает проблема, в тестах там сразу лежит LinkedHashMap, а если отправлять запрос через Postman, то в Details лежит OAuth2AuthenticationDetails.
Я через дебаг посмотрел, как формируется OAuth2Authentication. Там приходит
PreAuthenticatedAuthenticationToken, где в поле Details лежит OAuth2AuthenticationDetails.
Тестах это поле даже не формируется. Можно ли как то в тестах создать OAuth2Authentication c нужными полями, или создать authentication, где поле где в поле Details лежит OAuth2AuthenticationDetails?