2
0

setup.adoc 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. [[test-mockmvc-setup]]
  2. = Setting Up MockMvc and Spring Security
  3. [NOTE]
  4. ====
  5. Spring Security's testing support requires spring-test-4.1.3.RELEASE or greater.
  6. ====
  7. To use Spring Security with Spring MVC Test, add the Spring Security `FilterChainProxy` as a `Filter`.
  8. You also need to add Spring Security's `TestSecurityContextHolderPostProcessor` to support xref:servlet/test/mockmvc/authentication.adoc#test-mockmvc-withmockuser[Running as a User in Spring MVC Test with Annotations].
  9. To do so, use Spring Security's `SecurityMockMvcConfigurers.springSecurity()`:
  10. [tabs]
  11. ======
  12. Java::
  13. +
  14. [source,java,role="primary"]
  15. ----
  16. import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.*;
  17. @ExtendWith(SpringExtension.class)
  18. @ContextConfiguration(classes = SecurityConfig.class)
  19. @WebAppConfiguration
  20. public class CsrfShowcaseTests {
  21. @Autowired
  22. private WebApplicationContext context;
  23. private MockMvc mvc;
  24. @BeforeEach
  25. public void setup() {
  26. mvc = MockMvcBuilders
  27. .webAppContextSetup(context)
  28. .apply(springSecurity()) // <1>
  29. .build();
  30. }
  31. // ...
  32. }
  33. ----
  34. Kotlin::
  35. +
  36. [source,kotlin,role="secondary"]
  37. ----
  38. @ExtendWith(SpringExtension::class)
  39. @ContextConfiguration(classes = [SecurityConfig::class])
  40. @WebAppConfiguration
  41. class CsrfShowcaseTests {
  42. @Autowired
  43. private lateinit var context: WebApplicationContext
  44. private lateinit var mvc: MockMvc
  45. @BeforeEach
  46. fun setup() {
  47. mvc = MockMvcBuilders
  48. .webAppContextSetup(context)
  49. .apply<DefaultMockMvcBuilder>(springSecurity()) // <1>
  50. .build()
  51. }
  52. // ...
  53. }
  54. ----
  55. ======
  56. <1> `SecurityMockMvcConfigurers.springSecurity()` will perform all of the initial setup we need to integrate Spring Security with Spring MVC Test