123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- [[test-mockmvc-setup]]
- = Setting Up MockMvc and Spring Security
- In order to use Spring Security with Spring MVC Test it is necessary to add the Spring Security `FilterChainProxy` as a `Filter`.
- It is also necessary 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].
- This can be done using Spring Security's `SecurityMockMvcConfigurers.springSecurity()`.
- For example:
- NOTE: Spring Security's testing support requires spring-test-4.1.3.RELEASE or greater.
- [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 var mvc: MockMvc? = null
- @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
|