This is an automated email from the ASF dual-hosted git repository.

jamesnetherton 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 76bfb90921 Test hashicorp-vault with HTTPS scheme
76bfb90921 is described below

commit 76bfb90921d3bcd807f0735145c6b6cd0f14e725
Author: James Netherton <[email protected]>
AuthorDate: Tue Sep 3 10:58:47 2024 +0100

    Test hashicorp-vault with HTTPS scheme
---
 integration-tests/hashicorp-vault/pom.xml          |  5 ++++
 .../hashicorp/vault/it/HashicorpVaultResource.java | 16 ++++++++++++
 .../hashicorp/vault/it/HashicorpVaultRoutes.java   | 10 ++++----
 .../hashicorp/vault/it/HashicorpVaultTest.java     |  6 +++++
 .../vault/it/HashicorpVaultTestResource.java       | 29 ++++++++++++++++++++--
 5 files changed, 59 insertions(+), 7 deletions(-)

diff --git a/integration-tests/hashicorp-vault/pom.xml 
b/integration-tests/hashicorp-vault/pom.xml
index f0b0abbc71..b81bac0d2e 100644
--- a/integration-tests/hashicorp-vault/pom.xml
+++ b/integration-tests/hashicorp-vault/pom.xml
@@ -75,6 +75,11 @@
             <artifactId>quarkus-junit4-mock</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            
<artifactId>camel-quarkus-integration-tests-support-certificate-generator</artifactId>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 
     <profiles>
diff --git 
a/integration-tests/hashicorp-vault/src/main/java/org/apache/camel/quarkus/component/hashicorp/vault/it/HashicorpVaultResource.java
 
b/integration-tests/hashicorp-vault/src/main/java/org/apache/camel/quarkus/component/hashicorp/vault/it/HashicorpVaultResource.java
index d1264f20c9..ea05d142ff 100644
--- 
a/integration-tests/hashicorp-vault/src/main/java/org/apache/camel/quarkus/component/hashicorp/vault/it/HashicorpVaultResource.java
+++ 
b/integration-tests/hashicorp-vault/src/main/java/org/apache/camel/quarkus/component/hashicorp/vault/it/HashicorpVaultResource.java
@@ -21,7 +21,10 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import io.quarkus.runtime.ShutdownEvent;
+import io.quarkus.runtime.StartupEvent;
 import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.enterprise.event.Observes;
 import jakarta.inject.Inject;
 import jakarta.ws.rs.DELETE;
 import jakarta.ws.rs.GET;
