В моем приложении springBoot (RELEASE 1.5.20) включена обычная аутентификация.Я создал полный ИТ-тест со следующим кодом
@RunWith(SpringRunner.class)
@ActiveProfiles(profiles = "securedIT")
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class MYtestIT{
@LocalServerPort
private int port;
private String getRootUrl() {
return "http://localhost:" + port;
}
@Autowired
private TestRestTemplate restTemplate;
@Test
public void testAdmincachWitheWrongAuthentication() {
String baseUri = getRootUrl() + CONTEXT_ROOT;
HttpEntity<String> entity = new HttpEntity<>(null, new HttpHeaders());
URI url = URI.create(baseUri + "/ref/cache/task");
ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.DELETE, entity, String.class);
//ResponseEntity<String> response = restTemplate.withBasicAuth("user", "myPwd").exchange(url, HttpMethod.DELETE, entity, String.class);
assertEquals(ReferenceWSIT.MSG_WRON_STATUS,401, response.getStatusCode().value());
}
}
И в приложении конфигурация выглядит следующим образом:
@Configuration
public class GlobalWebSecurityConfigurerAdapter extends
WebSecurityConfigurerAdapter {
@Override
public void configure(HttpSecurity http) throws Exception {
http.csrf().disable()
.authorizeRequests()
.antMatchers("ref/v1/**").permitAll()
.antMatchers("ref/cache/**").authenticated().and().httpBasic();
}
}
Когда я запускаю приложение, фильтр аутентификации работает отлично, проблемапроисходит, когда я запускаю интеграционный тест Junit.Если я вызываю restTemplate.withBasicAuth (), тест завершается неудачно или успешно, в зависимости от положительных или плохих учетных данных.Но если в случае прямого вызова restTemplate без BasicAuth все запросы будут разрешены (поэтому мое тестовое утверждение не выполнено).
Как ИТ-тест с моей полной конфигурацией, я бы ожидал, что аутентификация была обязательной, почему это не так