This is an automated email from the ASF dual-hosted git repository. ppalaga pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
commit 91076b40ed7fa4684c9d00e5e092eb79fec1eb93 Author: James Netherton <[email protected]> AuthorDate: Mon Sep 7 12:13:06 2020 +0100 Replace restcountries endpoint with local service Fixes #1538 --- .../quarkus/component/http/it/HttpResource.java | 33 +++++---- .../camel/quarkus/component/http/it/HttpRoute.java | 43 +++++++++++ .../http/src/main/resources/application.properties | 2 +- .../http/src/main/resources/jsse/truststore.jks | Bin 0 -> 1018 bytes .../http/src/main/resources/restcountries/cz.json | 81 +++++++++++++++++++++ .../camel/quarkus/component/http/it/HttpTest.java | 20 +---- .../component/http/it/HttpTestResource.java | 3 +- pom.xml | 1 + 8 files changed, 148 insertions(+), 35 deletions(-) diff --git a/integration-tests/http/src/main/java/org/apache/camel/quarkus/component/http/it/HttpResource.java b/integration-tests/http/src/main/java/org/apache/camel/quarkus/component/http/it/HttpResource.java index a35d590..17ec0ce 100644 --- a/integration-tests/http/src/main/java/org/apache/camel/quarkus/component/http/it/HttpResource.java +++ b/integration-tests/http/src/main/java/org/apache/camel/quarkus/component/http/it/HttpResource.java @@ -50,7 +50,7 @@ public class HttpResource { @Produces(MediaType.TEXT_PLAIN) public String get(@QueryParam("test-port") int port) { return producerTemplate - .to("ahc:http://localhost:" + port + "/service/get?bridgeEndpoint=true") + .toF("ahc:http://localhost:%d/service/get?bridgeEndpoint=true", port) .withHeader(Exchange.HTTP_METHOD, "GET") .request(String.class); } @@ -58,9 +58,10 @@ public class HttpResource { @Path("/ahc/get-https") @GET @Produces(MediaType.TEXT_PLAIN) - public String getHttps() { + public String getHttps(@QueryParam("test-port") int port) { return producerTemplate - .to("ahc:https://restcountries.com/v2/alpha/cz?bridgeEndpoint=true") + .toF("ahc:https://localhost:%d/countries/cz?bridgeEndpoint=true&sslContextParameters=#sslContextParameters", + port) .withHeader(Exchange.HTTP_METHOD, "GET") .request(String.class); } @@ -71,7 +72,7 @@ public class HttpResource { @Produces(MediaType.TEXT_PLAIN) public String post(@QueryParam("test-port") int port, String message) { return producerTemplate - .to("ahc://http://localhost:" + port + "/service/toUpper?bridgeEndpoint=true") + .toF("ahc://http://localhost:%d/service/toUpper?bridgeEndpoint=true", port) .withBody(message) .withHeader(Exchange.CONTENT_TYPE, MediaType.TEXT_PLAIN) .withHeader(Exchange.HTTP_METHOD, "POST") @@ -107,7 +108,7 @@ public class HttpResource { @Produces(MediaType.TEXT_PLAIN) public String httpGet(@QueryParam("test-port") int port) { return producerTemplate - .to("http://localhost:" + port + "/service/get?bridgeEndpoint=true") + .toF("http://localhost:%d/service/get?bridgeEndpoint=true", port) .withHeader(Exchange.HTTP_METHOD, "GET") .request(String.class); } @@ -115,9 +116,9 @@ public class HttpResource { @Path("/http/get-https") @GET @Produces(MediaType.TEXT_PLAIN) - public String httpGetHttps() { + public String httpGetHttps(@QueryParam("test-port") int port) { return producerTemplate - .to("https://restcountries.com/v2/alpha/cz?bridgeEndpoint=true") + .toF("https://localhost:%d/countries/cz?bridgeEndpoint=true&sslContextParameters=#sslContextParameters", port) .withHeader(Exchange.HTTP_METHOD, "GET") .request(String.class); } @@ -128,7 +129,7 @@ public class HttpResource { @Produces(MediaType.TEXT_PLAIN) public String httpPost(@QueryParam("test-port") int port, String message) { return producerTemplate - .to("http://localhost:" + port + "/service/toUpper?bridgeEndpoint=true") + .toF("http://localhost:%d/service/toUpper?bridgeEndpoint=true", port) .withBody(message) .withHeader(Exchange.CONTENT_TYPE, MediaType.TEXT_PLAIN) .withHeader(Exchange.HTTP_METHOD, "POST") @@ -146,7 +147,7 @@ public class HttpResource { @Produces(MediaType.TEXT_PLAIN) public String nettyHttpGet(@QueryParam("test-port") int port) { return producerTemplate - .to("netty-http:http://localhost:" + port + "/service/get?bridgeEndpoint=true") + .toF("netty-http:http://localhost:%d/service/get?bridgeEndpoint=true", port) .withHeader(Exchange.HTTP_METHOD, "GET") .request(String.class); } @@ -154,9 +155,9 @@ public class HttpResource { @Path("/netty-http/get-https") @GET @Produces(MediaType.TEXT_PLAIN) - public String nettyHttpGetHttps() { + public String nettyHttpGetHttps(@QueryParam("test-port") int port) { return producerTemplate - .to("netty-http:https://restcountries.com/v2/alpha/cz?ssl=true&passphrase=changeit&keyStoreResource=classpath:jsse/keystore.p12&trustStoreResource=file:{{javax.net.ssl.trustStore}}") + .toF("netty-http:https://localhost:%d/countries/cz?sslContextParameters=#sslContextParameters", port) .withHeader(Exchange.HTTP_METHOD, "GET") .request(String.class); } @@ -167,7 +168,7 @@ public class HttpResource { @Produces(MediaType.TEXT_PLAIN) public String hettyHttpPost(@QueryParam("test-port") int port, String message) { return producerTemplate - .to("netty-http://http://localhost:" + port + "/service/toUpper?bridgeEndpoint=true") + .toF("netty-http:http://localhost:%d/service/toUpper?bridgeEndpoint=true", port) .withBody(message) .withHeader(Exchange.CONTENT_TYPE, MediaType.TEXT_PLAIN) .withHeader(Exchange.HTTP_METHOD, "POST") @@ -185,7 +186,7 @@ public class HttpResource { @Produces(MediaType.TEXT_PLAIN) public String vertxHttpGet(@QueryParam("test-port") int port) { return producerTemplate - .to("vertx-http:http://localhost:" + port + "/service/get") + .toF("vertx-http:http://localhost:%d/service/get", port) .withHeader(Exchange.HTTP_METHOD, "GET") .request(String.class); } @@ -193,9 +194,9 @@ public class HttpResource { @Path("/vertx-http/get-https") @GET @Produces(MediaType.TEXT_PLAIN) - public String vertxHttpHttps() { + public String vertxHttpHttps(@QueryParam("test-port") int port) { return producerTemplate - .to("vertx-http:https://restcountries.com/v2/alpha/cz") + .toF("vertx-http:https://localhost:%d/countries/cz?sslContextParameters=#sslContextParameters", port) .withHeader(Exchange.HTTP_METHOD, "GET") .request(String.class); } @@ -206,7 +207,7 @@ public class HttpResource { @Produces(MediaType.TEXT_PLAIN) public String vertxHttpPost(@QueryParam("test-port") int port, String message) { return producerTemplate - .to("vertx-http:http://localhost:" + port + "/service/toUpper") + .toF("vertx-http:http://localhost:%d/service/toUpper", port) .withBody(message) .withHeader(Exchange.CONTENT_TYPE, MediaType.TEXT_PLAIN) .withHeader(Exchange.HTTP_METHOD, "POST") diff --git a/integration-tests/http/src/main/java/org/apache/camel/quarkus/component/http/it/HttpRoute.java b/integration-tests/http/src/main/java/org/apache/camel/quarkus/component/http/it/HttpRoute.java index 46f5028..c083687 100644 --- a/integration-tests/http/src/main/java/org/apache/camel/quarkus/component/http/it/HttpRoute.java +++ b/integration-tests/http/src/main/java/org/apache/camel/quarkus/component/http/it/HttpRoute.java @@ -16,7 +16,17 @@ */ package org.apache.camel.quarkus.component.http.it; +import java.io.InputStream; + +import javax.inject.Named; + +import org.apache.camel.Exchange; +import org.apache.camel.Processor; import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.support.jsse.KeyManagersParameters; +import org.apache.camel.support.jsse.KeyStoreParameters; +import org.apache.camel.support.jsse.SSLContextParameters; +import org.apache.camel.support.jsse.TrustManagersParameters; public class HttpRoute extends RouteBuilder { @Override @@ -24,7 +34,40 @@ public class HttpRoute extends RouteBuilder { from("netty-http:http://0.0.0.0:{{camel.netty-http.test-port}}/test/server/hello") .transform().constant("Netty Hello World"); + from("netty-http:http://0.0.0.0:{{camel.netty-http.https-test-port}}/countries/cz?ssl=true&sslContextParameters=#sslContextParameters") + .process(new Processor() { + @Override + public void process(Exchange exchange) throws Exception { + InputStream stream = HttpRoute.class.getResourceAsStream("/restcountries/cz.json"); + String json = exchange.getContext().getTypeConverter().convertTo(String.class, stream); + exchange.getMessage().setBody(json); + } + }); + from("direct:ahcWsIn") .toD("ahc-ws:localhost:${header.test-port}/ahc-ws/greeting"); } + + @Named + public SSLContextParameters sslContextParameters() { + KeyStoreParameters keystoreParameters = new KeyStoreParameters(); + keystoreParameters.setResource("/jsse/keystore.p12"); + keystoreParameters.setPassword("changeit"); + + KeyStoreParameters truststoreParameters = new KeyStoreParameters(); + truststoreParameters.setResource("/jsse/truststore.jks"); + truststoreParameters.setPassword("changeit"); + + TrustManagersParameters trustManagersParameters = new TrustManagersParameters(); + trustManagersParameters.setKeyStore(truststoreParameters); + SSLContextParameters sslContextParameters = new SSLContextParameters(); + sslContextParameters.setTrustManagers(trustManagersParameters); + + KeyManagersParameters keyManagersParameters = new KeyManagersParameters(); + keyManagersParameters.setKeyPassword("changeit"); + keyManagersParameters.setKeyStore(keystoreParameters); + sslContextParameters.setKeyManagers(keyManagersParameters); + + return sslContextParameters; + } } diff --git a/integration-tests/http/src/main/resources/application.properties b/integration-tests/http/src/main/resources/application.properties index 0892e7c..82a564a 100644 --- a/integration-tests/http/src/main/resources/application.properties +++ b/integration-tests/http/src/main/resources/application.properties @@ -18,4 +18,4 @@ # # Quarkus # -quarkus.native.additional-build-args = -H:IncludeResources=jsse/keystore.p12 +quarkus.native.additional-build-args = -H:IncludeResources=jsse/.*,-H:IncludeResources=restcountries/cz.json diff --git a/integration-tests/http/src/main/resources/jsse/truststore.jks b/integration-tests/http/src/main/resources/jsse/truststore.jks new file mode 100644 index 0000000..9624503 Binary files /dev/null and b/integration-tests/http/src/main/resources/jsse/truststore.jks differ diff --git a/integration-tests/http/src/main/resources/restcountries/cz.json b/integration-tests/http/src/main/resources/restcountries/cz.json new file mode 100644 index 0000000..87701b1 --- /dev/null +++ b/integration-tests/http/src/main/resources/restcountries/cz.json @@ -0,0 +1,81 @@ +{ + "name": "Czech Republic", + "topLevelDomain": [ + ".cz" + ], + "alpha2Code": "CZ", + "alpha3Code": "CZE", + "callingCodes": [ + "420" + ], + "capital": "Prague", + "altSpellings": [ + "CZ", + "Česká republika", + "Česko" + ], + "region": "Europe", + "subregion": "Eastern Europe", + "population": 10558524, + "latlng": [ + 49.75, + 15.5 + ], + "demonym": "Czech", + "area": 78865.0, + "gini": 26.0, + "timezones": [ + "UTC+01:00" + ], + "borders": [ + "AUT", + "DEU", + "POL", + "SVK" + ], + "nativeName": "Česká republika", + "numericCode": "203", + "currencies": [ + { + "code": "CZK", + "name": "Czech koruna", + "symbol": "Kč" + } + ], + "languages": [ + { + "iso639_1": "cs", + "iso639_2": "ces", + "name": "Czech", + "nativeName": "čeština" + }, + { + "iso639_1": "sk", + "iso639_2": "slk", + "name": "Slovak", + "nativeName": "slovenčina" + } + ], + "translations": { + "de": "Tschechische Republik", + "es": "República Checa", + "fr": "République tchèque", + "ja": "チェコ", + "it": "Repubblica Ceca", + "br": "República Tcheca", + "pt": "República Checa", + "nl": "Tsjechië", + "hr": "Češka", + "fa": "جمهوری چک" + }, + "flag": "https://restcountries.eu/data/cze.svg", + "regionalBlocs": [ + { + "acronym": "EU", + "name": "European Union", + "otherAcronyms": [], + "otherNames": [] + } + ], + "cioc": "CZE" +} diff --git a/integration-tests/http/src/test/java/org/apache/camel/quarkus/component/http/it/HttpTest.java b/integration-tests/http/src/test/java/org/apache/camel/quarkus/component/http/it/HttpTest.java index c794889..82b9d67 100644 --- a/integration-tests/http/src/test/java/org/apache/camel/quarkus/component/http/it/HttpTest.java +++ b/integration-tests/http/src/test/java/org/apache/camel/quarkus/component/http/it/HttpTest.java @@ -19,7 +19,6 @@ package org.apache.camel.quarkus.component.http.it; import io.quarkus.test.common.QuarkusTestResource; import io.quarkus.test.junit.QuarkusTest; import io.restassured.RestAssured; -import org.apache.camel.quarkus.test.TrustStoreResource; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; @@ -29,7 +28,6 @@ import static org.hamcrest.Matchers.is; @QuarkusTest @QuarkusTestResource(HttpTestResource.class) -@QuarkusTestResource(TrustStoreResource.class) class HttpTest { @ParameterizedTest @ValueSource(strings = { "ahc", "http", "netty-http", "vertx-http" }) @@ -55,25 +53,14 @@ class HttpTest { @ParameterizedTest @ValueSource(strings = { "ahc", "http", "netty-http", "vertx-http" }) public void httpsProducer(String component) { - RestAssured - .given() - .when() - .get("/test/client/{component}/get-https", component) - .then() - .body(containsString("Czech Republic")); - } + final int port = Integer.getInteger("camel.netty-http.https-test-port"); - @Test - public void restcountries() throws Exception { RestAssured .given() - .baseUri("https://restcountries.com") - .port(443) + .queryParam("test-port", port) .when() - .accept("application/json") - .get("/v2/alpha/cz") + .get("/test/client/{component}/get-https", component) .then() - .statusCode(200) .body(containsString("Czech Republic")); } @@ -101,5 +88,4 @@ class HttpTest { .then() .body(is("Hello " + body)); } - } diff --git a/integration-tests/http/src/test/java/org/apache/camel/quarkus/component/http/it/HttpTestResource.java b/integration-tests/http/src/test/java/org/apache/camel/quarkus/component/http/it/HttpTestResource.java index c1a0daf..c60b157 100644 --- a/integration-tests/http/src/test/java/org/apache/camel/quarkus/component/http/it/HttpTestResource.java +++ b/integration-tests/http/src/test/java/org/apache/camel/quarkus/component/http/it/HttpTestResource.java @@ -25,7 +25,8 @@ import org.apache.camel.quarkus.test.AvailablePortFinder; public class HttpTestResource implements QuarkusTestResourceLifecycleManager { @Override public Map<String, String> start() { - return AvailablePortFinder.reserveNetworkPorts(Objects::toString, "camel.netty-http.test-port"); + return AvailablePortFinder.reserveNetworkPorts(Objects::toString, "camel.netty-http.test-port", + "camel.netty-http.https-test-port"); } @Override diff --git a/pom.xml b/pom.xml index d3c3be5..7996082 100644 --- a/pom.xml +++ b/pom.xml @@ -378,6 +378,7 @@ <exclude>**/*.ftl</exclude> <exclude>**/*.graphql</exclude> <exclude>**/*.ics</exclude> + <exclude>**/*.jks</exclude> <exclude>**/*.lock</exclude> <exclude>**/*.mp3</exclude> <exclude>**/*.mp4</exclude>
