Как я могу проверить защищенную конечную точку с загрузкой Awaitility в Spring? - PullRequest
0 голосов
/ 02 апреля 2020

Я использую пружинную загрузку и хочу заявить об асинхронном побочном эффекте, вызвав защищенную конечную точку с помощью Mock Mvc.

Я использовал Awaitility , но очевидно, что при выполнении в другом потоке смоделированный контекст безопасности теряется.

Я не смог найти способ передачи контекста, я попытался с помощью SecurityContextHolder.setContext(), но он не работал, я предположим, что Mock Mvc Spring сохраняет контекст по-другому.

  @Test
  @WithMockUser(authorities = "admin", username = "user")
  void shouldRunSideEffectAsync() throws Exception {
    mockMvc.perform(post("/foo")).andExpect(status().isAccepted());
    await()
        .atMost(TIMEOUT)
        .untilAsserted(() -> mockMvc.perform(get("/foo")).andExpect(status().isOk()));
  }

GET будет возвращать 404 некоторое время, а затем 200, когда асин c задача завершена. Однако это всегда будет возвращать 403, поскольку информация MockUser потеряна.

Как я могу решить эту проблему?

...