Весенний перенос SecurityContext для тестирования интеграции
106
5
Я хочу проверить мои конечные точки REST. В моих методах REST есть некоторые фильтры, основанные на SecurityContext. Когда я устанавливаю SecurityContext в своих тестовых классах и вызываю остальные методы, SecurityContext удаляется. Только когда я создаю SecurityContext в моих методах REST, это имеет эффект. Есть ли возможность передать контекст?
SecurityContext securityContext = new SecurityContextImpl();
securityContext.setAuthentication(authentication);
SecurityContextHolder.setContext(securityContext);
// is here User ...
.mockMvc.perform(get("/test"...)
RestController:
public ResponseEntity<...> getTest(){
// is now anonymus
SecurityContextHolder.getContext().getAuthentication().getPrincipal();
}
благодарю вас
спросил(а)
2021-01-19T17:34:43+03:00
2 месяца, 3 недели назад
добавить комментарий
пожаловаться
Решение
75
Вы можете установить аутентификацию, которая повторно используется для всех тестов в одном классе тестов с использованием метода defaultRequest
:
@BeforeClass
public void setUp()
{
mockMvc = MockMvcBuilders.webAppContextSetup(wac).defaultRequest(get("/").with(authentication(authentication))).apply(springSecurity()).build();
}
Необходимый статический импорт:
import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.authentication;
import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.springSecurity;
ответил(а)
2021-01-19T17:34:43+03:00
2 месяца, 3 недели назад
добавить комментарий
пожаловаться
Ваш ответ