From 4c52fbb8c38b54c99ee6fdeb6b200306d19762ef Mon Sep 17 00:00:00 2001 From: Auri Munoz Date: Mon, 8 Jan 2024 16:26:46 +0100 Subject: [PATCH] fix: use raw path and avoid double encoding, adapt tests accordingly --- .../rest/client/reactive/stork/StorkDevModeTest.java | 4 ++-- .../rest/client/reactive/stork/StorkIntegrationTest.java | 6 +++--- .../reactive/stork/StorkWithPathIntegrationTest.java | 6 +++--- .../reactive/client/impl/StorkClientRequestFilter.java | 8 +++++--- .../rest/reactive/stork/RestClientReactiveStorkTest.java | 1 - 5 files changed, 13 insertions(+), 12 deletions(-) diff --git a/extensions/resteasy-reactive/rest-client-reactive/deployment/src/test/java/io/quarkus/rest/client/reactive/stork/StorkDevModeTest.java b/extensions/resteasy-reactive/rest-client-reactive/deployment/src/test/java/io/quarkus/rest/client/reactive/stork/StorkDevModeTest.java index 04e82b6c3861b..5a12b520c497b 100644 --- a/extensions/resteasy-reactive/rest-client-reactive/deployment/src/test/java/io/quarkus/rest/client/reactive/stork/StorkDevModeTest.java +++ b/extensions/resteasy-reactive/rest-client-reactive/deployment/src/test/java/io/quarkus/rest/client/reactive/stork/StorkDevModeTest.java @@ -75,7 +75,7 @@ void shouldSayHelloNameWithSlash() { .then() .statusCode(200) // The response contains an encoded `/` - .body(equalTo("Hello, stork%2Fstork")); + .body(equalTo("Hello, stork/stork")); } @@ -86,6 +86,6 @@ void shouldSayHelloNameWithBlank() { .then() .statusCode(200) // The response contains an encoded blank espace - .body(equalTo("Hello, smallrye%20stork")); + .body(equalTo("Hello, smallrye stork")); } } diff --git a/extensions/resteasy-reactive/rest-client-reactive/deployment/src/test/java/io/quarkus/rest/client/reactive/stork/StorkIntegrationTest.java b/extensions/resteasy-reactive/rest-client-reactive/deployment/src/test/java/io/quarkus/rest/client/reactive/stork/StorkIntegrationTest.java index 2db9b818781cd..639ae39cd8fac 100644 --- a/extensions/resteasy-reactive/rest-client-reactive/deployment/src/test/java/io/quarkus/rest/client/reactive/stork/StorkIntegrationTest.java +++ b/extensions/resteasy-reactive/rest-client-reactive/deployment/src/test/java/io/quarkus/rest/client/reactive/stork/StorkIntegrationTest.java @@ -38,7 +38,7 @@ void shouldDetermineUrlViaStork() { greeting = RestClientBuilder.newBuilder().baseUri(URI.create("stork://hello-service/hello")) .build(HelloClient.class) .helloWithPathParam("black and white bird"); - assertThat(greeting).isEqualTo("Hello, black%20and%20white%20bird"); + assertThat(greeting).isEqualTo("Hello, black and white bird"); } @Test @@ -56,7 +56,7 @@ void shouldDetermineUrlViaStorkWhenUsingTarget() throws URISyntaxException { greeting = ClientBuilder.newClient().target("stork://hello-service/hello").path("big bird").request() .get(String.class); - assertThat(greeting).isEqualTo("Hello, big%20bird"); + assertThat(greeting).isEqualTo("Hello, big bird"); } @Test @@ -65,7 +65,7 @@ void shouldDetermineUrlViaStorkCDI() { assertThat(greeting).isEqualTo("hello, big bird"); greeting = client.helloWithPathParam("big bird"); - assertThat(greeting).isEqualTo("Hello, big%20bird"); + assertThat(greeting).isEqualTo("Hello, big bird"); } @Test diff --git a/extensions/resteasy-reactive/rest-client-reactive/deployment/src/test/java/io/quarkus/rest/client/reactive/stork/StorkWithPathIntegrationTest.java b/extensions/resteasy-reactive/rest-client-reactive/deployment/src/test/java/io/quarkus/rest/client/reactive/stork/StorkWithPathIntegrationTest.java index 221284eb5531a..26ac15b363f45 100644 --- a/extensions/resteasy-reactive/rest-client-reactive/deployment/src/test/java/io/quarkus/rest/client/reactive/stork/StorkWithPathIntegrationTest.java +++ b/extensions/resteasy-reactive/rest-client-reactive/deployment/src/test/java/io/quarkus/rest/client/reactive/stork/StorkWithPathIntegrationTest.java @@ -38,7 +38,7 @@ void shouldDetermineUrlViaStork() { greeting = RestClientBuilder.newBuilder().baseUri(URI.create("stork://hello-service")) .build(HelloClient.class) .helloWithPathParam("black and white bird"); - assertThat(greeting).isEqualTo("Hello, black%20and%20white%20bird"); + assertThat(greeting).isEqualTo("Hello, black and white bird"); } @Test @@ -55,7 +55,7 @@ void shouldDetermineUrlViaStorkWhenUsingTarget() throws URISyntaxException { greeting = ClientBuilder.newClient().target("stork://hello-service/").path("big bird").request() .get(String.class); - assertThat(greeting).isEqualTo("Hello, big%20bird"); + assertThat(greeting).isEqualTo("Hello, big bird"); } @Test @@ -64,7 +64,7 @@ void shouldDetermineUrlViaStorkCDI() { assertThat(greeting).isEqualTo("hello, big bird"); greeting = client.helloWithPathParam("big bird"); - assertThat(greeting).isEqualTo("Hello, big%20bird"); + assertThat(greeting).isEqualTo("Hello, big bird"); } @Test diff --git a/independent-projects/resteasy-reactive/client/runtime/src/main/java/org/jboss/resteasy/reactive/client/impl/StorkClientRequestFilter.java b/independent-projects/resteasy-reactive/client/runtime/src/main/java/org/jboss/resteasy/reactive/client/impl/StorkClientRequestFilter.java index 0a05de7f0f2d5..60990009a9d88 100644 --- a/independent-projects/resteasy-reactive/client/runtime/src/main/java/org/jboss/resteasy/reactive/client/impl/StorkClientRequestFilter.java +++ b/independent-projects/resteasy-reactive/client/runtime/src/main/java/org/jboss/resteasy/reactive/client/impl/StorkClientRequestFilter.java @@ -7,6 +7,7 @@ import jakarta.annotation.Priority; import jakarta.ws.rs.Priorities; import jakarta.ws.rs.core.GenericType; +import jakarta.ws.rs.core.UriBuilder; import jakarta.ws.rs.ext.Provider; import org.jboss.logging.Logger; @@ -79,11 +80,12 @@ public void filter(ResteasyReactiveClientRequestContext requestContext) { } } } - + //To avoid the path double encoding we create uri with path=null and set the path after URI newUri = new URI(scheme, uri.getUserInfo(), host, port, - actualPath, uri.getQuery(), uri.getFragment()); - requestContext.setUri(newUri); + null, uri.getQuery(), uri.getFragment()); + URI build = UriBuilder.fromUri(newUri).path(actualPath).build(); + requestContext.setUri(build); if (measureTime && instance.gatherStatistics()) { requestContext.setCallStatsCollector(instance); } diff --git a/integration-tests/rest-client-reactive-stork/src/test/java/io/quarkus/it/rest/reactive/stork/RestClientReactiveStorkTest.java b/integration-tests/rest-client-reactive-stork/src/test/java/io/quarkus/it/rest/reactive/stork/RestClientReactiveStorkTest.java index 4914aa79d7dd1..884d5ffbbfc0f 100644 --- a/integration-tests/rest-client-reactive-stork/src/test/java/io/quarkus/it/rest/reactive/stork/RestClientReactiveStorkTest.java +++ b/integration-tests/rest-client-reactive-stork/src/test/java/io/quarkus/it/rest/reactive/stork/RestClientReactiveStorkTest.java @@ -32,7 +32,6 @@ void shouldUseQuarkusVertxInstance() { } @Test - // @Disabled void shouldUseFasterService() { Set responses = new HashSet<>();