Как заставить тайм-аут сеанса в Spring Boot / Mockito - PullRequest
0 голосов
/ 08 марта 2020

Я делаю JUnit-тест REST-контроллера Spring Boot и пытаюсь форсировать тайм-аут сеанса. Идея состоит в том, чтобы вызвать метод, используя пользователя с правами доступа, а затем через 5 минут сеанс будет очищен автоматически, и следующий вызов того же метода вернет 401.

Я пытаюсь сделать это с помощью простого код первый. Я добавляю атрибут в MockHttpSession и устанавливаю значение 3MInInactiveInterval равным 3 секундам. Сделай первый звонок. Подождите 5 секунд, прежде чем делать второй. Я думал, что если я сделаю еще один запрос через 5 секунд, сессия не будет содержать «тест». Тем не менее, он содержит его.

Вот что я делаю:

@Test
public void testSessionController() throws Exception {
  MockHttpSession session = new MockHttpSession();

  session.setMaxInactiveInterval(3);
  session.setAttribute("test", "test");

  MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.get("/session").session(session);
  mockMvc.perform(builder).andExpect(status().isOk());

  //Set timeout 5 seconds between requests
  TimeUnit.SECONDS.sleep(5);
  mockMvc.perform(builder).andExpect(status().is4xxClientError());
}

Не могли бы вы, пожалуйста, дайте мне знать, что я делаю не так, и если можно вызвать тайм-аут, чтобы очистить сеанс в Mockito

...