Как я могу запретить 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 {
// ...
}
Есть ли безболезненный способ сделать это?