You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by al...@apache.org on 2021/02/10 08:31:13 UTC

[camel-quarkus] branch camel-master updated: Made nats TLS auth tests optional fixes #2211

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

aldettinger pushed a commit to branch camel-master
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git


The following commit(s) were added to refs/heads/camel-master by this push:
     new 514f9a7  Made nats TLS auth tests optional fixes #2211
514f9a7 is described below

commit 514f9a796bc0064a34232e83960415e2719ce5b9
Author: aldettinger <al...@gmail.com>
AuthorDate: Tue Feb 9 18:13:44 2021 +0100

    Made nats TLS auth tests optional fixes #2211
---
 .../component/nats/it/NatsConfiguration.java       | 22 +++++++++++-----------
 .../quarkus/component/nats/it/NatsRoutes.java      | 19 ++++++++++++++++++-
 .../nats/src/main/resources/application.properties |  4 +++-
 .../camel/quarkus/component/nats/it/NatsTest.java  |  8 ++++++--
 .../component/nats/it/NatsTestResource.java        |  9 +++++++--
 5 files changed, 45 insertions(+), 17 deletions(-)

diff --git a/integration-tests/nats/src/main/java/org/apache/camel/quarkus/component/nats/it/NatsConfiguration.java b/integration-tests/nats/src/main/java/org/apache/camel/quarkus/component/nats/it/NatsConfiguration.java
index fe48a7a..b50aa0d 100644
--- a/integration-tests/nats/src/main/java/org/apache/camel/quarkus/component/nats/it/NatsConfiguration.java
+++ b/integration-tests/nats/src/main/java/org/apache/camel/quarkus/component/nats/it/NatsConfiguration.java
@@ -18,7 +18,9 @@ package org.apache.camel.quarkus.component.nats.it;
 
 import javax.inject.Named;
 
+import io.quarkus.arc.properties.IfBuildProperty;
 import org.apache.camel.component.nats.NatsComponent;
