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
======