2021-10-29 10:09:04 -06:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								[[test-erms]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								= Testing Method Security
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-12-13 16:57:36 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								For example, we can test our example from xref:reactive/authorization/method.adoc#jc-erms[EnableReactiveMethodSecurity] by using the same setup and annotations that we used in xref:servlet/test/method.adoc#test-method[Testing Method Security].
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								The following minimal sample shows what we can do:
							 
						 
					
						
							
								
									
										
										
										
											2021-10-29 10:09:04 -06:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-06-18 21:30:41 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								[tabs]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								======
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Java::
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								+
							 
						 
					
						
							
								
									
										
										
										
											2021-10-29 10:09:04 -06:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								[source,java,role="primary"]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								----
							 
						 
					
						
							
								
									
										
										
										
											2022-03-22 20:30:10 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								@ExtendWith(SpringExtension.class)
							 
						 
					
						
							
								
									
										
										
										
											2021-10-29 10:09:04 -06:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								@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();
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								----
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-06-18 21:30:41 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Kotlin::
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								+
							 
						 
					
						
							
								
									
										
										
										
											2021-10-29 10:09:04 -06:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								[source,kotlin,role="secondary"]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								----
							 
						 
					
						
							
								
									
										
										
										
											2022-03-22 20:30:10 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								@ExtendWith(SpringExtension.class)
							 
						 
					
						
							
								
									
										
										
										
											2021-10-29 10:09:04 -06:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								@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()
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								----
							 
						 
					
						
							
								
									
										
										
										
											2023-06-18 21:30:41 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								======