Как получить заголовок для запроса MockMvc, в зависимости от аннотации теста?
В продолжение этого вопроса мне интересно, как прозрачно добавить заголовок "Авторизация" в MockHttpServletRequestBuilder
только если данная аннотация присутствует в тесте.
образец:
@RunWith(SpringRunner.class)
@EnableSpringDataWebSupport
@WebMvcTest(MyController.class)
@Import({WebSecurityConfig.class})
public class MyControllerTest {
@Autowired
protected MockMvc mockMvc;
@Test
@WithJwt(principal = "admin", authorities = {"READ_USERS"})
public void readUsersAuthorityCanListUsers() throws Exception {
final List<User> users = Arrays.asList(admin, user);
when(userRepo.findAll(any(Pageable.class))).thenReturn(new PageImpl<>(users));
this.mockMvc
.perform(get("/")
.header("Authorization", "Bearer foo"))
.andExpect(status().isOk())
.andExpect(jsonPath("$.content", hasSize(users.size())));
}
}
Как постобработать конструктор запросов для автоматического применения .header("Authorization", "Bearer foo")
если тест украшен @WithJwt
?
0 ответов
Я закончил, чтобы завернуть MockMvc
и вызовы методов прокси, добавив Authorization
заголовок.
Это было бы перебором для одного заголовка, но это MockMvcHelper
также устанавливает тип контента и принимает заголовки, предоставляет ярлыки для выполнения простых вызовов API (получение, публикация, установка патча, удаление с заголовками по умолчанию и сериализация) и т. д.
Вы можете взглянуть на эту оболочку в конце решения другого вопроса: /questions/24282617/kak-zastavit-webmvctest-rabotat-s-oauth/24282621#24282621