method.adoc 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  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. [tabs]
  6. ======
  7. Java::
  8. +
  9. [source,java,role="primary"]
  10. ----
  11. @ExtendWith(SpringExtension.class)
  12. @ContextConfiguration(classes = HelloWebfluxMethodApplication.class)
  13. public class HelloWorldMessageServiceTests {
  14. @Autowired
  15. HelloWorldMessageService messages;
  16. @Test
  17. public void messagesWhenNotAuthenticatedThenDenied() {
  18. StepVerifier.create(this.messages.findMessage())
  19. .expectError(AccessDeniedException.class)
  20. .verify();
  21. }
  22. @Test
  23. @WithMockUser
  24. public void messagesWhenUserThenDenied() {
  25. StepVerifier.create(this.messages.findMessage())
  26. .expectError(AccessDeniedException.class)
  27. .verify();
  28. }
  29. @Test
  30. @WithMockUser(roles = "ADMIN")
  31. public void messagesWhenAdminThenOk() {
  32. StepVerifier.create(this.messages.findMessage())
  33. .expectNext("Hello World!")
  34. .verifyComplete();
  35. }
  36. }
  37. ----
  38. Kotlin::
  39. +
  40. [source,kotlin,role="secondary"]
  41. ----
  42. @ExtendWith(SpringExtension.class)
  43. @ContextConfiguration(classes = [HelloWebfluxMethodApplication::class])
  44. class HelloWorldMessageServiceTests {
  45. @Autowired
  46. lateinit var messages: HelloWorldMessageService
  47. @Test
  48. fun messagesWhenNotAuthenticatedThenDenied() {
  49. StepVerifier.create(messages.findMessage())
  50. .expectError(AccessDeniedException::class.java)
  51. .verify()
  52. }
  53. @Test
  54. @WithMockUser
  55. fun messagesWhenUserThenDenied() {
  56. StepVerifier.create(messages.findMessage())
  57. .expectError(AccessDeniedException::class.java)
  58. .verify()
  59. }
  60. @Test
  61. @WithMockUser(roles = ["ADMIN"])
  62. fun messagesWhenAdminThenOk() {
  63. StepVerifier.create(messages.findMessage())
  64. .expectNext("Hello World!")
  65. .verifyComplete()
  66. }
  67. }
  68. ----
  69. ======