diff --git a/samples/javaconfig/hellowebflux-method/src/test/java/sample/HelloWebfluxMethodApplicationTests.java b/samples/javaconfig/hellowebflux-method/src/test/java/sample/HelloWebfluxMethodApplicationTests.java index cee3167684..ad8a10ebae 100644 --- a/samples/javaconfig/hellowebflux-method/src/test/java/sample/HelloWebfluxMethodApplicationTests.java +++ b/samples/javaconfig/hellowebflux-method/src/test/java/sample/HelloWebfluxMethodApplicationTests.java @@ -17,24 +17,26 @@ */ package sample; +import java.util.Map; +import java.util.function.Consumer; + import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.http.HttpStatus; +import org.springframework.security.test.context.support.WithMockUser; import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.web.reactive.server.WebTestClient; -import java.nio.charset.Charset; -import java.util.Base64; -import java.util.Map; -import java.util.function.Consumer; - -import static org.springframework.web.reactive.function.client.ExchangeFilterFunctions.Credentials.basicAuthenticationCredentials; +import static org.springframework.security.test.web.reactive.server.SecurityMockServerConfigurers.mockUser; +import static org.springframework.security.test.web.reactive.server.SecurityMockServerConfigurers.springSecurity; import static org.springframework.web.reactive.function.client.ExchangeFilterFunctions.basicAuthentication; +import static org.springframework.web.reactive.function.client.ExchangeFilterFunctions.Credentials.basicAuthenticationCredentials; /** * @author Rob Winch @@ -52,7 +54,8 @@ public class HelloWebfluxMethodApplicationTests { @Before public void setup() { this.rest = WebTestClient - .bindToApplicationContext(context) + .bindToApplicationContext(this.context) + .apply(springSecurity()) .configureClient() .filter(basicAuthentication()) .build(); @@ -67,6 +70,8 @@ public class HelloWebfluxMethodApplicationTests { .expectStatus().isUnauthorized(); } + // --- Basic Authentication --- + @Test public void messageWhenUserThenForbidden() throws Exception { this.rest @@ -89,16 +94,59 @@ public class HelloWebfluxMethodApplicationTests { .expectBody(String.class).isEqualTo("Hello World!"); } + // --- WithMockUser --- + + @Test + @WithMockUser + public void messageWhenWithMockUserThenForbidden() throws Exception { + this.rest + .get() + .uri("/message") + .exchange() + .expectStatus().isEqualTo(HttpStatus.FORBIDDEN) + .expectBody().isEmpty(); + } + + @Test + @WithMockUser(roles = "ADMIN") + public void messageWhenWithMockAdminThenOk() throws Exception { + this.rest + .get() + .uri("/message") + .exchange() + .expectStatus().isOk() + .expectBody(String.class).isEqualTo("Hello World!"); + } + + // --- mutateWith mockUser --- + + @Test + public void messageWhenMutateWithMockUserThenForbidden() throws Exception { + this.rest + .mutateWith(mockUser()) + .get() + .uri("/message") + .exchange() + .expectStatus().isEqualTo(HttpStatus.FORBIDDEN) + .expectBody().isEmpty(); + } + + @Test + public void messageWhenMutateWithMockAdminThenOk() throws Exception { + this.rest + .mutateWith(mockUser().roles("ADMIN")) + .get() + .uri("/message") + .exchange() + .expectStatus().isOk() + .expectBody(String.class).isEqualTo("Hello World!"); + } + private Consumer> robsCredentials() { return basicAuthenticationCredentials("rob","rob"); } - private Consumer> adminCredentials() { return basicAuthenticationCredentials("admin","admin"); } - - private String base64Encode(String value) { - return Base64.getEncoder().encodeToString(value.getBytes(Charset.defaultCharset())); - } } diff --git a/samples/javaconfig/hellowebflux/src/test/java/sample/HelloWebfluxApplicationTests.java b/samples/javaconfig/hellowebflux/src/test/java/sample/HelloWebfluxApplicationTests.java index 632cc23e25..a280019e57 100644 --- a/samples/javaconfig/hellowebflux/src/test/java/sample/HelloWebfluxApplicationTests.java +++ b/samples/javaconfig/hellowebflux/src/test/java/sample/HelloWebfluxApplicationTests.java @@ -26,6 +26,7 @@ import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; +import org.springframework.security.test.context.support.WithMockUser; import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; @@ -91,7 +92,7 @@ public class HelloWebfluxApplicationTests { } @Test - public void mockSupportWhenValidMockUserThenOk() throws Exception { + public void mockSupportWhenMutateWithMockUserThenOk() throws Exception { this.rest .mutateWith(mockUser()) .get() @@ -99,12 +100,17 @@ public class HelloWebfluxApplicationTests { .exchange() .expectStatus().isOk() .expectBody().json("{\"message\":\"Hello user!\"}"); + } + @Test + @WithMockUser + public void mockSupportWhenWithMockUserThenOk() throws Exception { this.rest .get() .uri("/") .exchange() - .expectStatus().isUnauthorized(); + .expectStatus().isOk() + .expectBody().json("{\"message\":\"Hello user!\"}"); } private Consumer> userCredentials() { diff --git a/samples/javaconfig/hellowebfluxfn/src/test/java/sample/HelloWebfluxFnApplicationTests.java b/samples/javaconfig/hellowebfluxfn/src/test/java/sample/HelloWebfluxFnApplicationTests.java index 68ea1d26b9..ca88204d2b 100644 --- a/samples/javaconfig/hellowebfluxfn/src/test/java/sample/HelloWebfluxFnApplicationTests.java +++ b/samples/javaconfig/hellowebfluxfn/src/test/java/sample/HelloWebfluxFnApplicationTests.java @@ -25,6 +25,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.test.context.support.WithMockUser; import org.springframework.security.web.server.WebFilterChainFilter; import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.ContextConfiguration; @@ -34,8 +35,8 @@ import org.springframework.web.reactive.function.server.RouterFunction; import static org.springframework.security.test.web.reactive.server.SecurityMockServerConfigurers.mockUser; import static org.springframework.security.test.web.reactive.server.SecurityMockServerConfigurers.springSecurity; -import static org.springframework.web.reactive.function.client.ExchangeFilterFunctions.Credentials.basicAuthenticationCredentials; import static org.springframework.web.reactive.function.client.ExchangeFilterFunctions.basicAuthentication; +import static org.springframework.web.reactive.function.client.ExchangeFilterFunctions.Credentials.basicAuthenticationCredentials; /** * @author Rob Winch @@ -95,7 +96,7 @@ public class HelloWebfluxFnApplicationTests { } @Test - public void mockSupportWhenValidMockUserThenOk() throws Exception { + public void mockSupportWhenMutateWithMockUserThenOk() throws Exception { this.rest .mutateWith(mockUser()) .get() @@ -103,12 +104,17 @@ public class HelloWebfluxFnApplicationTests { .exchange() .expectStatus().isOk() .expectBody().json("{\"message\":\"Hello user!\"}"); + } + @Test + @WithMockUser + public void mockSupportWhenWithMockUserThenOk() throws Exception { this.rest .get() .uri("/") .exchange() - .expectStatus().isUnauthorized(); + .expectStatus().isOk() + .expectBody().json("{\"message\":\"Hello user!\"}"); } private Consumer> userCredentials() {