Мы обновили Spring Boot Release v.1.5.8 до v.2.1.5.На 1.5.8 мы использовали следующую конфигурацию:
в каждом тестовом файле
@RunWith(SpringRunner.class)
@SpringBootTest(classes = HeartcoreApplicationTests.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@AutoConfigureMockMvc(secure = false, print = MockMvcPrint.NONE)
@Transactional
и перед каждым тестом мы издевались над контекстом безопасности следующим образом:
public static void MockSecurityContext() {
Authentication auth = Mockito.mock(Authentication.class);
SecurityContext securityContext = Mockito.mock(SecurityContext.class);
SecurityContextHolder.setContext(securityContext);
HashMap<String, Object> info = new HashMap<>();
info.put("year", Integer.toString(PROCESSING_YEAR));
when(auth.getDetails()).thenReturn(info);
when(securityContext.getAuthentication()).thenReturn(auth);
}
мы добавили год к аутентификации, потому что наше приложение работает с годами.И затем мы передали токен на предъявителя для oauth2:
mockMvc.perform(delete(getControllerUrl() + "/" + dummyObject2.getId())
.header("Authorization", BEARER_TOKEN))
Это сработало нормально.Теперь мы обновились до v.2.1.5 и просто получили 401. Как мы можем это исправить?Мы уже попробовали это https://www.baeldung.com/spring-security-integration-tests, но это все еще не работает.У нас есть микросервисы для аутентификации (oauth-2) и здесь хотим протестировать api-сервисы.Или мы можем выключить его и как-нибудь передать параметр?