You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
1.7 KiB
63 lines
1.7 KiB
[[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. |
|
|
|
==== |
|
.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
|
|
|