From b61eaef266aa0972ffa0386e55560d94ae07051b Mon Sep 17 00:00:00 2001 From: Spencer Gibb Date: Mon, 2 Apr 2018 12:51:46 -0400 Subject: [PATCH] adds test with variables in the prefix --- .../predicate/PathRoutePredicateFactoryTests.java | 12 ++++++++++++ .../gateway/test/HttpBinCompatibleController.java | 5 +++++ .../src/test/resources/application.yml | 9 +++++++++ 3 files changed, 26 insertions(+) diff --git a/spring-cloud-gateway-core/src/test/java/org/springframework/cloud/gateway/handler/predicate/PathRoutePredicateFactoryTests.java b/spring-cloud-gateway-core/src/test/java/org/springframework/cloud/gateway/handler/predicate/PathRoutePredicateFactoryTests.java index b3709e32..a09dfd07 100644 --- a/spring-cloud-gateway-core/src/test/java/org/springframework/cloud/gateway/handler/predicate/PathRoutePredicateFactoryTests.java +++ b/spring-cloud-gateway-core/src/test/java/org/springframework/cloud/gateway/handler/predicate/PathRoutePredicateFactoryTests.java @@ -25,6 +25,7 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.gateway.handler.RoutePredicateHandlerMapping; import org.springframework.cloud.gateway.test.BaseWebClientTests; import org.springframework.context.annotation.Import; +import org.springframework.http.HttpHeaders; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.junit4.SpringRunner; @@ -37,6 +38,17 @@ public class PathRoutePredicateFactoryTests extends BaseWebClientTests { @Test public void pathRouteWorks() { + testClient.get().uri("/abc/123/function") + .header(HttpHeaders.HOST, "www.path.org") + .exchange() + .expectStatus().isOk() + .expectHeader().valueEquals(HANDLER_MAPPER_HEADER, RoutePredicateHandlerMapping.class.getSimpleName()) + .expectHeader().valueEquals("transfer-encoding", "chunked") + .expectHeader().valueEquals(ROUTE_ID_HEADER, "path_test"); + } + + @Test + public void defaultPathRouteWorks() { testClient.get().uri("/get") .exchange() .expectStatus().isOk() diff --git a/spring-cloud-gateway-core/src/test/java/org/springframework/cloud/gateway/test/HttpBinCompatibleController.java b/spring-cloud-gateway-core/src/test/java/org/springframework/cloud/gateway/test/HttpBinCompatibleController.java index 80db04d9..14c28873 100644 --- a/spring-cloud-gateway-core/src/test/java/org/springframework/cloud/gateway/test/HttpBinCompatibleController.java +++ b/spring-cloud-gateway-core/src/test/java/org/springframework/cloud/gateway/test/HttpBinCompatibleController.java @@ -62,6 +62,11 @@ public class HttpBinCompatibleController { return get(exchange).delayElement(Duration.ofSeconds(delay)); } + @RequestMapping(path = "/anything/{anything}", produces = MediaType.APPLICATION_JSON_VALUE) + public Mono> anything(ServerWebExchange exchange, @PathVariable String anything) { + return get(exchange); + } + @RequestMapping(path = "/get", produces = MediaType.APPLICATION_JSON_VALUE) public Mono> get(ServerWebExchange exchange) { return getHeaders(exchange).map(map -> { diff --git a/spring-cloud-gateway-core/src/test/resources/application.yml b/spring-cloud-gateway-core/src/test/resources/application.yml index c003a8b4..e07e5ca8 100644 --- a/spring-cloud-gateway-core/src/test/resources/application.yml +++ b/spring-cloud-gateway-core/src/test/resources/application.yml @@ -117,6 +117,15 @@ spring: - Host=**.notbetween.org - Between=1000-03-13T10:39:37.518-04:00[America/New_York],1002-03-13T10:39:37.518-04:00[America/New_York] + # ===================================== + - id: path_test + uri: ${test.uri} + predicates: + - Path=/{org}/{scope}/function + - Host=**.path.org + filters: + - SetPath=/anything/{org}{scope} + # ===================================== - id: redirect_to_test uri: ${test.uri}