mirror of
				https://github.com/spring-projects/spring-security.git
				synced 2025-11-04 00:28:54 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			118 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			118 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
= Testing Authentication
 | 
						|
 | 
						|
After xref:reactive/test/web/setup.adoc[applying the Spring Security support to `WebTestClient`] we can use either annotations or `mutateWith` support.
 | 
						|
For example:
 | 
						|
 | 
						|
====
 | 
						|
.Java
 | 
						|
[source,java,role="primary"]
 | 
						|
----
 | 
						|
import static org.springframework.security.test.web.reactive.server.SecurityMockServerConfigurers.mockUser;
 | 
						|
 | 
						|
@Test
 | 
						|
public void messageWhenNotAuthenticated() throws Exception {
 | 
						|
	this.rest
 | 
						|
		.get()
 | 
						|
		.uri("/message")
 | 
						|
		.exchange()
 | 
						|
		.expectStatus().isUnauthorized();
 | 
						|
}
 | 
						|
 | 
						|
// --- WithMockUser ---
 | 
						|
 | 
						|
@Test
 | 
						|
@WithMockUser
 | 
						|
public void messageWhenWithMockUserThenForbidden() throws Exception {
 | 
						|
	this.rest
 | 
						|
		.get()
 | 
						|
		.uri("/message")
 | 
						|
		.exchange()
 | 
						|
		.expectStatus().isEqualTo(HttpStatus.FORBIDDEN);
 | 
						|
}
 | 
						|
 | 
						|
@Test
 | 
						|
@WithMockUser(roles = "ADMIN")
 | 
						|
public void messageWhenWithMockAdminThenOk() throws Exception {
 | 
						|
	this.rest
 | 
						|
		.get()
 | 
						|
		.uri("/message")
 | 
						|
		.exchange()
 | 
						|
		.expectStatus().isOk()
 | 
						|
		.expectBody(String.class).isEqualTo("Hello World!");
 | 
						|
}
 | 
						|
 | 
						|
// --- mutateWith mockUser ---
 | 
						|
 | 
						|
@Test
 | 
						|
public void messageWhenMutateWithMockUserThenForbidden() throws Exception {
 | 
						|
	this.rest
 | 
						|
		.mutateWith(mockUser())
 | 
						|
		.get()
 | 
						|
		.uri("/message")
 | 
						|
		.exchange()
 | 
						|
		.expectStatus().isEqualTo(HttpStatus.FORBIDDEN);
 | 
						|
}
 | 
						|
 | 
						|
@Test
 | 
						|
public void messageWhenMutateWithMockAdminThenOk() throws Exception {
 | 
						|
	this.rest
 | 
						|
		.mutateWith(mockUser().roles("ADMIN"))
 | 
						|
		.get()
 | 
						|
		.uri("/message")
 | 
						|
		.exchange()
 | 
						|
		.expectStatus().isOk()
 | 
						|
		.expectBody(String.class).isEqualTo("Hello World!");
 | 
						|
}
 | 
						|
----
 | 
						|
 | 
						|
.Kotlin
 | 
						|
[source,kotlin,role="secondary"]
 | 
						|
----
 | 
						|
import org.springframework.test.web.reactive.server.expectBody
 | 
						|
import org.springframework.security.test.web.reactive.server.SecurityMockServerConfigurers.mockUser
 | 
						|
 | 
						|
//...
 | 
						|
 | 
						|
@Test
 | 
						|
@WithMockUser
 | 
						|
fun messageWhenWithMockUserThenForbidden() {
 | 
						|
    this.rest.get().uri("/message")
 | 
						|
        .exchange()
 | 
						|
        .expectStatus().isEqualTo(HttpStatus.FORBIDDEN)
 | 
						|
}
 | 
						|
 | 
						|
@Test
 | 
						|
@WithMockUser(roles = ["ADMIN"])
 | 
						|
fun messageWhenWithMockAdminThenOk() {
 | 
						|
    this.rest.get().uri("/message")
 | 
						|
        .exchange()
 | 
						|
        .expectStatus().isOk
 | 
						|
        .expectBody<String>().isEqualTo("Hello World!")
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
// --- mutateWith mockUser ---
 | 
						|
 | 
						|
@Test
 | 
						|
fun messageWhenMutateWithMockUserThenForbidden() {
 | 
						|
    this.rest
 | 
						|
        .mutateWith(mockUser())
 | 
						|
        .get().uri("/message")
 | 
						|
        .exchange()
 | 
						|
        .expectStatus().isEqualTo(HttpStatus.FORBIDDEN)
 | 
						|
}
 | 
						|
 | 
						|
@Test
 | 
						|
fun messageWhenMutateWithMockAdminThenOk() {
 | 
						|
    this.rest
 | 
						|
        .mutateWith(mockUser().roles("ADMIN"))
 | 
						|
        .get().uri("/message")
 | 
						|
        .exchange()
 | 
						|
        .expectStatus().isOk
 | 
						|
        .expectBody<String>().isEqualTo("Hello World!")
 | 
						|
}
 | 
						|
----
 | 
						|
====
 | 
						|
 | 
						|
In addition to `mockUser()`, Spring Security ships with several other convenience mutators for things like xref:reactive/test/web/csrf.adoc[CSRF] and xref:reactive/test/web/oauth2.adoc[OAuth 2.0].
 |