MockMVC - это инструмент, предоставляемый Spring Framework, который позволяет разрабатывать и протестировать веб-приложения на Java. Он обеспечивает возможность эмулировать HTTP-запросы и проверять ответы приложения, не выполняя реальные HTTP-запросы.
Однако, по умолчанию MockMVC не включает поддержку безопасности, поскольку предполагается, что вы тестируете только функциональность контроллеров и сервисов вашего приложения, а не механизмы аутентификации и авторизации, обеспеченные Spring Security.
Для включения поддержки Spring Security в MockMVC, вы можете использовать аннотацию @WithMockUser
, которая указывает, какого пользователя использовать при выполнении запроса. Например, вы можете аннотировать свой тестовый метод следующим образом:
@Test @WithMockUser(username = "admin", roles = { "ADMIN" }) public void testAdminEndpoint() throws Exception { mockMvc.perform(get("/admin")) .andExpect(status().isOk()) .andExpect(content().string("Hello, admin!")); }
Таким образом, вы можете установить пользователя, имеющего определенные права доступа, и проверить корректность работы аутентификации и авторизации в вашем приложении.
Тем не менее, стоит отметить, что в реальности Spring Security имеет множество настроек и сложных механизмов, которые должны быть протестированы в самом приложении, а не в тестах MockMVC. Для тестирования некоторых аспектов Spring Security, таких как права доступа к ресурсам или логика аутентификации, вам может потребоваться использовать другие инструменты, такие как Spring Security Test или Mockito.