mirror of
				https://github.com/spring-projects/spring-security.git
				synced 2025-11-04 08:39:05 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			79 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			79 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:
 | 
						|
 | 
						|
[tabs]
 | 
						|
======
 | 
						|
Java::
 | 
						|
+
 | 
						|
[source,java,role="primary"]
 | 
						|
----
 | 
						|
@ExtendWith(SpringExtension.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"]
 | 
						|
----
 | 
						|
@ExtendWith(SpringExtension.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()
 | 
						|
    }
 | 
						|
}
 | 
						|
----
 | 
						|
======
 |