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

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

commit 0405b20423d52b83bb1dc0b14507a3085bd4439f
Author: Andrea Cosentino <anco...@gmail.com>
AuthorDate: Wed Mar 17 14:56:32 2021 +0100

    CAMEL-16347 - Camel test-infra: Create a module for AWS Secrets manager
---
 .../camel-aws/camel-aws-secrets-manager/pom.xml    | 25 +++++++++
 .../localstack/AwsSecretsManagerBaseTest.java      | 40 ++++++++++++++
 ...sManagerCreateSecretProducerLocalstackTest.java | 62 ++++++++++++++++++++++
 test-infra/camel-test-infra-aws-v2/pom.xml         |  8 ++-
 .../test/infra/aws2/clients/AWSSDKClientUtils.java |  5 ++
 ...=> AWSSecretsManagerLocalContainerService.java} | 27 ++--------
 .../camel/test/infra/aws2/services/Service.java    |  1 +
 7 files changed, 143 insertions(+), 25 deletions(-)

diff --git a/components/camel-aws/camel-aws-secrets-manager/pom.xml 
b/components/camel-aws/camel-aws-secrets-manager/pom.xml
index 9f09640..ecf341e 100644
--- a/components/camel-aws/camel-aws-secrets-manager/pom.xml
+++ b/components/camel-aws/camel-aws-secrets-manager/pom.xml
@@ -67,5 +67,30 @@
             <artifactId>log4j-slf4j-impl</artifactId>
             <scope>test</scope>
         </dependency>
+
+        <!-- test infra -->
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-test-infra-common</artifactId>
+            <version>${project.version}</version>
+            <type>test-jar</type>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-test-infra-aws-common</artifactId>
+            <version>${project.version}</version>
+            <type>test-jar</type>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-test-infra-aws-v2</artifactId>
+            <version>${project.version}</version>
+            <type>test-jar</type>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 </project>
diff --git 
a/components/camel-aws/camel-aws-secrets-manager/src/test/java/org/apache/camel/component/aws/secretsmanager/localstack/AwsSecretsManagerBaseTest.java
 
