setup.adoc 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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. [tabs]
  9. ======
  10. Java::
  11. +
  12. [source,java,role="primary"]
  13. ----
  14. import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.*;
  15. @ExtendWith(SpringExtension.class)
  16. @ContextConfiguration(classes = SecurityConfig.class)
  17. @WebAppConfiguration
  18. public class CsrfShowcaseTests {
  19. @Autowired
  20. private WebApplicationContext context;
  21. private MockMvc mvc;
  22. @BeforeEach
  23. public void setup() {
  24. mvc = MockMvcBuilders
  25. .webAppContextSetup(context)
  26. .apply(springSecurity()) // <1>
  27. .build();
  28. }
  29. ...
  30. ----
  31. Kotlin::
  32. +
  33. [source,kotlin,role="secondary"]
  34. ----
  35. @ExtendWith(SpringExtension.class)
  36. @ContextConfiguration(classes = [SecurityConfig::class])
  37. @WebAppConfiguration
  38. class CsrfShowcaseTests {
  39. @Autowired
  40. private lateinit var context: WebApplicationContext
  41. private var mvc: MockMvc? = null
  42. @BeforeEach
  43. fun setup() {
  44. mvc = MockMvcBuilders
  45. .webAppContextSetup(context)
  46. .apply<DefaultMockMvcBuilder>(springSecurity()) // <1>
  47. .build()
  48. }
  49. // ...
  50. ----
  51. ======
  52. <1> `SecurityMockMvcConfigurers.springSecurity()` will perform all of the initial setup we need to integrate Spring Security with Spring MVC Test