You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by pp...@apache.org on 2020/09/07 12:49:16 UTC
[camel-quarkus] 02/02: Replace restcountries endpoint with local
service
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 <ja...@gmail.com>
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>