b/components/camel-aws/camel-aws-secrets-manager/src/test/java/org/apache/camel/component/aws/secretsmanager/localstack/AwsSecretsManagerBaseTest.java
new file mode 100644
index 0000000..1af7dfb
--- /dev/null
+++ 
b/components/camel-aws/camel-aws-secrets-manager/src/test/java/org/apache/camel/component/aws/secretsmanager/localstack/AwsSecretsManagerBaseTest.java
@@ -0,0 +1,40 @@
+/*
+ * 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.localstack;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.component.aws.secretsmanager.SecretsManagerComponent;
+import org.apache.camel.test.infra.aws.common.services.AWSService;
+import org.apache.camel.test.infra.aws2.clients.AWSSDKClientUtils;
+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;
+
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
+public class AwsSecretsManagerBaseTest extends CamelTestSupport {
+    @RegisterExtension
+    public static AWSService service = AWSServiceFactory.createKMSService();
+
+    @Override
+    protected CamelContext createCamelContext() throws Exception {
+        CamelContext context = super.createCamelContext();
+        SecretsManagerComponent smComponent = 
context.getComponent("aws-secrets-manager", SecretsManagerComponent.class);
+        
smComponent.getConfiguration().setSecretsManagerClient(AWSSDKClientUtils.newSecretsManagerClient());
+        return context;
+    }
+}
diff --git 
a/components/camel-aws/camel-aws-secrets-manager/src/test/java/org/apache/camel/component/aws/secretsmanager/localstack/SecretsManagerCreateSecretProducerLocalstackTest.java
 
b/components/camel-aws/camel-aws-secrets-manager/src/test/java/org/apache/camel/component/aws/secretsmanager/localstack/SecretsManagerCreateSecretProducerLocalstackTest.java
new file mode 100644
index 0000000..7cf5527
--- /dev/null
+++ 
b/components/camel-aws/camel-aws-secrets-manager/src/test/java/org/apache/camel/component/aws/secretsmanager/localstack/SecretsManagerCreateSecretProducerLocalstackTest.java
@@ -0,0 +1,62 @@
+/*
+ * 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.localstack;
+
+import org.apache.camel.EndpointInject;
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.aws.secretsmanager.SecretsManagerConstants;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.junit.jupiter.api.Test;
+import 
software.amazon.awssdk.services.secretsmanager.model.CreateSecretResponse;
+
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
+public class SecretsManagerCreateSecretProducerLocalstackTest extends 
AwsSecretsManagerBaseTest {
+
+    @EndpointInject("mock:result")
+    private MockEndpoint mock;
+
+    @Test
+    public void createSecretTest() throws Exception {
+
+        mock.expectedMessageCount(1);
+        Exchange exchange = template.request("direct:createSecret", new 
Processor() {
+            @Override
+            public void process(Exchange exchange) throws Exception {
+                
exchange.getIn().setHeader(SecretsManagerConstants.SECRET_NAME, "TestSecret4");
+                exchange.getIn().setBody("Body");
+            }
+        });
+
+        CreateSecretResponse resultGet = (CreateSecretResponse) 
exchange.getIn().getBody();
+        assertNotNull(resultGet);
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                from("direct:createSecret")
+                        
.to("aws-secrets-manager://test?operation=createSecret")
+                        .to("mock:result");
+            }
+        };
+    }
+}
diff --git a/test-infra/camel-test-infra-aws-v2/pom.xml 
b/test-infra/camel-test-infra-aws-v2/pom.xml
index 460b262..bda4146 100644
--- a/test-infra/camel-test-infra-aws-v2/pom.xml
+++ b/test-infra/camel-test-infra-aws-v2/pom.xml
@@ -116,6 +116,12 @@
 
         <dependency>
             <groupId>software.amazon.awssdk</groupId>
+            <artifactId>secretsmanager</artifactId>
+            <version>${aws-java-sdk2-version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>software.amazon.awssdk</groupId>
             <artifactId>sts</artifactId>
             <version>${aws-java-sdk2-version}</version>
         </dependency>
@@ -137,4 +143,4 @@
     </build>
 
 
-</project>
\ No newline at end of file
+</project>
diff --git 
a/test-infra/camel-test-infra-aws-v2/src/test/java/org/apache/camel/test/infra/aws2/clients/AWSSDKClientUtils.java
 
b/test-infra/camel-test-infra-aws-v2/src/test/java/org/apache/camel/test/infra/aws2/clients/AWSSDKClientUtils.java
index 5185eff..a254274 100644
--- 
a/test-infra/camel-test-infra-aws-v2/src/test/java/org/apache/camel/test/infra/aws2/clients/AWSSDKClientUtils.java
+++ 
b/test-infra/camel-test-infra-aws-v2/src/test/java/org/apache/camel/test/infra/aws2/clients/AWSSDKClientUtils.java
@@ -37,6 +37,7 @@ import software.amazon.awssdk.services.kinesis.KinesisClient;
 import software.amazon.awssdk.services.kms.KmsClient;
 import software.amazon.awssdk.services.lambda.LambdaClient;
 import software.amazon.awssdk.services.s3.S3Client;
+import software.amazon.awssdk.services.secretsmanager.SecretsManagerClient;
 import software.amazon.awssdk.services.sns.SnsClient;
 import software.amazon.awssdk.services.sqs.SqsClient;
 import software.amazon.awssdk.services.sts.StsClient;
@@ -166,6 +167,10 @@ public final class AWSSDKClientUtils {
         return newClient("Lambda", LambdaClient::builder, LambdaClient.class);
     }
 
+    public static SecretsManagerClient newSecretsManagerClient() {
+        return newClient("SecretsManager", SecretsManagerClient::builder, 
SecretsManagerClient.class);
+    }
+
     public static StsClient newSTSClient() {
         return newClient("STS", StsClient::builder, StsClient.class);
     }
diff --git 
a/test-infra/camel-test-infra-aws-v2/src/test/java/org/apache/camel/test/infra/aws2/services/Service.java
 
b/test-infra/camel-test-infra-aws-v2/src/test/java/org/apache/camel/test/infra/aws2/services/AWSSecretsManagerLocalContainerService.java
similarity index 62%
copy from 
test-infra/camel-test-infra-aws-v2/src/test/java/org/apache/camel/test/infra/aws2/services/Service.java
copy to 
test-infra/camel-test-infra-aws-v2/src/test/java/org/apache/camel/test/infra/aws2/services/AWSSecretsManagerLocalContainerService.java
index 2e2dcac..f7673d7 100644
--- 
a/test-infra/camel-test-infra-aws-v2/src/test/java/org/apache/camel/test/infra/aws2/services/Service.java
+++ 
b/test-infra/camel-test-infra-aws-v2/src/test/java/org/apache/camel/test/infra/aws2/services/AWSSecretsManagerLocalContainerService.java
@@ -17,30 +17,9 @@
 
 package org.apache.camel.test.infra.aws2.services;
 
-public enum Service {
-    CLOUD_WATCH("cloudwatch"),
-    EC2("ec2"),
-    EVENT_BRIDGE("eventbridge"),
-    IAM("iam"),
-    KINESIS("kinesis"),
-    KMS("kms"),
-    LAMBDA("lambda"),
-    S3("s3"),
-    SNS("sns"),
-    SQS("sqs"),
-    STS("sts");
+public class AWSSecretsManagerLocalContainerService extends 
AWSLocalContainerService {
 
-    private final String serviceName;
-
-    Service(String serviceName) {
-        this.serviceName = serviceName;
-    }
-
-    public String getServiceName() {
-        return serviceName;
-    }
-
-    public static String serviceName(Service service) {
-        return service.serviceName;
+    public AWSSecretsManagerLocalContainerService() {
+        super(Service.SECRETS_MANAGER);
     }
 }
diff --git 
a/test-infra/camel-test-infra-aws-v2/src/test/java/org/apache/camel/test/infra/aws2/services/Service.java
 
b/test-infra/camel-test-infra-aws-v2/src/test/java/org/apache/camel/test/infra/aws2/services/Service.java
index 2e2dcac..861064f 100644
--- 
a/test-infra/camel-test-infra-aws-v2/src/test/java/org/apache/camel/test/infra/aws2/services/Service.java
+++ 
b/test-infra/camel-test-infra-aws-v2/src/test/java/org/apache/camel/test/infra/aws2/services/Service.java
@@ -26,6 +26,7 @@ public enum Service {
     KMS("kms"),
     LAMBDA("lambda"),
     S3("s3"),
+    SECRETS_MANAGER("secretsmanager"),
     SNS("sns"),
     SQS("sqs"),
     STS("sts");

Reply via email to