This is an automated email from the ASF dual-hosted git repository. acosentino pushed a commit to branch CAMEL-20159 in repository https://gitbox.apache.org/repos/asf/camel.git
commit 437e1bee7cd7c4b41d7c22652afab501b1034b6f Author: Andrea Cosentino <[email protected]> AuthorDate: Wed Nov 29 10:01:42 2023 +0100 CAMEL-20159 - Camel-AWS-Config: Add Test-infra module - Adding test leveraging the test-infra module 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 ++++++++++++++++++++++ 3 files changed, 129 insertions(+) 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"); + } + }; + } +}
