This is an automated email from the ASF dual-hosted git repository.
acosentino pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new 83aac223453 CAMEL-20159 - Camel-AWS-Config: Add Test-infra module
(#12250)
83aac223453 is described below
commit 83aac2234538dc29ffdd862b4c5062271cb90a2b
Author: Andrea Cosentino <[email protected]>
AuthorDate: Wed Nov 29 10:59:53 2023 +0100
CAMEL-20159 - Camel-AWS-Config: Add Test-infra module (#12250)
* CAMEL-20159 - Camel-AWS-Config: Add Test-infra module
Signed-off-by: Andrea Cosentino <[email protected]>
* CAMEL-20159 - Camel-AWS-Config: Add Test-infra module - Adding test
leveraging the test-infra module
Signed-off-by: Andrea Cosentino <[email protected]>
---------
Signed-off-by: Andrea Cosentino <[email protected]>
---
components/camel-aws/camel-aws-config/pom.xml | 9 +++
.../aws/config/integration/AWSConfigBase.java | 40 +++++++++++
.../config/integration/AWSConfigProducerIT.java | 80 ++++++++++++++++++++++
test-infra/camel-test-infra-aws-v2/pom.xml | 6 ++
.../test/infra/aws2/clients/AWSSDKClientUtils.java | 5 ++
...ce.java => AWSConfigLocalContainerService.java} | 30 +-------
.../infra/aws2/services/AWSServiceFactory.java | 4 ++
.../camel/test/infra/aws2/services/Service.java | 1 +
8 files changed, 148 insertions(+), 27 deletions(-)
diff --git a/components/camel-aws/camel-aws-config/pom.xml
b/components/camel-aws/camel-aws-config/pom.xml
index c9146924215..e9b8b4609e2 100644
--- a/components/camel-aws/camel-aws-config/pom.xml
+++ b/components/camel-aws/camel-aws-config/pom.xml
@@ -61,6 +61,15 @@
<artifactId>camel-test-junit5</artifactId>
<scope>test</scope>
</dependency>
+
+ <!-- test infra -->
+ <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>
<dependency>
<groupId>org.awaitility</groupId>
<artifactId>awaitility</artifactId>
diff --git
a/components/camel-aws/camel-aws-config/src/test/java/org/apache/camel/component/aws/config/integration/AWSConfigBase.java
b/components/camel-aws/camel-aws-config/src/test/java/org/apache/camel/component/aws/config/integration/AWSConfigBase.java
new file mode 100644
index 00000000000..ab80acb5898
--- /dev/null
+++
b/components/camel-aws/camel-aws-config/src/test/java/org/apache/camel/component/aws/config/integration/AWSConfigBase.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.config.integration;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.component.aws.config.AWSConfigComponent;
+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 AWSConfigBase extends CamelTestSupport {
+ @RegisterExtension
+ public static AWSService service = AWSServiceFactory.createConfigService();
+
+ @Override
+ protected CamelContext createCamelContext() throws Exception {
+ CamelContext context = super.createCamelContext();
+ AWSConfigComponent config = context.getComponent("aws-config",
AWSConfigComponent.class);
+
config.getConfiguration().setConfigClient(AWSSDKClientUtils.newConfigClient());
+ return context;
+ }
+}
diff --git
a/components/camel-aws/camel-aws-config/src/test/java/org/apache/camel/component/aws/config/integration/AWSConfigProducerIT.java
b/components/camel-aws/camel-aws-config/src/test/java/org/apache/camel/component/aws/config/integration/AWSConfigProducerIT.java
new file mode 100644
index 00000000000..5f6ad069176
--- /dev/null
+++
b/components/camel-aws/camel-aws-config/src/test/java/org/apache/camel/component/aws/config/integration/AWSConfigProducerIT.java
@@ -0,0 +1,80 @@
+/*
+ * 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.config.integration;
+
+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.config.AWSConfigConstants;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.junit.jupiter.api.Test;
+import software.amazon.awssdk.services.config.model.DeleteConfigRuleResponse;
+import software.amazon.awssdk.services.config.model.PutConfigRuleResponse;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+public class AWSConfigProducerIT extends AWSConfigBase {
+
+ @EndpointInject("mock:result")
+ private MockEndpoint mock;
+
+ @Test
+ public void PutAndRemoveRule() {
+
+ mock.expectedMessageCount(1);
+ Exchange exchange = template.request("direct:putConfigRule", new
Processor() {
+ @Override
+ public void process(Exchange exchange) {
+
+ exchange.getMessage().setHeader(AWSConfigConstants.SOURCE,
"AWS");
+
exchange.getMessage().setHeader(AWSConfigConstants.RULE_SOURCE_IDENTIFIER,
"S3_LIFECYCLE_POLICY_CHECK");
+ exchange.getMessage().setHeader(AWSConfigConstants.RULE_NAME,
"Test");
+ }
+ });
+
+ PutConfigRuleResponse resultGet = (PutConfigRuleResponse)
exchange.getIn().getBody();
+ assertTrue(resultGet.sdkHttpResponse().isSuccessful());
+
+ exchange = template.request("direct:removeConfigRule", new Processor()
{
+ @Override
+ public void process(Exchange exchange) {
+
+ exchange.getMessage().setHeader(AWSConfigConstants.RULE_NAME,
"Test");
+ }
+ });
+
+ DeleteConfigRuleResponse deleteResponse = (DeleteConfigRuleResponse)
exchange.getIn().getBody();
+ assertTrue(deleteResponse.sdkHttpResponse().isSuccessful());
+ }
+
+ @Override
+ protected RouteBuilder createRouteBuilder() {
+ return new RouteBuilder() {
+ @Override
+ public void configure() {
+ from("direct:putConfigRule")
+ .to("aws-config://test?operation=putConfigRule")
+ .to("mock:result");
+
+ from("direct:removeConfigRule")
+ .to("aws-config://test?operation=removeConfigRule")
+ .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 857d11a15ba..4f9330ec4a6 100644
--- a/test-infra/camel-test-infra-aws-v2/pom.xml
+++ b/test-infra/camel-test-infra-aws-v2/pom.xml
@@ -129,6 +129,12 @@
<version>${aws-java-sdk2-version}</version>
</dependency>
+ <dependency>
+ <groupId>software.amazon.awssdk</groupId>
+ <artifactId>config</artifactId>
+ <version>${aws-java-sdk2-version}</version>
+ </dependency>
+
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>apache-client</artifactId>
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 c552483515b..fc31a4896f5 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
@@ -30,6 +30,7 @@ import
software.amazon.awssdk.awscore.client.builder.AwsClientBuilder;
import software.amazon.awssdk.core.SdkClient;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.cloudwatch.CloudWatchClient;
+import software.amazon.awssdk.services.config.ConfigClient;
import software.amazon.awssdk.services.dynamodb.DynamoDbClient;
import software.amazon.awssdk.services.ec2.Ec2Client;
import software.amazon.awssdk.services.eventbridge.EventBridgeClient;
@@ -143,6 +144,10 @@ public final class AWSSDKClientUtils {
return newClient("SNS", SnsClient::builder);
}
+ public static ConfigClient newConfigClient() {
+ return newClient("Config", ConfigClient::builder);
+ }
+
public static CloudWatchClient newCloudWatchClient() {
return newClient("Cloud Watch", CloudWatchClient::builder);
}
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/AWSConfigLocalContainerService.java
similarity index 59%
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/AWSConfigLocalContainerService.java
index b79861e21e2..63e0aa5951b 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/AWSConfigLocalContainerService.java
@@ -17,32 +17,8 @@
package org.apache.camel.test.infra.aws2.services;
-public enum Service {
- CLOUD_WATCH("cloudwatch"),
- DYNAMODB("dynamodb"),
- EC2("ec2"),
- EVENT_BRIDGE("eventbridge"),
- IAM("iam"),
- KINESIS("kinesis"),
- KMS("kms"),
- LAMBDA("lambda"),
- S3("s3"),
- SECRETS_MANAGER("secretsmanager"),
- SNS("sns"),
- SQS("sqs"),
- STS("sts");
-
- 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 class AWSConfigLocalContainerService extends AWSLocalContainerService {
+ public AWSConfigLocalContainerService() {
+ super(Service.CONFIG);
}
}
diff --git
a/test-infra/camel-test-infra-aws-v2/src/test/java/org/apache/camel/test/infra/aws2/services/AWSServiceFactory.java
b/test-infra/camel-test-infra-aws-v2/src/test/java/org/apache/camel/test/infra/aws2/services/AWSServiceFactory.java
index 91f3af28acd..dcb06c49cb6 100644
---
a/test-infra/camel-test-infra-aws-v2/src/test/java/org/apache/camel/test/infra/aws2/services/AWSServiceFactory.java
+++
b/test-infra/camel-test-infra-aws-v2/src/test/java/org/apache/camel/test/infra/aws2/services/AWSServiceFactory.java
@@ -59,6 +59,10 @@ public final class AWSServiceFactory {
return createService(AWSSNSLocalContainerService::new);
}
+ public static AWSService createConfigService() {
+ return createService(AWSConfigLocalContainerService::new);
+ }
+
public static AWSService createCloudWatchService() {
return createService(AWSCloudWatchLocalContainerService::new);
}
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 b79861e21e2..c3c383bbbd2 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
@@ -19,6 +19,7 @@ package org.apache.camel.test.infra.aws2.services;
public enum Service {
CLOUD_WATCH("cloudwatch"),
+ CONFIG("config"),
DYNAMODB("dynamodb"),
EC2("ec2"),
EVENT_BRIDGE("eventbridge"),