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");