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

acosentino pushed a commit to branch CAMEL-21330
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 89990fc6c47042de3689ea18596001f0f5da0851
Author: Andrea Cosentino <anco...@gmail.com>
AuthorDate: Wed Oct 23 11:05:18 2024 +0200

    CAMEL-21330 - Camel-AWS-Secrets-Manager: Support Properties Function with 
Localstack
    
    Signed-off-by: Andrea Cosentino <anco...@gmail.com>
---
 .../integration/AwsSecretsManagerBaseTest.java     | 48 +++++++++++++++++++
 ...etsManagerPropertiesSourceTestLocalstackIT.java | 56 ++++++++++++++++++++++
 2 files changed, 104 insertions(+)

diff --git 
a/components/camel-aws/camel-aws-secrets-manager/src/test/java/org/apache/camel/component/aws/secretsmanager/integration/AwsSecretsManagerBaseTest.java
 
b/components/camel-aws/camel-aws-secrets-manager/src/test/java/org/apache/camel/component/aws/secretsmanager/integration/AwsSecretsManagerBaseTest.java
index 02b838f4adc..9effb457490 100644
--- 
a/components/camel-aws/camel-aws-secrets-manager/src/test/java/org/apache/camel/component/aws/secretsmanager/integration/AwsSecretsManagerBaseTest.java
+++ 
b/components/camel-aws/camel-aws-secrets-manager/src/test/java/org/apache/camel/component/aws/secretsmanager/integration/AwsSecretsManagerBaseTest.java
@@ -16,6 +16,8 @@
  */
 package org.apache.camel.component.aws.secretsmanager.integration;
 
+import java.net.URI;
+
 import org.apache.camel.CamelContext;
 import org.apache.camel.component.aws.secretsmanager.SecretsManagerComponent;
 import org.apache.camel.test.infra.aws.common.services.AWSService;
@@ -24,6 +26,11 @@ import 
org.apache.camel.test.infra.aws2.services.AWSServiceFactory;
 import org.apache.camel.test.junit5.CamelTestSupport;
 import org.junit.jupiter.api.TestInstance;
 import org.junit.jupiter.api.extension.RegisterExtension;
+import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
+import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
+import software.amazon.awssdk.regions.Region;
+import software.amazon.awssdk.services.secretsmanager.SecretsManagerClient;
+import 
software.amazon.awssdk.services.secretsmanager.SecretsManagerClientBuilder;
 
 @TestInstance(TestInstance.Lifecycle.PER_CLASS)
 public abstract class AwsSecretsManagerBaseTest extends CamelTestSupport {
@@ -37,4 +44,45 @@ public abstract class AwsSecretsManagerBaseTest extends 
CamelTestSupport {
         
smComponent.getConfiguration().setSecretsManagerClient(AWSSDKClientUtils.newSecretsManagerClient());
         return context;
     }
+
+    // {aws.secret.key=secretkey, aws.region=us-east-1, 
aws.access.key=accesskey, aws.host=localhost:32775, aws.protocol=http}
+    public static SecretsManagerClient getSecretManagerClient() {
+        String accessKey = 
service.getConnectionProperties().getProperty("aws.access.key");
+        String region = 
service.getConnectionProperties().getProperty("aws.region");
+        String secretKey = 
service.getConnectionProperties().getProperty("aws.secret.key");
+        String host = 
service.getConnectionProperties().getProperty("aws.host");
+        String protocol = 
service.getConnectionProperties().getProperty("aws.protocol");
+        SecretsManagerClient client = null;
+        SecretsManagerClientBuilder clientBuilder = 
SecretsManagerClient.builder();
+        AwsBasicCredentials cred = AwsBasicCredentials.create(accessKey, 
secretKey);
+        clientBuilder = 
clientBuilder.credentialsProvider(StaticCredentialsProvider.create(cred));
+        clientBuilder = clientBuilder.region(Region.of(region));
+        clientBuilder.endpointOverride(URI.create(protocol + "://" + host));
+        return clientBuilder.build();
+    }
+
+    public String getSecretKey() {
+        return service.getConnectionProperties().getProperty("aws.secret.key");
+    }
+
+    public String getAccessKey() {
+        return service.getConnectionProperties().getProperty("aws.access.key");
+    }
+
+    public String getRegion() {
+        return service.getConnectionProperties().getProperty("aws.region");
+    }
+
+    public String getProtocol() {
+        return service.getConnectionProperties().getProperty("aws.protocol");
+    }
+
+    public String getHost() {
+        return service.getConnectionProperties().getProperty("aws.host");
+    }
+
+    public String getUrlOverride() {
+        return getProtocol() + "://" + getHost();
+    }
+
 }
diff --git 
a/components/camel-aws/camel-aws-secrets-manager/src/test/java/org/apache/camel/component/aws/secretsmanager/integration/SecretsManagerPropertiesSourceTestLocalstackIT.java
 
b/components/camel-aws/camel-aws-secrets-manager/src/test/java/org/apache/camel/component/aws/secretsmanager/integration/SecretsManagerPropertiesSourceTestLocalstackIT.java
new file mode 100644
index 00000000000..444af412e0e
--- /dev/null
+++ 
b/components/camel-aws/camel-aws-secrets-manager/src/test/java/org/apache/camel/component/aws/secretsmanager/integration/SecretsManagerPropertiesSourceTestLocalstackIT.java
@@ -0,0 +1,56 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.aws.secretsmanager.integration;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+import 
software.amazon.awssdk.services.secretsmanager.model.CreateSecretRequest;
+
+public class SecretsManagerPropertiesSourceTestLocalstackIT extends 
AwsSecretsManagerBaseTest {
+
+    @BeforeAll
+    public static void setup() {
+        CreateSecretRequest.Builder builder = CreateSecretRequest.builder();
+        builder.name("test");
+        builder.secretString("hello");
+        getSecretManagerClient().createSecret(builder.build());
+    }
+
+    @Test
+    public void testFunction() throws Exception {
+        context.getVaultConfiguration().aws().setAccessKey(getAccessKey());
+        context.getVaultConfiguration().aws().setSecretKey(getSecretKey());
+        context.getVaultConfiguration().aws().setRegion(getRegion());
+        context.getVaultConfiguration().aws().setOverrideEndpoint(true);
+        
context.getVaultConfiguration().aws().setUriEndpointOverride(getUrlOverride());
+        context.addRoutes(new RouteBuilder() {
+            @Override
+            public void configure() {
+                
from("direct:start").setBody(simple("{{aws:test}}")).to("mock:bar");
+            }
+        });
+        context.start();
+
+        getMockEndpoint("mock:bar").expectedBodiesReceived("hello");
+
+        template.sendBody("direct:start", "Hello World");
+
+        MockEndpoint.assertIsSatisfied(context);
+    }
+}

Reply via email to