Как отключить spring.factories в тесте Spring Security? - PullRequest
0 голосов
/ 01 ноября 2019

Как я могу запретить WebSecurityConfigurerAdapter читать мой файл spring.factories в моих тестах?

Фон

У меня есть файл spring.factories, который содержит AbstractHttpConfigurer, WebSecurityConfigurerAdapter применяется по умолчанию при сборке HttpSecurity:

// in WebSecurityConfigurerAdapter:
protected final HttpSecurity getHttp() throws Exception {
    // ...

    ClassLoader classLoader = this.context.getClassLoader();
    List<AbstractHttpConfigurer> defaultHttpConfigurers =
            SpringFactoriesLoader.loadFactories(AbstractHttpConfigurer.class, classLoader);

    for (AbstractHttpConfigurer configurer : defaultHttpConfigurers) {
        http.apply(configurer);
    }

    //...
}

Однако это создает проблему при написании интеграционных тестов. Если я использую WebSecurityConfigurerAdapter для теста, выполняется приведенный выше код и применяется мой конфигуратор:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
@WebAppConfiguration
public class MyTests {
    @Autowired
    WebApplicationContext wac;

    @Autowired
    Filter springSecurityFilterChain;

    MockMvc mockMvc;

    @Before
    public void setup() throws Exception {
        mockMvc = MockMvcBuilders
                .webAppContextSetup(wac)
                .apply(springSecurity(springSecurityFilterChain))
                .build();

    }

    @EnableWebSecurity
    static class TestWebSecurityConfig extends WebSecurityConfigurerAdapter {
        // ...
    }

Есть ли безболезненный способ сделать это?

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