Вы можете настроить пользователя для теста. Как вы это сделаете, зависит от того, как работает ваш уровень безопасности. Вот как я бы поступил для Spring MVC с Spring Security:
@Test
public void testStuff() throws Exception {
UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(USER_LOGIN, USER_PASSWORD);
SecurityContextHolder.getContext().setAuthentication(authentication);
restApiNameMockMvc.perform(fileUpload("/api/api_name/stuff")
.param("param", PARAM_VALUE)
)
.andExpect(status().isOk())
.andExpect(jsonPath("$.testedProperty").value(expectedValue));
}
Обратите внимание, что я не вызываю конечную точку входа в систему, я задаю контекст, как если бы пользователь уже вошел в систему. MockMvc
не применяет правила Spring Security, и SecurityContextHolder будет удерживать пользователя, чтобы его мог получить протестированный метод. .
Метод, который вы тестируете, может получить этого пользователя с помощью:
SecurityContextHolder.getContext().getAuthentication().getPrincipal()
Если вы не сделали такой вызов, вы можете просто положиться на MockMvc и вообще не устанавливать зарегистрированного пользователя.
Здесь я явно устанавливаю зарегистрированного пользователя для каждого теста, но использование вашей инфраструктуры тестирования избавит вас от необходимости делать это.