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.
75 lines
2.0 KiB
75 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: |
|
|
|
==== |
|
.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() |
|
} |
|
} |
|
---- |
|
====
|
|
|