method.adoc 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. [[test-erms]]
  2. = Testing Method Security
  3. 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].
  4. Here is a minimal sample of what we can do:
  5. ====
  6. .Java
  7. [source,java,role="primary"]
  8. ----
  9. @RunWith(SpringRunner.class)
  10. @ContextConfiguration(classes = HelloWebfluxMethodApplication.class)
  11. public class HelloWorldMessageServiceTests {
  12. @Autowired
  13. HelloWorldMessageService messages;
  14. @Test
  15. public void messagesWhenNotAuthenticatedThenDenied() {
  16. StepVerifier.create(this.messages.findMessage())
  17. .expectError(AccessDeniedException.class)
  18. .verify();
  19. }
  20. @Test
  21. @WithMockUser
  22. public void messagesWhenUserThenDenied() {
  23. StepVerifier.create(this.messages.findMessage())
  24. .expectError(AccessDeniedException.class)
  25. .verify();
  26. }
  27. @Test
  28. @WithMockUser(roles = "ADMIN")
  29. public void messagesWhenAdminThenOk() {
  30. StepVerifier.create(this.messages.findMessage())
  31. .expectNext("Hello World!")
  32. .verifyComplete();
  33. }
  34. }
  35. ----
  36. .Kotlin
  37. [source,kotlin,role="secondary"]
  38. ----
  39. @RunWith(SpringRunner::class)
  40. @ContextConfiguration(classes = [HelloWebfluxMethodApplication::class])
  41. class HelloWorldMessageServiceTests {
  42. @Autowired
  43. lateinit var messages: HelloWorldMessageService
  44. @Test
  45. fun messagesWhenNotAuthenticatedThenDenied() {
  46. StepVerifier.create(messages.findMessage())
  47. .expectError(AccessDeniedException::class.java)
  48. .verify()
  49. }
  50. @Test
  51. @WithMockUser
  52. fun messagesWhenUserThenDenied() {
  53. StepVerifier.create(messages.findMessage())
  54. .expectError(AccessDeniedException::class.java)
  55. .verify()
  56. }
  57. @Test
  58. @WithMockUser(roles = ["ADMIN"])
  59. fun messagesWhenAdminThenOk() {
  60. StepVerifier.create(messages.findMessage())
  61. .expectNext("Hello World!")
  62. .verifyComplete()
  63. }
  64. }
  65. ----
  66. ====