authentication.adoc 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. = Testing Authentication
  2. After xref:reactive/test/web/setup.adoc[applying the Spring Security support to `WebTestClient`] we can use either annotations or `mutateWith` support.
  3. For example:
  4. ====
  5. .Java
  6. [source,java,role="primary"]
  7. ----
  8. @Test
  9. public void messageWhenNotAuthenticated() throws Exception {
  10. this.rest
  11. .get()
  12. .uri("/message")
  13. .exchange()
  14. .expectStatus().isUnauthorized();
  15. }
  16. // --- WithMockUser ---
  17. @Test
  18. @WithMockUser
  19. public void messageWhenWithMockUserThenForbidden() throws Exception {
  20. this.rest
  21. .get()
  22. .uri("/message")
  23. .exchange()
  24. .expectStatus().isEqualTo(HttpStatus.FORBIDDEN);
  25. }
  26. @Test
  27. @WithMockUser(roles = "ADMIN")
  28. public void messageWhenWithMockAdminThenOk() throws Exception {
  29. this.rest
  30. .get()
  31. .uri("/message")
  32. .exchange()
  33. .expectStatus().isOk()
  34. .expectBody(String.class).isEqualTo("Hello World!");
  35. }
  36. // --- mutateWith mockUser ---
  37. @Test
  38. public void messageWhenMutateWithMockUserThenForbidden() throws Exception {
  39. this.rest
  40. .mutateWith(mockUser())
  41. .get()
  42. .uri("/message")
  43. .exchange()
  44. .expectStatus().isEqualTo(HttpStatus.FORBIDDEN);
  45. }
  46. @Test
  47. public void messageWhenMutateWithMockAdminThenOk() throws Exception {
  48. this.rest
  49. .mutateWith(mockUser().roles("ADMIN"))
  50. .get()
  51. .uri("/message")
  52. .exchange()
  53. .expectStatus().isOk()
  54. .expectBody(String.class).isEqualTo("Hello World!");
  55. }
  56. ----
  57. .Kotlin
  58. [source,kotlin,role="secondary"]
  59. ----
  60. import org.springframework.test.web.reactive.server.expectBody
  61. //...
  62. @Test
  63. @WithMockUser
  64. fun messageWhenWithMockUserThenForbidden() {
  65. this.rest.get().uri("/message")
  66. .exchange()
  67. .expectStatus().isEqualTo(HttpStatus.FORBIDDEN)
  68. }
  69. @Test
  70. @WithMockUser(roles = ["ADMIN"])
  71. fun messageWhenWithMockAdminThenOk() {
  72. this.rest.get().uri("/message")
  73. .exchange()
  74. .expectStatus().isOk
  75. .expectBody<String>().isEqualTo("Hello World!")
  76. }
  77. // --- mutateWith mockUser ---
  78. @Test
  79. fun messageWhenMutateWithMockUserThenForbidden() {
  80. this.rest
  81. .mutateWith(mockUser())
  82. .get().uri("/message")
  83. .exchange()
  84. .expectStatus().isEqualTo(HttpStatus.FORBIDDEN)
  85. }
  86. @Test
  87. fun messageWhenMutateWithMockAdminThenOk() {
  88. this.rest
  89. .mutateWith(mockUser().roles("ADMIN"))
  90. .get().uri("/message")
  91. .exchange()
  92. .expectStatus().isOk
  93. .expectBody<String>().isEqualTo("Hello World!")
  94. }
  95. ----
  96. ====
  97. In addition to `mockUser()`, Spring Security ships with several other convenience mutators for things like xref:reactive/test/web/csrf.adoc[CSRF] and xref:reactive/test/web/oauth2.adoc[OAuth 2.0].