123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- [[test-mockmvc-setup]]
- = Setting Up MockMvc and Spring Security
- [NOTE]
- ====
- Spring Security's testing support requires spring-test-4.1.3.RELEASE or greater.
- ====
- To use Spring Security with Spring MVC Test, add the Spring Security `FilterChainProxy` as a `Filter`.
- You also need to add Spring Security's `TestSecurityContextHolderPostProcessor` to support xref:servlet/test/mockmvc/setup.adoc#test-mockmvc-withmockuser[Running as a User in Spring MVC Test with Annotations].
- To do so, use Spring Security's `SecurityMockMvcConfigurers.springSecurity()`:
- [tabs]
- ======
- Java::
- +
- [source,java,role="primary"]
- ----
- import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.*;
- @ExtendWith(SpringExtension.class)
- @ContextConfiguration(classes = SecurityConfig.class)
- @WebAppConfiguration
- public class CsrfShowcaseTests {
- @Autowired
- private WebApplicationContext context;
- private MockMvc mvc;
- @BeforeEach
- public void setup() {
- mvc = MockMvcBuilders
- .webAppContextSetup(context)
- .apply(springSecurity()) // <1>
- .build();
- }
- // ...
- }
- ----
- Kotlin::
- +
- [source,kotlin,role="secondary"]
- ----
- @ExtendWith(SpringExtension::class)
- @ContextConfiguration(classes = [SecurityConfig::class])
- @WebAppConfiguration
- class CsrfShowcaseTests {
- @Autowired
- private lateinit var context: WebApplicationContext
- private lateinit var mvc: MockMvc
- @BeforeEach
- fun setup() {
- mvc = MockMvcBuilders
- .webAppContextSetup(context)
- .apply<DefaultMockMvcBuilder>(springSecurity()) // <1>
- .build()
- }
- // ...
- }
- ----
- ======
- <1> `SecurityMockMvcConfigurers.springSecurity()` will perform all of the initial setup we need to integrate Spring Security with Spring MVC Test
|