setup.adoc 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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/setup.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. ====
  11. .Java
  12. [source,java,role="primary"]
  13. ----
  14. import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.*;
  15. @RunWith(SpringJUnit4ClassRunner.class)
  16. @ContextConfiguration(classes = SecurityConfig.class)
  17. @WebAppConfiguration
  18. public class CsrfShowcaseTests {
  19. @Autowired
  20. private WebApplicationContext context;
  21. private MockMvc mvc;
  22. @Before
  23. public void setup() {
  24. mvc = MockMvcBuilders
  25. .webAppContextSetup(context)
  26. .apply(springSecurity()) // <1>
  27. .build();
  28. }
  29. // ...
  30. }
  31. ----
  32. .Kotlin
  33. [source,kotlin,role="secondary"]
  34. ----
  35. @RunWith(SpringJUnit4ClassRunner::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. @Before
  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
  53. ====