You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
2.0 KiB
78 lines
2.0 KiB
[[test-erms]] |
|
= Testing Method Security |
|
|
|
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: |
|
|
|
[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() |
|
} |
|
} |
|
---- |
|
======
|
|
|