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