mirror of
				https://github.com/spring-projects/spring-security.git
				synced 2025-11-04 08:39:05 +00:00 
			
		
		
		
	
		
			
	
	
		
			76 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			76 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								[[test-erms]]
							 | 
						||
| 
								 | 
							
								= Testing Method Security
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								For example, we can test our example from xref:reactive/authorization/method.adoc#jc-erms[EnableReactiveMethodSecurity] using the same setup and annotations we did in xref:servlet/test/method.adoc#test-method[Testing Method Security].
							 | 
						||
| 
								 | 
							
								Here is a minimal sample of what we can do:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								====
							 | 
						||
| 
								 | 
							
								.Java
							 | 
						||
| 
								 | 
							
								[source,java,role="primary"]
							 | 
						||
| 
								 | 
							
								----
							 | 
						||
| 
								 | 
							
								@RunWith(SpringRunner.class)
							 | 
						||
| 
								 | 
							
								@ContextConfiguration(classes = HelloWebfluxMethodApplication.class)
							 | 
						||
| 
								 | 
							
								public class HelloWorldMessageServiceTests {
							 | 
						||
| 
								 | 
							
									@Autowired
							 | 
						||
| 
								 | 
							
									HelloWorldMessageService messages;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									@Test
							 | 
						||
| 
								 | 
							
									public void messagesWhenNotAuthenticatedThenDenied() {
							 | 
						||
| 
								 | 
							
										StepVerifier.create(this.messages.findMessage())
							 | 
						||
| 
								 | 
							
											.expectError(AccessDeniedException.class)
							 | 
						||
| 
								 | 
							
											.verify();
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									@Test
							 | 
						||
| 
								 | 
							
									@WithMockUser
							 | 
						||
| 
								 | 
							
									public void messagesWhenUserThenDenied() {
							 | 
						||
| 
								 | 
							
										StepVerifier.create(this.messages.findMessage())
							 | 
						||
| 
								 | 
							
											.expectError(AccessDeniedException.class)
							 | 
						||
| 
								 | 
							
											.verify();
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									@Test
							 | 
						||
| 
								 | 
							
									@WithMockUser(roles = "ADMIN")
							 | 
						||
| 
								 | 
							
									public void messagesWhenAdminThenOk() {
							 | 
						||
| 
								 | 
							
										StepVerifier.create(this.messages.findMessage())
							 | 
						||
| 
								 | 
							
											.expectNext("Hello World!")
							 | 
						||
| 
								 | 
							
											.verifyComplete();
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								----
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								.Kotlin
							 | 
						||
| 
								 | 
							
								[source,kotlin,role="secondary"]
							 | 
						||
| 
								 | 
							
								----
							 | 
						||
| 
								 | 
							
								@RunWith(SpringRunner::class)
							 | 
						||
| 
								 | 
							
								@ContextConfiguration(classes = [HelloWebfluxMethodApplication::class])
							 | 
						||
| 
								 | 
							
								class HelloWorldMessageServiceTests {
							 | 
						||
| 
								 | 
							
								    @Autowired
							 | 
						||
| 
								 | 
							
								    lateinit var messages: HelloWorldMessageService
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    @Test
							 | 
						||
| 
								 | 
							
								    fun messagesWhenNotAuthenticatedThenDenied() {
							 | 
						||
| 
								 | 
							
								        StepVerifier.create(messages.findMessage())
							 | 
						||
| 
								 | 
							
								            .expectError(AccessDeniedException::class.java)
							 | 
						||
| 
								 | 
							
								            .verify()
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    @Test
							 | 
						||
| 
								 | 
							
								    @WithMockUser
							 | 
						||
| 
								 | 
							
								    fun messagesWhenUserThenDenied() {
							 | 
						||
| 
								 | 
							
								        StepVerifier.create(messages.findMessage())
							 | 
						||
| 
								 | 
							
								            .expectError(AccessDeniedException::class.java)
							 | 
						||
| 
								 | 
							
								            .verify()
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    @Test
							 | 
						||
| 
								 | 
							
								    @WithMockUser(roles = ["ADMIN"])
							 | 
						||
| 
								 | 
							
								    fun messagesWhenAdminThenOk() {
							 | 
						||
| 
								 | 
							
								        StepVerifier.create(messages.findMessage())
							 | 
						||
| 
								 | 
							
								            .expectNext("Hello World!")
							 | 
						||
| 
								 | 
							
								            .verifyComplete()
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								----
							 | 
						||
| 
								 | 
							
								====
							 |