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.
69 lines
1.7 KiB
69 lines
1.7 KiB
[[test-mockmvc-setup]] |
|
= Setting Up MockMvc and Spring Security |
|
|
|
[NOTE] |
|
==== |
|
Spring Security's testing support requires spring-test-4.1.3.RELEASE or greater. |
|
==== |
|
|
|
To use Spring Security with Spring MVC Test, add the Spring Security `FilterChainProxy` as a `Filter`. |
|
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]. |
|
To do so, use Spring Security's `SecurityMockMvcConfigurers.springSecurity()`: |
|
|
|
[tabs] |
|
====== |
|
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 lateinit var mvc: MockMvc |
|
|
|
@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 |
|
|
|
|