This is an automated email from the ASF dual-hosted git repository.
ppalaga pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
The following commit(s) were added to refs/heads/main by this push:
new a529aca Fix vertx-http SSL integration test
a529aca is described below
commit a529aca78106c84f1db5deb6eda3d9e0f197e844
Author: James Netherton <[email protected]>
AuthorDate: Tue Jun 1 16:25:50 2021 +0100
Fix vertx-http SSL integration test
Fixes #2656
---
.../quarkus/component/http/it/HttpResource.java | 2 +-
.../camel/quarkus/component/http/it/HttpRoute.java | 55 ++++++++++++++++++++++
.../camel/quarkus/component/http/it/HttpTest.java | 4 +-
3 files changed, 57 insertions(+), 4 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 e428ac5..3c50baf 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
@@ -216,7 +216,7 @@ public class HttpResource {
@Produces(MediaType.TEXT_PLAIN)
public String vertxHttpHttps(@QueryParam("test-port") int port) {
return producerTemplate
-
.toF("vertx-http:https://localhost:%d/countries/cz?sslContextParameters=#sslContextParameters",
port)
+
.toF("vertx-http:https://localhost:%d/countries/cz?webClientOptions=#clientOptions",
port)
.withHeader(Exchange.HTTP_METHOD, "GET")
.request(String.class);
}
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 930f860..740c76a 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,10 +16,17 @@
*/
package org.apache.camel.quarkus.component.http.it;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
import java.io.InputStream;
import javax.inject.Named;
+import javax.net.ssl.KeyManagerFactory;
+import javax.net.ssl.TrustManagerFactory;
+import io.vertx.core.buffer.Buffer;
+import io.vertx.core.net.KeyStoreOptions;
+import io.vertx.ext.web.client.WebClientOptions;
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
import org.apache.camel.builder.RouteBuilder;
@@ -68,4 +75,52 @@ public class HttpRoute extends RouteBuilder {
return sslContextParameters;
}
+
+ // TODO: Remove this when vertx-http SSL configuration is fixed:
+ // https://github.com/apache/camel-quarkus/issues/2704
+ @Named
+ public WebClientOptions clientOptions(SSLContextParameters
sslContextParameters) throws IOException {
+ KeyManagersParameters keyManagers =
sslContextParameters.getKeyManagers();
+ byte[] keyStoreBytes =
readStore(keyManagers.getKeyStore().getResource());
+ KeyStoreOptions keyStoreOptions = new KeyStoreOptions();
+ keyStoreOptions.setPassword(keyManagers.getKeyPassword());
+ keyStoreOptions.setProvider(KeyManagerFactory.getDefaultAlgorithm());
+ keyStoreOptions.setType("PKCS12");
+ keyStoreOptions.setValue(Buffer.buffer(keyStoreBytes));
+
+ TrustManagersParameters trustManagers =
sslContextParameters.getTrustManagers();
+ byte[] trustStoreBytes =
readStore(trustManagers.getKeyStore().getResource());
+ KeyStoreOptions trustStoreOptions = new KeyStoreOptions();
+
trustStoreOptions.setPassword(trustManagers.getKeyStore().getPassword());
+
trustStoreOptions.setProvider(TrustManagerFactory.getDefaultAlgorithm());
+ trustStoreOptions.setType("JKS");
+ trustStoreOptions.setValue(Buffer.buffer(trustStoreBytes));
+
+ return new WebClientOptions()
+ .setSsl(true)
+ .setKeyCertOptions(keyStoreOptions)
+ .setTrustOptions(trustStoreOptions);
+ }
+
+ private static byte[] readStore(String path) throws IOException {
+ byte[] data = null;
+ final InputStream resource = HttpRoute.class.getResourceAsStream(path);
+ if (resource != null) {
+ try (InputStream is = resource) {
+ data = inputStreamToBytes(is);
+ }
+ }
+ return data;
+ }
+
+ private static byte[] inputStreamToBytes(InputStream is) throws
IOException {
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ byte[] buf = new byte[1024];
+ int r;
+ while ((r = is.read(buf)) > 0) {
+ out.write(buf, 0, r);
+ }
+ return out.toByteArray();
+ }
+
}
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 1e4a760..05273c3 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
@@ -55,9 +55,7 @@ class HttpTest {
}
@ParameterizedTest
- @ValueSource(strings = { "ahc", "http", "netty-http"
- /* , "vertx-http" disabled because of
https://github.com/apache/camel-quarkus/issues/2656 */
- })
+ @ValueSource(strings = { "ahc", "http", "netty-http", "vertx-http" })
public void httpsProducer(String component) {
final int port =
ConfigProvider.getConfig().getValue("camel.netty-http.https-test-port",
Integer.class);