Spring Boot Testing - Как имитировать аутентификацию в микросервисной среде с помощью параметра - PullRequest
0 голосов
/ 06 июня 2019

Мы обновили 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-сервисы.Или мы можем выключить его и как-нибудь передать параметр?

...