Как протестировать с помощью MockMVC и CSRF в Spring Boot 3 ⇐ JAVA
Как протестировать с помощью MockMVC и CSRF в Spring Boot 3
У меня есть тест SpringBoot MockMVC, в котором я хочу протестировать конечную точку публикации следующим образом:
@AutoConfigureTestEntityManager @SpringBootTest @AutoConfigureMockMvc класс MyControllerTest { @Autowired частный MockMvc @Тест void postShouldReturnOkForValidInput() выдает исключение { ockMvc.perform(сообщение(Endpoints.LOG) .content(/*Некоторые действительные данные*/) .contentType(MediaType.APPLICATION_JSON) ).andExpect(status().isOk()); } } Однако этот тест не пройден из-за защиты CSRF. Теперь я знаю, что могу отключить его, и тогда тесты заработают, но я бы предпочел настроить свои тесты так, чтобы они передавали правильный токен CSRF.
Я нашел много источников, в которых говорится, что это должно работать следующим образом:
import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.*; @AutoConfigureTestEntityManager @SpringBootTest @AutoConfigureMockMvc класс MyControllerTest { @Autowired частный MockMvc @Тест void postShouldReturnOkForValidInput() выдает исключение { ockMvc.perform(сообщение(Endpoints.LOG) .with(csrf()) .content(/*Некоторые действительные данные*/) .contentType(MediaType.APPLICATION_JSON) ).andExpect(status().isOk()); } } Проблема в том, что этого не происходит, потому что импорт не удается разрешить. В частности, он говорит, что не может выполнить «тест» (после import static org.springframework.security.). Я проверил, и у меня есть реализация зависимости 'org.springframework.boot:spring-boot-starter-security'. Фактически, импортируйте статический org.springframework.security, но среди содержащихся в нем пакетов просто нет test.
Теперь я знаю, что в Spring 3 многое изменилось. В частности, я использую версию 3.1.4. Это причина? Функция csrf() переместилась куда-то еще? Если да, то как правильно передать токен CSRF в Spring Boot 3? А если нет, то что я здесь делаю не так?
У меня есть тест SpringBoot MockMVC, в котором я хочу протестировать конечную точку публикации следующим образом:
@AutoConfigureTestEntityManager @SpringBootTest @AutoConfigureMockMvc класс MyControllerTest { @Autowired частный MockMvc @Тест void postShouldReturnOkForValidInput() выдает исключение { ockMvc.perform(сообщение(Endpoints.LOG) .content(/*Некоторые действительные данные*/) .contentType(MediaType.APPLICATION_JSON) ).andExpect(status().isOk()); } } Однако этот тест не пройден из-за защиты CSRF. Теперь я знаю, что могу отключить его, и тогда тесты заработают, но я бы предпочел настроить свои тесты так, чтобы они передавали правильный токен CSRF.
Я нашел много источников, в которых говорится, что это должно работать следующим образом:
import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.*; @AutoConfigureTestEntityManager @SpringBootTest @AutoConfigureMockMvc класс MyControllerTest { @Autowired частный MockMvc @Тест void postShouldReturnOkForValidInput() выдает исключение { ockMvc.perform(сообщение(Endpoints.LOG) .with(csrf()) .content(/*Некоторые действительные данные*/) .contentType(MediaType.APPLICATION_JSON) ).andExpect(status().isOk()); } } Проблема в том, что этого не происходит, потому что импорт не удается разрешить. В частности, он говорит, что не может выполнить «тест» (после import static org.springframework.security.). Я проверил, и у меня есть реализация зависимости 'org.springframework.boot:spring-boot-starter-security'. Фактически, импортируйте статический org.springframework.security, но среди содержащихся в нем пакетов просто нет test.
Теперь я знаю, что в Spring 3 многое изменилось. В частности, я использую версию 3.1.4. Это причина? Функция csrf() переместилась куда-то еще? Если да, то как правильно передать токен CSRF в Spring Boot 3? А если нет, то что я здесь делаю не так?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
MockMvc больше не обрабатывает символы UTF-8 с помощью Spring Boot 2.2.0.RELEASE
Anonymous » » в форуме JAVA - 0 Ответы
- 27 Просмотры
-
Последнее сообщение Anonymous
-