From 02b74115974fad45ac5af030a8bdf299a2e53529 Mon Sep 17 00:00:00 2001 From: Spencer Gibb Date: Mon, 3 Feb 2020 17:46:33 -0500 Subject: [PATCH] Fixes test to check rawquery values. Since https://github.com/joel-costigliola/assertj-core/issues/1699 assertj uses the raw query instead of the encoded one. fixes gh-1551 --- .../cloud/gateway/support/ServerWebExchangeUtils.java | 5 ++++- .../cloud/gateway/filter/RouteToRequestUrlFilterTests.java | 6 ++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/support/ServerWebExchangeUtils.java b/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/support/ServerWebExchangeUtils.java index ca90c619..52f420ab 100644 --- a/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/support/ServerWebExchangeUtils.java +++ b/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/support/ServerWebExchangeUtils.java @@ -214,13 +214,16 @@ public final class ServerWebExchangeUtils { boolean encoded = (uri.getRawQuery() != null && uri.getRawQuery().contains("%")) || (uri.getRawPath() != null && uri.getRawPath().contains("%")); - // Verify if it is really fully encoded. Treat partial encoded as uncoded. + // Verify if it is really fully encoded. Treat partial encoded as unencoded. if (encoded) { try { UriComponentsBuilder.fromUri(uri).build(true); return true; } catch (IllegalArgumentException ignore) { + if (log.isTraceEnabled()) { + log.trace("Error in containsEncodedParts", ignore); + } } return false; diff --git a/spring-cloud-gateway-core/src/test/java/org/springframework/cloud/gateway/filter/RouteToRequestUrlFilterTests.java b/spring-cloud-gateway-core/src/test/java/org/springframework/cloud/gateway/filter/RouteToRequestUrlFilterTests.java index e9b09318..a63f0bdc 100644 --- a/spring-cloud-gateway-core/src/test/java/org/springframework/cloud/gateway/filter/RouteToRequestUrlFilterTests.java +++ b/spring-cloud-gateway-core/src/test/java/org/springframework/cloud/gateway/filter/RouteToRequestUrlFilterTests.java @@ -132,10 +132,12 @@ public class RouteToRequestUrlFilterTests { ServerWebExchange webExchange = testFilter(request, "http://myhost"); URI uri = webExchange.getRequiredAttribute(GATEWAY_REQUEST_URL_ATTR); assertThat(uri).hasScheme("http").hasHost("myhost") - .hasParameter("key[]", "test= key").hasParameter("start", "1533108081"); + // since https://github.com/joel-costigliola/assertj-core/issues/1699 + // assertj uses raw query + .hasParameter("key[]", "test=%20key").hasParameter("start", "1533108081"); // prove that it is double encoded since partial encoded uri is treated as - // uncoded. + // unencoded. assertThat(uri.getRawQuery()).isEqualTo("key[]=test=%2520key&start=1533108081"); }