@@ -43,6 +46,19 @@ public class HashicorpVaultResource {
     @Inject
     ProducerTemplate producerTemplate;
 
+    void init(@Observes StartupEvent event) {
+        // spring-vault defaults to using HttpURLConnection as its 'client' so 
we have to configure SSL with system properties
+        System.setProperty("javax.net.ssl.trustStoreType", "PKCS12");
+        System.setProperty("javax.net.ssl.trustStore", 
"target/certs/hashicorp-vault-truststore.p12");
+        System.setProperty("javax.net.ssl.trustStorePassword", "v431t");
+    }
+
+    void destroy(@Observes ShutdownEvent event) {
+        System.clearProperty("javax.net.ssl.trustStoreType");
+        System.clearProperty("javax.net.ssl.trustStore");
+        System.clearProperty("javax.net.ssl.trustStorePassword");
+    }
+
     @Path("/secret")
     @POST
     public Response createSecret(
diff --git 
a/integration-tests/hashicorp-vault/src/main/java/org/apache/camel/quarkus/component/hashicorp/vault/it/HashicorpVaultRoutes.java
 
b/integration-tests/hashicorp-vault/src/main/java/org/apache/camel/quarkus/component/hashicorp/vault/it/HashicorpVaultRoutes.java
index 1c02ef393b..91b28386aa 100644
--- 
a/integration-tests/hashicorp-vault/src/main/java/org/apache/camel/quarkus/component/hashicorp/vault/it/HashicorpVaultRoutes.java
+++ 
b/integration-tests/hashicorp-vault/src/main/java/org/apache/camel/quarkus/component/hashicorp/vault/it/HashicorpVaultRoutes.java
@@ -46,25 +46,25 @@ public class HashicorpVaultRoutes extends RouteBuilder {
     @Override
     public void configure() throws Exception {
         from("direct:createSecret")
-                
.toF("hashicorp-vault:secret?operation=createSecret&scheme=http&host=%s&port=%d&token=%s&secretPath=%s",
 host,
+                
.toF("hashicorp-vault:secret?operation=createSecret&scheme=https&host=%s&port=%d&token=%s&secretPath=%s",
 host,
                         port, token, TEST_SECRET_PATH);
 
         from("direct:createVersionedSecret")
-                
.toF("hashicorp-vault:secret?operation=createSecret&scheme=http&host=%s&port=%d&token=%s&secretPath=%s",
 host,
+                
.toF("hashicorp-vault:secret?operation=createSecret&scheme=https&host=%s&port=%d&token=%s&secretPath=%s",
 host,
                         port, token, TEST_VERSIONED_SECRET_PATH);
 
         from("direct:getSecret")
-                
.toF("hashicorp-vault:secret?operation=getSecret&scheme=http&host=%s&port=%d&token=%s",
 host, port, token);
+                
.toF("hashicorp-vault:secret?operation=getSecret&scheme=https&host=%s&port=%d&token=%s",
 host, port, token);
 
         from("direct:getSecretWithCustomVaultTemplate")
                 
.to("hashicorp-vault:secret?operation=getSecret&vaultTemplate=#customVaultTemplate");
 
         from("direct:deleteSecret")
-                
.toF("hashicorp-vault:secret?operation=deleteSecret&scheme=http&host=%s&port=%d&token=%s&secretPath=%s",
 host,
+                
.toF("hashicorp-vault:secret?operation=deleteSecret&scheme=https&host=%s&port=%d&token=%s&secretPath=%s",
 host,
                         port, token, TEST_SECRET_PATH);
 
         from("direct:listSecrets")
-                
.toF("hashicorp-vault:secret?operation=listSecrets&scheme=http&host=%s&port=%d&token=%s&secretPath=%s",
 host,
+                
.toF("hashicorp-vault:secret?operation=listSecrets&scheme=https&host=%s&port=%d&token=%s&secretPath=%s",
 host,
                         port, token, TEST_SECRET_PATH);
 
         from("direct:propertyPlaceholder")
diff --git 
a/integration-tests/hashicorp-vault/src/test/java/org/apache/camel/quarkus/component/hashicorp/vault/it/HashicorpVaultTest.java
 
b/integration-tests/hashicorp-vault/src/test/java/org/apache/camel/quarkus/component/hashicorp/vault/it/HashicorpVaultTest.java
index 1bd85ef29e..24988e84b2 100644
--- 
a/integration-tests/hashicorp-vault/src/test/java/org/apache/camel/quarkus/component/hashicorp/vault/it/HashicorpVaultTest.java
+++ 
b/integration-tests/hashicorp-vault/src/test/java/org/apache/camel/quarkus/component/hashicorp/vault/it/HashicorpVaultTest.java
@@ -19,6 +19,9 @@ package org.apache.camel.quarkus.component.hashicorp.vault.it;
 import io.quarkus.test.common.QuarkusTestResource;
 import io.quarkus.test.junit.QuarkusTest;
 import io.restassured.RestAssured;
+import me.escoffier.certs.Format;
+import me.escoffier.certs.junit5.Certificate;
+import org.apache.camel.quarkus.test.support.certificate.TestCertificates;
 import org.junit.jupiter.api.Test;
 
 import static 
org.apache.camel.quarkus.component.hashicorp.vault.it.HashicorpVaultRoutes.TEST_SECRET_NAME;
@@ -27,6 +30,9 @@ import static 
org.apache.camel.quarkus.component.hashicorp.vault.it.HashicorpVau
 import static org.hamcrest.Matchers.containsString;
 import static org.hamcrest.Matchers.is;
 
+@TestCertificates(certificates = {
+        @Certificate(name = "hashicorp-vault", formats = { Format.PEM, 
Format.PKCS12 }, password = "v431t")
+}, docker = true)
 @QuarkusTest
 @QuarkusTestResource(HashicorpVaultTestResource.class)
 class HashicorpVaultTest {
diff --git 
a/integration-tests/hashicorp-vault/src/test/java/org/apache/camel/quarkus/component/hashicorp/vault/it/HashicorpVaultTestResource.java
 
b/integration-tests/hashicorp-vault/src/test/java/org/apache/camel/quarkus/component/hashicorp/vault/it/HashicorpVaultTestResource.java
index d98494fc48..94d2709be5 100644
--- 
a/integration-tests/hashicorp-vault/src/test/java/org/apache/camel/quarkus/component/hashicorp/vault/it/HashicorpVaultTestResource.java
+++ 
b/integration-tests/hashicorp-vault/src/test/java/org/apache/camel/quarkus/component/hashicorp/vault/it/HashicorpVaultTestResource.java
@@ -21,23 +21,48 @@ import java.util.UUID;
 
 import io.quarkus.test.common.QuarkusTestResourceLifecycleManager;
 import org.eclipse.microprofile.config.ConfigProvider;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.testcontainers.containers.GenericContainer;
+import org.testcontainers.containers.output.Slf4jLogConsumer;
 import org.testcontainers.containers.wait.strategy.Wait;
 import org.testcontainers.utility.DockerImageName;
+import org.testcontainers.utility.MountableFile;
 
 public class HashicorpVaultTestResource implements 
QuarkusTestResourceLifecycleManager {
+    private static final Logger LOG = 
LoggerFactory.getLogger(HashicorpVaultTestResource.class);
     private static final String DOCKER_IMAGE_NAME = 
ConfigProvider.getConfig().getValue("hashicorp-vault.container.image",
             String.class);
     private static final String VAULT_TOKEN = UUID.randomUUID().toString();
-    private static final int VAULT_PORT = 8200;
+    private static final int VAULT_PORT = 8300;
+    private static final String VAULT_CONFIG = """
+            {
+              "listener": [
+                {
+                  "tcp": {
+                    "address": "0.0.0.0:8300",
+                    "tls_disable": "0",
+                    "tls_cert_file": "/ssl/hashicorp-vault.crt",
+                    "tls_key_file": "/ssl/hashicorp-vault.key"
+                  }
+                }
+              ]
+            }""";
     private GenericContainer<?> container;
 
     @Override
     public Map<String, String> start() {
+
         container = new 
GenericContainer<>(DockerImageName.parse(DOCKER_IMAGE_NAME));
         container.withEnv("VAULT_DEV_ROOT_TOKEN_ID", VAULT_TOKEN);
+        container.withEnv("VAULT_LOCAL_CONFIG", VAULT_CONFIG.trim());
         container.addExposedPort(VAULT_PORT);
+        
container.withCopyFileToContainer(MountableFile.forHostPath("target/certs/hashicorp-vault.crt"),
+                "/ssl/hashicorp-vault.crt");
+        
container.withCopyFileToContainer(MountableFile.forHostPath("target/certs/hashicorp-vault.key"),
+                "/ssl/hashicorp-vault.key");
         container.waitingFor(Wait.forListeningPort());
+        container.withLogConsumer(new Slf4jLogConsumer(LOG));
         
container.waitingFor(Wait.forLogMessage(".*Development.*mode.*should.*", 1));
 
         container.start();
@@ -47,7 +72,7 @@ public class HashicorpVaultTestResource implements 
QuarkusTestResourceLifecycleM
                 "camel.vault.hashicorp.token", VAULT_TOKEN,
                 "camel.vault.hashicorp.host", container.getHost(),
                 "camel.vault.hashicorp.port", 
String.valueOf(container.getMappedPort(VAULT_PORT)),
-                "camel.vault.hashicorp.scheme", "http");
+                "camel.vault.hashicorp.scheme", "https");
     }
 
     @Override

Reply via email to