2
0

setup.adoc 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. [[test-mockmvc-setup]]
  2. = Setting Up MockMvc and Spring Security
  3. In order to use Spring Security with Spring MVC Test it is necessary to add the Spring Security `FilterChainProxy` as a `Filter`.
  4. 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].
  5. This can be done using Spring Security's `SecurityMockMvcConfigurers.springSecurity()`.
  6. For example:
  7. NOTE: Spring Security's testing support requires spring-test-4.1.3.RELEASE or greater.
  8. ====
  9. .Java
  10. [source,java,role="primary"]
  11. ----
  12. import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.*;
  13. @ExtendWith(SpringExtension.class)
  14. @ContextConfiguration(classes = SecurityConfig.class)
  15. @WebAppConfiguration
  16. public class CsrfShowcaseTests {
  17. @Autowired
  18. private WebApplicationContext context;
  19. private MockMvc mvc;
  20. @BeforeEach
  21. public void setup() {
  22. mvc = MockMvcBuilders
  23. .webAppContextSetup(context)
  24. .apply(springSecurity()) // <1>
  25. .build();
  26. }
  27. ...
  28. ----
  29. .Kotlin
  30. [source,kotlin,role="secondary"]
  31. ----
  32. @ExtendWith(SpringExtension.class)
  33. @ContextConfiguration(classes = [SecurityConfig::class])
  34. @WebAppConfiguration
  35. class CsrfShowcaseTests {
  36. @Autowired
  37. private lateinit var context: WebApplicationContext
  38. private var mvc: MockMvc? = null
  39. @BeforeEach
  40. fun setup() {
  41. mvc = MockMvcBuilders
  42. .webAppContextSetup(context)
  43. .apply<DefaultMockMvcBuilder>(springSecurity()) // <1>
  44. .build()
  45. }
  46. // ...
  47. ----
  48. ====
  49. <1> `SecurityMockMvcConfigurers.springSecurity()` will perform all of the initial setup we need to integrate Spring Security with Spring MVC Test