Как в тесты сервисов и контроллеров передать 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?


Ответы (0 шт):