瀏覽代碼

Add WithMockUser & mutateWith to WebFlux Samples

Rob Winch 8 年之前
父節點
當前提交
404a8e793e

+ 60 - 12
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<Map<String, Object>> robsCredentials() {
 		return basicAuthenticationCredentials("rob","rob");
 	}
 
-
 	private Consumer<Map<String, Object>> adminCredentials() {
 		return basicAuthenticationCredentials("admin","admin");
 	}
-
-	private String base64Encode(String value) {
-		return Base64.getEncoder().encodeToString(value.getBytes(Charset.defaultCharset()));
-	}
 }

+ 8 - 2
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<Map<String, Object>> userCredentials() {

+ 9 - 3
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<Map<String, Object>> userCredentials() {