Я делаю 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