Как получить заголовок для запроса 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

Другие вопросы по тегам