Spring Boot 2.1 - @WebMvcTest без автоматической настройки Spring Security - PullRequest
0 голосов
/ 20 ноября 2018

Перед переходом на Spring Boot 2.1 у нас было несколько тестов контроллеров в наших сервисах с использованием @WebMvcTest в сочетании с @AutoConfigureMockMvc:

@WebMvcTest(SomeController.class)
@AutoConfigureMockMvc(secure = false)
public class SomeControllerTests { ... }

Это привело к тому, что конфигурация Spring Security былаотключено, и вы можете запускать MVC-тесты без использования OAuth / JWT.

В Spring Boot 2.1 атрибут secured устарел, а в примечаниях к выпуску отмечается, что

[...] @WebMvcTest ищет bean-компонент WebSecurityConfigurer [...].

Чтобы избежать устаревшего атрибута secured и загрузки нашего WebSecurityConfigurer, мы переписали наши тесты так:

@WebMvcTest(
    value = SomeController.class,
    excludeFilters = @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = WebSecurityConfigurer.class),
    excludeAutoConfiguration = MockMvcSecurityAutoConfiguration.class)
public class SomeControllerTests { ... }

Вопрос в том, есть ли в Spring Boot 2.1 более компактный способ определения таких тестов?

1 Ответ

0 голосов
/ 20 ноября 2018

Да, вместо того, чтобы обойти тот факт, что флаг устарел, вы должны принять тот факт, что он движется в этом направлении и дальше.

Начиная с Spring Boot 2.1, если у вас есть Spring Security, ваши тесты будут защищены с помощью вашей пользовательской конфигурации.Какова реальная проблема с этим?

Если вы не хотите проходить аутентификацию для определенных тестов, просто используйте тестовую инфраструктуру Spring Security и добавьте @WithMockUser.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...