mirror of
				https://github.com/spring-projects/spring-security.git
				synced 2025-10-31 06:38:42 +00:00 
			
		
		
		
	
		
			
	
	
		
			115 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			115 lines
		
	
	
		
			2.5 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"] | ||
|  | ---- | ||
|  | @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 | ||
|  | 
 | ||
|  | //... | ||
|  | 
 | ||
|  | @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]. |