+import org.eclipse.microprofile.config.ConfigProvider;
 import org.eclipse.microprofile.config.inject.ConfigProperty;
 
 public class NatsConfiguration {
@@ -27,6 +29,7 @@ public class NatsConfiguration {
     public static final String NATS_BROKER_URL_NO_AUTH_CONFIG_KEY = "camel.nats.test.broker-url-no-auth";
     public static final String NATS_BROKER_URL_TLS_AUTH_CONFIG_KEY = "camel.nats.test.broker-url-tls-auth";
     public static final String NATS_BROKER_URL_TOKEN_AUTH_CONFIG_KEY = "camel.nats.test.broker-url-token-auth";
+    public static final String NATS_ENABLE_TLS_TESTS_CONFIG_KEY = "camel.nats.test.enable-tls";
 
     @ConfigProperty(name = NATS_BROKER_URL_BASIC_AUTH_CONFIG_KEY)
     String natsBasicAuthBrokerUrl;
@@ -34,10 +37,6 @@ public class NatsConfiguration {
     @ConfigProperty(name = NATS_BROKER_URL_NO_AUTH_CONFIG_KEY)
     String natsNoAuthBrokerUrl;
 
-    // TODO: https://github.com/apache/camel-quarkus/issues/2211
-    // @ConfigProperty(name = NATS_BROKER_URL_TLS_AUTH_CONFIG_KEY)
-    // String natsTlsAuthBrokerUrl;
-
     @ConfigProperty(name = NATS_BROKER_URL_TOKEN_AUTH_CONFIG_KEY)
     String natsTokenAuthBrokerUrl;
 
@@ -55,13 +54,14 @@ public class NatsConfiguration {
         return component;
     }
 
-    // TODO: https://github.com/apache/camel-quarkus/issues/2211
-    // @Named
-    // NatsComponent natsTlsAuth() {
-    //     NatsComponent component = new NatsComponent();
-    //     component.setServers(natsTlsAuthBrokerUrl);
-    //     return component;
-    // }
+    @Named
+    @IfBuildProperty(name = NATS_ENABLE_TLS_TESTS_CONFIG_KEY, stringValue = "true")
+    NatsComponent natsTlsAuth() {
+        NatsComponent component = new NatsComponent();
+        String natsTlsAuthBrokerUrl = ConfigProvider.getConfig().getValue(NATS_BROKER_URL_TLS_AUTH_CONFIG_KEY, String.class);
+        component.setServers(natsTlsAuthBrokerUrl);
+        return component;
+    }
 
     @Named
     NatsComponent natsTokenAuth() {
diff --git a/integration-tests/nats/src/main/java/org/apache/camel/quarkus/component/nats/it/NatsRoutes.java b/integration-tests/nats/src/main/java/org/apache/camel/quarkus/component/nats/it/NatsRoutes.java
index 4cf0284..32ffe69 100644
--- a/integration-tests/nats/src/main/java/org/apache/camel/quarkus/component/nats/it/NatsRoutes.java
+++ b/integration-tests/nats/src/main/java/org/apache/camel/quarkus/component/nats/it/NatsRoutes.java
@@ -25,19 +25,36 @@ 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;
+import org.eclipse.microprofile.config.inject.ConfigProperty;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import static org.apache.camel.quarkus.component.nats.it.NatsConfiguration.NATS_ENABLE_TLS_TESTS_CONFIG_KEY;
 
 @ApplicationScoped
 public class NatsRoutes extends RouteBuilder {
 
+    private static final Logger LOG = LoggerFactory.getLogger(NatsRoutes.class);
+
     @Inject
     NatsResource natsResource;
 
+    @ConfigProperty(name = NATS_ENABLE_TLS_TESTS_CONFIG_KEY)
+    boolean tlsTestsEnabled;
+
     @Override
     public void configure() {
         from("natsBasicAuth:test").routeId("basic-auth").bean(natsResource, "storeMessage");
         from("natsNoAuth:test").routeId("no-auth").bean(natsResource, "storeMessage");
         from("natsTokenAuth:test").routeId("token-auth").bean(natsResource, "storeMessage");
-        //from("natsTlsAuth:test?sslContextParameters=#ssl&secure=true").routeId("tls-auth").bean(natsResource, "storeMessage");
+
+        if (tlsTestsEnabled) {
+            LOG.info("TLS tests enabled so starting the TLS auth route");
+            final String uri = "natsTlsAuth:test?sslContextParameters=#ssl&secure=true";
+            from(uri).routeId("tls-auth").bean(natsResource, "storeMessage");
+        } else {
+            LOG.info("TLS tests NOT enabled, so NOT starting the TLS auth route");
+        }
 
         from("natsNoAuth:max?maxMessages=2").routeId("2-msg-max").bean(natsResource, "storeMessage");
 
diff --git a/integration-tests/nats/src/main/resources/application.properties b/integration-tests/nats/src/main/resources/application.properties
index 45284f0..b94b7c4 100644
--- a/integration-tests/nats/src/main/resources/application.properties
+++ b/integration-tests/nats/src/main/resources/application.properties
@@ -14,4 +14,6 @@
 ## See the License for the specific language governing permissions and
 ## limitations under the License.
 ## ---------------------------------------------------------------------------
-quarkus.camel.native.resources.include-patterns=certs/*.jks
\ No newline at end of file
+quarkus.camel.native.resources.include-patterns=certs/*.jks
+
+camel.nats.test.enable-tls=${ENABLE_TLS_TESTS:false}
\ No newline at end of file
diff --git a/integration-tests/nats/src/test/java/org/apache/camel/quarkus/component/nats/it/NatsTest.java b/integration-tests/nats/src/test/java/org/apache/camel/quarkus/component/nats/it/NatsTest.java
index 64bee53..802e270 100644
--- a/integration-tests/nats/src/test/java/org/apache/camel/quarkus/component/nats/it/NatsTest.java
+++ b/integration-tests/nats/src/test/java/org/apache/camel/quarkus/component/nats/it/NatsTest.java
@@ -21,8 +21,8 @@ import java.util.concurrent.TimeUnit;
 import io.quarkus.test.common.QuarkusTestResource;
 import io.quarkus.test.junit.QuarkusTest;
 import io.restassured.http.Header;
-import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable;
 
 import static io.restassured.RestAssured.given;
 import static org.awaitility.Awaitility.await;
@@ -60,8 +60,12 @@ class NatsTest {
         assertEquals("no-auth-msg", messages[0]);
     }
 
-    @Disabled("https://github.com/apache/camel-quarkus/issues/2211")
+    /*
+     * The tests with TLS authentication fail in some environments (quarkus-platform, loaded systems and maybe more).
+     * They can be enabled locally with "export ENABLE_TLS_TESTS=true".
+     */
     @Test
+    @EnabledIfEnvironmentVariable(named = "ENABLE_TLS_TESTS", matches = "true")
     void tlsAuthProduceConsumeRoundTripShouldSucceed() {
         Header header = new Header("sendToEndpointUri", "natsTlsAuth:test?sslContextParameters=#ssl&secure=true");
         given().when().header(header).body("tls-auth-msg").post("/nats/send").then().statusCode(204);
diff --git a/integration-tests/nats/src/test/java/org/apache/camel/quarkus/component/nats/it/NatsTestResource.java b/integration-tests/nats/src/test/java/org/apache/camel/quarkus/component/nats/it/NatsTestResource.java
index 712f47a..6a6344a 100644
--- a/integration-tests/nats/src/test/java/org/apache/camel/quarkus/component/nats/it/NatsTestResource.java
+++ b/integration-tests/nats/src/test/java/org/apache/camel/quarkus/component/nats/it/NatsTestResource.java
@@ -53,9 +53,15 @@ public class NatsTestResource implements ContainerResourceLifecycleManager {
 
         basicAuthContainer = basicAuthContainer(properties);
         noAuthContainer = noAuthContainer(properties);
-        //tlsAuthContainer = tlsAuthContainer(properties);
         tokenAuthContainer = tokenAuthContainer(properties);
 
+        if ("true".equals(System.getenv("ENABLE_TLS_TESTS"))) {
+            LOG.info("TLS tests enabled so starting the TLS auth container");
+            tlsAuthContainer = tlsAuthContainer(properties);
+        } else {
+            LOG.info("TLS tests NOT enabled, so NOT starting the TLS auth container");
+        }
+
         LOG.info("Properties: {}", properties);
 
         return properties;
@@ -140,7 +146,6 @@ public class NatsTestResource implements ContainerResourceLifecycleManager {
                         "--tlsverify",
                         "--tlscacert=/certs/ca.pem")
                 .withLogConsumer(new Slf4jLogConsumer(LOG).withPrefix("tlsAuthContainer"))
-                .waitingFor(Wait.forListeningPort())
                 .waitingFor(Wait.forLogMessage(".*Server is ready.*", 1));
         try {
             container.start();