From 410fb3ba7b9a5b73bccaafb7321e33fc334a21d4 Mon Sep 17 00:00:00 2001 From: Jiri Ondrusek Date: Wed, 29 Jan 2025 13:49:24 +0100 Subject: [PATCH] Full support of aws-secret-manager --- .../components/aws-secrets-manager.yml | 6 +- .../extensions/aws-secrets-manager.adoc | 21 +++- extensions-jvm/pom.xml | 1 - .../aws-secrets-manager/deployment/pom.xml | 4 + .../AwsSecretsManagerProcessor.java | 14 --- .../aws-secrets-manager/pom.xml | 2 +- .../aws-secrets-manager/runtime/pom.xml | 5 + .../resources/META-INF/quarkus-extension.yaml | 3 +- extensions/pom.xml | 1 + .../aws2}/aws-secrets-manager/pom.xml | 29 ++++- .../manager/it/AwsSecretsManagerResource.java | 25 +++- .../it/AwsSecretsManagerRouteBuilder.java | 0 .../src/main/resources/application.properties | 0 .../manager/it/AwsSecretsManagerIT.java | 24 ++++ .../manager/it/AwsSecretsManagerTest.java | 117 ++++++++++++------ .../AwsSecretsManagerTestEnvCustomizer.java | 16 +-- .../manager/it/AwsSecretsManagerUtil.java | 13 +- .../CamelContextRefreshOnSecretRefreshIT.java | 28 +++++ ...amelContextRefreshOnSecretRefreshTest.java | 9 +- .../manager/it/ContextReloadTestProfile.java | 0 ...us.test.support.aws2.Aws2TestEnvCustomizer | 0 integration-test-groups/aws2/pom.xml | 1 + integration-tests-jvm/pom.xml | 1 - .../test/support/aws2/BaseAws2Resource.java | 13 +- .../test/support/aws2/Aws2TestEnvContext.java | 42 +++---- integration-tests/aws2-grouped/pom.xml | 38 ++++++ 26 files changed, 293 insertions(+), 120 deletions(-) rename {extensions-jvm => extensions}/aws-secrets-manager/deployment/pom.xml (93%) rename {extensions-jvm => extensions}/aws-secrets-manager/deployment/src/main/java/org/apache/camel/quarkus/component/aws/secrets/manager/deployment/AwsSecretsManagerProcessor.java (68%) rename {extensions-jvm => extensions}/aws-secrets-manager/pom.xml (96%) rename {extensions-jvm => extensions}/aws-secrets-manager/runtime/pom.xml (92%) rename {extensions-jvm => extensions}/aws-secrets-manager/runtime/src/main/resources/META-INF/quarkus-extension.yaml (97%) rename {integration-tests-jvm => integration-test-groups/aws2}/aws-secrets-manager/pom.xml (81%) rename {integration-tests-jvm => integration-test-groups/aws2}/aws-secrets-manager/src/main/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/AwsSecretsManagerResource.java (86%) rename {integration-tests-jvm => integration-test-groups/aws2}/aws-secrets-manager/src/main/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/AwsSecretsManagerRouteBuilder.java (100%) rename {integration-tests-jvm => integration-test-groups/aws2}/aws-secrets-manager/src/main/resources/application.properties (100%) create mode 100644 integration-test-groups/aws2/aws-secrets-manager/src/test/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/AwsSecretsManagerIT.java rename {integration-tests-jvm => integration-test-groups/aws2}/aws-secrets-manager/src/test/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/AwsSecretsManagerTest.java (65%) rename {integration-tests-jvm => integration-test-groups/aws2}/aws-secrets-manager/src/test/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/AwsSecretsManagerTestEnvCustomizer.java (73%) rename integration-tests-jvm/aws-secrets-manager/src/test/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/AwsSecretsManagerAbstractTest.java => integration-test-groups/aws2/aws-secrets-manager/src/test/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/AwsSecretsManagerUtil.java (88%) create mode 100644 integration-test-groups/aws2/aws-secrets-manager/src/test/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/CamelContextRefreshOnSecretRefreshIT.java rename {integration-tests-jvm => integration-test-groups/aws2}/aws-secrets-manager/src/test/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/CamelContextRefreshOnSecretRefreshTest.java (89%) rename {integration-tests-jvm => integration-test-groups/aws2}/aws-secrets-manager/src/test/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/ContextReloadTestProfile.java (100%) rename {integration-tests-jvm => integration-test-groups/aws2}/aws-secrets-manager/src/test/resources/META-INF/services/org.apache.camel.quarkus.test.support.aws2.Aws2TestEnvCustomizer (100%) diff --git a/docs/modules/ROOT/examples/components/aws-secrets-manager.yml b/docs/modules/ROOT/examples/components/aws-secrets-manager.yml index 3b55d4b5434a..7ff494dfc1eb 100644 --- a/docs/modules/ROOT/examples/components/aws-secrets-manager.yml +++ b/docs/modules/ROOT/examples/components/aws-secrets-manager.yml @@ -2,11 +2,11 @@ # This file was generated by camel-quarkus-maven-plugin:update-extension-doc-page cqArtifactId: camel-quarkus-aws-secrets-manager cqArtifactIdBase: aws-secrets-manager -cqNativeSupported: false -cqStatus: Preview +cqNativeSupported: true +cqStatus: Stable cqDeprecated: false cqJvmSince: 2.0.0 -cqNativeSince: n/a +cqNativeSince: 3.19.0 cqCamelPartName: aws-secrets-manager cqCamelPartTitle: AWS Secrets Manager cqCamelPartDescription: Manage secrets using AWS Secrets Manager. diff --git a/docs/modules/ROOT/pages/reference/extensions/aws-secrets-manager.adoc b/docs/modules/ROOT/pages/reference/extensions/aws-secrets-manager.adoc index e604116403ef..9c49874e0456 100644 --- a/docs/modules/ROOT/pages/reference/extensions/aws-secrets-manager.adoc +++ b/docs/modules/ROOT/pages/reference/extensions/aws-secrets-manager.adoc @@ -4,17 +4,17 @@ = AWS Secrets Manager :linkattrs: :cq-artifact-id: camel-quarkus-aws-secrets-manager -:cq-native-supported: false -:cq-status: Preview -:cq-status-deprecation: Preview +:cq-native-supported: true +:cq-status: Stable +:cq-status-deprecation: Stable :cq-description: Manage AWS Secrets Manager services using AWS SDK version 2.x. :cq-deprecated: false :cq-jvm-since: 2.0.0 -:cq-native-since: n/a +:cq-native-since: 3.19.0 ifeval::[{doc-show-badges} == true] [.badges] -[.badge-key]##JVM since##[.badge-supported]##2.0.0## [.badge-key]##Native##[.badge-unsupported]##unsupported## +[.badge-key]##JVM since##[.badge-supported]##2.0.0## [.badge-key]##Native since##[.badge-supported]##3.19.0## endif::[] Manage AWS Secrets Manager services using AWS SDK version 2.x. @@ -29,6 +29,10 @@ Please refer to the above link for usage and configuration details. [id="extensions-aws-secrets-manager-maven-coordinates"] == Maven coordinates +https://{link-quarkus-code-generator}/?extension-search=camel-quarkus-aws-secrets-manager[Create a new project with this extension on {link-quarkus-code-generator}, window="_blank"] + +Or add the coordinates to your existing project: + [source,xml] ---- @@ -39,3 +43,10 @@ Please refer to the above link for usage and configuration details. ifeval::[{doc-show-user-guide-link} == true] Check the xref:user-guide/index.adoc[User guide] for more information about writing Camel Quarkus applications. endif::[] + +[id="extensions-aws-secrets-manager-ssl-in-native-mode"] +== SSL in native mode + +This extension auto-enables SSL support in native mode. Hence you do not need to add +`quarkus.ssl.native=true` to your `application.properties` yourself. See also +https://quarkus.io/guides/native-and-ssl[Quarkus SSL guide]. diff --git a/extensions-jvm/pom.xml b/extensions-jvm/pom.xml index 76d2efd09a6b..a58351cc6fa4 100644 --- a/extensions-jvm/pom.xml +++ b/extensions-jvm/pom.xml @@ -37,7 +37,6 @@ asn1 asterisk - aws-secrets-manager aws-xray azure-cosmosdb azure-servicebus diff --git a/extensions-jvm/aws-secrets-manager/deployment/pom.xml b/extensions/aws-secrets-manager/deployment/pom.xml similarity index 93% rename from extensions-jvm/aws-secrets-manager/deployment/pom.xml rename to extensions/aws-secrets-manager/deployment/pom.xml index 3713891a741f..2e0beaf7525e 100644 --- a/extensions-jvm/aws-secrets-manager/deployment/pom.xml +++ b/extensions/aws-secrets-manager/deployment/pom.xml @@ -34,6 +34,10 @@ org.apache.camel.quarkus camel-quarkus-core-deployment + + org.apache.camel.quarkus + camel-quarkus-support-aws2-deployment + org.apache.camel.quarkus camel-quarkus-aws-secrets-manager diff --git a/extensions-jvm/aws-secrets-manager/deployment/src/main/java/org/apache/camel/quarkus/component/aws/secrets/manager/deployment/AwsSecretsManagerProcessor.java b/extensions/aws-secrets-manager/deployment/src/main/java/org/apache/camel/quarkus/component/aws/secrets/manager/deployment/AwsSecretsManagerProcessor.java similarity index 68% rename from extensions-jvm/aws-secrets-manager/deployment/src/main/java/org/apache/camel/quarkus/component/aws/secrets/manager/deployment/AwsSecretsManagerProcessor.java rename to extensions/aws-secrets-manager/deployment/src/main/java/org/apache/camel/quarkus/component/aws/secrets/manager/deployment/AwsSecretsManagerProcessor.java index cbeeb1f980e6..d606e1b61b57 100644 --- a/extensions-jvm/aws-secrets-manager/deployment/src/main/java/org/apache/camel/quarkus/component/aws/secrets/manager/deployment/AwsSecretsManagerProcessor.java +++ b/extensions/aws-secrets-manager/deployment/src/main/java/org/apache/camel/quarkus/component/aws/secrets/manager/deployment/AwsSecretsManagerProcessor.java @@ -17,11 +17,7 @@ package org.apache.camel.quarkus.component.aws.secrets.manager.deployment; import io.quarkus.deployment.annotations.BuildStep; -import io.quarkus.deployment.annotations.ExecutionTime; -import io.quarkus.deployment.annotations.Record; import io.quarkus.deployment.builditem.FeatureBuildItem; -import io.quarkus.deployment.pkg.steps.NativeOrNativeSourcesBuild; -import org.apache.camel.quarkus.core.JvmOnlyRecorder; import org.jboss.logging.Logger; class AwsSecretsManagerProcessor { @@ -33,14 +29,4 @@ class AwsSecretsManagerProcessor { FeatureBuildItem feature() { return new FeatureBuildItem(FEATURE); } - - /** - * Remove this once this extension starts supporting the native mode. - */ - @BuildStep(onlyIf = NativeOrNativeSourcesBuild.class) - @Record(value = ExecutionTime.RUNTIME_INIT) - void warnJvmInNative(JvmOnlyRecorder recorder) { - JvmOnlyRecorder.warnJvmInNative(LOG, FEATURE); // warn at build time - recorder.warnJvmInNative(FEATURE); // warn at runtime - } } diff --git a/extensions-jvm/aws-secrets-manager/pom.xml b/extensions/aws-secrets-manager/pom.xml similarity index 96% rename from extensions-jvm/aws-secrets-manager/pom.xml rename to extensions/aws-secrets-manager/pom.xml index a73ceac02465..3a7e6d8faf32 100644 --- a/extensions-jvm/aws-secrets-manager/pom.xml +++ b/extensions/aws-secrets-manager/pom.xml @@ -21,7 +21,7 @@ 4.0.0 org.apache.camel.quarkus - camel-quarkus-extensions-jvm + camel-quarkus-extensions 3.19.0-SNAPSHOT ../pom.xml diff --git a/extensions-jvm/aws-secrets-manager/runtime/pom.xml b/extensions/aws-secrets-manager/runtime/pom.xml similarity index 92% rename from extensions-jvm/aws-secrets-manager/runtime/pom.xml rename to extensions/aws-secrets-manager/runtime/pom.xml index e9f88dbf150c..f2130a59bd93 100644 --- a/extensions-jvm/aws-secrets-manager/runtime/pom.xml +++ b/extensions/aws-secrets-manager/runtime/pom.xml @@ -32,6 +32,7 @@ 2.0.0 + 3.19.0 @@ -47,6 +48,10 @@ org.jboss.logging commons-logging-jboss-logging + + org.apache.camel.quarkus + camel-quarkus-support-aws2 + diff --git a/extensions-jvm/aws-secrets-manager/runtime/src/main/resources/META-INF/quarkus-extension.yaml b/extensions/aws-secrets-manager/runtime/src/main/resources/META-INF/quarkus-extension.yaml similarity index 97% rename from extensions-jvm/aws-secrets-manager/runtime/src/main/resources/META-INF/quarkus-extension.yaml rename to extensions/aws-secrets-manager/runtime/src/main/resources/META-INF/quarkus-extension.yaml index ef8d8a9f1924..4699b7392f8e 100644 --- a/extensions-jvm/aws-secrets-manager/runtime/src/main/resources/META-INF/quarkus-extension.yaml +++ b/extensions/aws-secrets-manager/runtime/src/main/resources/META-INF/quarkus-extension.yaml @@ -26,9 +26,8 @@ description: "Manage AWS Secrets Manager services using AWS SDK version 2.x" metadata: icon-url: "https://raw.githubusercontent.com/apache/camel-website/main/antora-ui-camel/src/img/logo-d.svg" sponsor: "Apache Software Foundation" - unlisted: true guide: "https://camel.apache.org/camel-quarkus/latest/reference/extensions/aws-secrets-manager.html" categories: - "integration" status: - - "preview" + - "stable" diff --git a/extensions/pom.xml b/extensions/pom.xml index 263e200e8bd3..b55f335206e0 100644 --- a/extensions/pom.xml +++ b/extensions/pom.xml @@ -43,6 +43,7 @@ avro aws-bedrock + aws-secrets-manager aws2-athena aws2-cw aws2-ddb diff --git a/integration-tests-jvm/aws-secrets-manager/pom.xml b/integration-test-groups/aws2/aws-secrets-manager/pom.xml similarity index 81% rename from integration-tests-jvm/aws-secrets-manager/pom.xml rename to integration-test-groups/aws2/aws-secrets-manager/pom.xml index e64427907a06..79e67e7e90c4 100644 --- a/integration-tests-jvm/aws-secrets-manager/pom.xml +++ b/integration-test-groups/aws2/aws-secrets-manager/pom.xml @@ -23,7 +23,7 @@ org.apache.camel.quarkus camel-quarkus-build-parent-it 3.19.0-SNAPSHOT - ../../poms/build-parent-it/pom.xml + ../../../poms/build-parent-it/pom.xml camel-quarkus-integration-test-aws-secrets-manager @@ -72,6 +72,33 @@ + + native + + + native + + + + true + + + + + org.apache.maven.plugins + maven-failsafe-plugin + + + + integration-test + verify + + + + + + + virtualDependencies diff --git a/integration-tests-jvm/aws-secrets-manager/src/main/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/AwsSecretsManagerResource.java b/integration-test-groups/aws2/aws-secrets-manager/src/main/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/AwsSecretsManagerResource.java similarity index 86% rename from integration-tests-jvm/aws-secrets-manager/src/main/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/AwsSecretsManagerResource.java rename to integration-test-groups/aws2/aws-secrets-manager/src/main/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/AwsSecretsManagerResource.java index b75644da1baf..0f7279b06f3c 100644 --- a/integration-tests-jvm/aws-secrets-manager/src/main/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/AwsSecretsManagerResource.java +++ b/integration-test-groups/aws2/aws-secrets-manager/src/main/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/AwsSecretsManagerResource.java @@ -40,6 +40,7 @@ import org.apache.camel.component.aws.secretsmanager.SecretsManagerConstants; import org.apache.camel.component.aws.secretsmanager.SecretsManagerOperations; import org.apache.camel.impl.event.CamelContextReloadedEvent; +import org.apache.camel.quarkus.test.support.aws2.BaseAws2Resource; import org.apache.camel.spi.PeriodTaskResolver; import org.apache.camel.support.PluginHelper; import org.apache.camel.util.CollectionHelper; @@ -57,7 +58,7 @@ @Path("/aws-secrets-manager") @ApplicationScoped -public class AwsSecretsManagerResource { +public class AwsSecretsManagerResource extends BaseAws2Resource { private static final Logger LOG = Logger.getLogger(AwsSecretsManagerResource.class); @@ -69,6 +70,10 @@ public class AwsSecretsManagerResource { @Inject ProducerTemplate producerTemplate; + public AwsSecretsManagerResource() { + super(null, "camel.component.aws-secrets-manager"); + } + static final AtomicBoolean contextReloaded = new AtomicBoolean(false); void onReload(@Observes CamelContextReloadedEvent event) { @@ -79,7 +84,10 @@ void onReload(@Observes CamelContextReloadedEvent event) { @POST @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) - public Response post(@PathParam("operation") String operation, @QueryParam("body") String body, Map headers) + public Response post(@PathParam("operation") String operation, + @QueryParam("body") String body, + @QueryParam("useHeaders") boolean useHeaders, + Map headers) throws Exception { final Object resultBody; @@ -95,7 +103,12 @@ public Response post(@PathParam("operation") String operation, @QueryParam("body String region = headers.containsKey("region") ? String.format("region=%s&", headers.get("region")) : ""; - Exchange ex = producerTemplate.send(String.format("aws-secrets-manager://test?%soperation=%s", region, operation), + String url = useHeaders ? String.format("aws-secrets-manager://test?%suseDefaultCredentialsProvider=%s", + region, isUseDefaultCredentials()) + : String.format("aws-secrets-manager://test?%soperation=%s&useDefaultCredentialsProvider=%s", + region, operation, isUseDefaultCredentials()); + + Exchange ex = producerTemplate.send(url, e -> { e.getIn().setHeaders(headers); e.getIn().setBody(resultBody); @@ -114,10 +127,12 @@ public Response post(@PathParam("operation") String operation, @QueryParam("body case describeSecret: DescribeSecretResponse response = ex.getIn().getBody(DescribeSecretResponse.class); result = CollectionHelper.mapOf("sdkHttpSuccessful", response.sdkHttpResponse().isSuccessful(), - "name", response.name()); + "name", response.name(), "description", response.description(), + "description", response.description()); break; case getSecret: - result = ex.getIn().getBody(String.class); + result = Map.of("body", ex.getIn().getBody(String.class), + "version", ex.getIn().getHeader(SecretsManagerConstants.SECRET_VERSION_ID)); break; case deleteSecret: result = ex.getIn().getBody(DeleteSecretResponse.class).sdkHttpResponse().isSuccessful(); diff --git a/integration-tests-jvm/aws-secrets-manager/src/main/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/AwsSecretsManagerRouteBuilder.java b/integration-test-groups/aws2/aws-secrets-manager/src/main/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/AwsSecretsManagerRouteBuilder.java similarity index 100% rename from integration-tests-jvm/aws-secrets-manager/src/main/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/AwsSecretsManagerRouteBuilder.java rename to integration-test-groups/aws2/aws-secrets-manager/src/main/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/AwsSecretsManagerRouteBuilder.java diff --git a/integration-tests-jvm/aws-secrets-manager/src/main/resources/application.properties b/integration-test-groups/aws2/aws-secrets-manager/src/main/resources/application.properties similarity index 100% rename from integration-tests-jvm/aws-secrets-manager/src/main/resources/application.properties rename to integration-test-groups/aws2/aws-secrets-manager/src/main/resources/application.properties diff --git a/integration-test-groups/aws2/aws-secrets-manager/src/test/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/AwsSecretsManagerIT.java b/integration-test-groups/aws2/aws-secrets-manager/src/test/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/AwsSecretsManagerIT.java new file mode 100644 index 000000000000..0d6d458b79fd --- /dev/null +++ b/integration-test-groups/aws2/aws-secrets-manager/src/test/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/AwsSecretsManagerIT.java @@ -0,0 +1,24 @@ +/* + * 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.quarkus.component.aws.secrets.manager.it; + +import io.quarkus.test.junit.QuarkusIntegrationTest; + +@QuarkusIntegrationTest +class AwsSecretsManagerIT extends AwsSecretsManagerTest { + +} diff --git a/integration-tests-jvm/aws-secrets-manager/src/test/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/AwsSecretsManagerTest.java b/integration-test-groups/aws2/aws-secrets-manager/src/test/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/AwsSecretsManagerTest.java similarity index 65% rename from integration-tests-jvm/aws-secrets-manager/src/test/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/AwsSecretsManagerTest.java rename to integration-test-groups/aws2/aws-secrets-manager/src/test/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/AwsSecretsManagerTest.java index a867a28858da..89dca9f149f9 100644 --- a/integration-tests-jvm/aws-secrets-manager/src/test/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/AwsSecretsManagerTest.java +++ b/integration-test-groups/aws2/aws-secrets-manager/src/test/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/AwsSecretsManagerTest.java @@ -30,37 +30,45 @@ import org.apache.camel.quarkus.test.mock.backend.MockBackendDisabled; import org.apache.camel.quarkus.test.mock.backend.MockBackendUtils; import org.apache.camel.quarkus.test.support.aws2.Aws2TestResource; +import org.apache.camel.quarkus.test.support.aws2.BaseAWs2TestSupport; import org.junit.jupiter.api.Test; import org.testcontainers.shaded.org.awaitility.Awaitility; import static org.hamcrest.CoreMatchers.is; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.*; @QuarkusTest @QuarkusTestResource(Aws2TestResource.class) -public class AwsSecretsManagerTest extends AwsSecretsManagerAbstractTest { +public class AwsSecretsManagerTest extends BaseAWs2TestSupport { + + public AwsSecretsManagerTest() { + super("/aws-secrets-manager"); + } @Test public void testOperations() { final String secretToCreate = "loadFirst"; final String secret2ToCreate = "changeit2"; final String secretToUpdate = "loadSecond"; - final String nameToCreate = "CQTestSecret" + System.currentTimeMillis(); - final String name2ToCreate = "CQTestSecret2" + System.currentTimeMillis(); + final String nameToCreate = "CQTestSecret-operation-1-" + System.currentTimeMillis(); + final String name2ToCreate = "CQTestSecret2-operation-2-" + System.currentTimeMillis(); + final String description2ToCreate = "description-" + name2ToCreate; String createdArn = null; String createdArn2 = null; try { - createdArn = createSecret(nameToCreate, secretToCreate); + // >> create secret 1 + createdArn = AwsSecretsManagerUtil.createSecret(nameToCreate, secretToCreate); + // >> create secret 2 (with description) assertNotNull(createdArn); createdArn2 = RestAssured.given() .contentType(ContentType.JSON) - .body(Collections.singletonMap(SecretsManagerConstants.SECRET_NAME, name2ToCreate)) + .body(Map.of(SecretsManagerConstants.OPERATION, SecretsManagerOperations.createSecret, + SecretsManagerConstants.SECRET_NAME, name2ToCreate, + SecretsManagerConstants.SECRET_DESCRIPTION, description2ToCreate)) .queryParam("body", secret2ToCreate) + .queryParam("useHeaders", true) .post("/aws-secrets-manager/operation/" + SecretsManagerOperations.createSecret) .then() .statusCode(201) @@ -68,38 +76,52 @@ public void testOperations() { assertNotNull(createdArn); + // >> list both secrets final String finalCreatedArn = createdArn; final String finalCreatedArn2 = createdArn2; Awaitility.await().pollInterval(5, TimeUnit.SECONDS).atMost(1, TimeUnit.MINUTES).untilAsserted( () -> { - Map secrets = listSecrets(); + Map secrets = AwsSecretsManagerUtil.listSecrets(null); // contains both created secrets assertTrue(secrets.containsKey(finalCreatedArn)); assertTrue(secrets.containsKey(finalCreatedArn2)); }); + // >> use MAX_RESULTS header + Awaitility.await().pollDelay(5, TimeUnit.SECONDS).pollInterval(5, TimeUnit.SECONDS).atMost(1, TimeUnit.MINUTES) + .untilAsserted( + () -> { + Map secrets = AwsSecretsManagerUtil.listSecrets(1); + // contains both created secrets + assertTrue(secrets.size() == 1); + }); - String secret = RestAssured.given() + // >> get secret1 with version_id + var secret1recievedMap = RestAssured.given() .contentType(ContentType.JSON) .body(Collections.singletonMap(SecretsManagerConstants.SECRET_ID, createdArn)) .post("/aws-secrets-manager/operation/" + SecretsManagerOperations.getSecret) .then() .statusCode(201) - .extract().asString(); + .extract().as(Map.class); - assertEquals(secretToCreate, secret); + assertEquals(secretToCreate, secret1recievedMap.get("body")); + assertNotNull(secret1recievedMap.get("version")); - Map description = RestAssured.given() + //get description of secret1 + var descriptionMap = RestAssured.given() .contentType(ContentType.JSON) - .body(Collections.singletonMap(SecretsManagerConstants.SECRET_ID, createdArn)) + .body(Map.of(SecretsManagerConstants.SECRET_ID, createdArn2)) .post("/aws-secrets-manager/operation/" + SecretsManagerOperations.describeSecret) .then() .statusCode(201) .extract().as(Map.class); - assertEquals(2, description.size()); - assertEquals(true, description.get("sdkHttpSuccessful")); - assertEquals(nameToCreate, description.get("name")); + assertEquals(3, descriptionMap.size()); + assertEquals(true, descriptionMap.get("sdkHttpSuccessful")); + assertEquals(name2ToCreate, descriptionMap.get("name")); + assertEquals(description2ToCreate, descriptionMap.get("description")); + // >> delete secret 2 RestAssured.given() .contentType(ContentType.JSON) .body(Collections.singletonMap(SecretsManagerConstants.SECRET_ID, createdArn2)) @@ -110,7 +132,7 @@ public void testOperations() { Awaitility.await().pollInterval(5, TimeUnit.SECONDS).atMost(1, TimeUnit.MINUTES).untilAsserted( () -> { - Map secrets = listSecrets(); + Map secrets = AwsSecretsManagerUtil.listSecrets(null); // by default secrets marked for deletion are not listed (can be enabled with https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/secretsmanager/model/ListSecretsRequest.Builder.html#includePlannedDeletion(java.lang.Boolean)) // but on localstack they are present (with non-null deletedDate field) - see https://github.com/localstack/localstack/issues/11635 assertTrue(secrets.containsKey(finalCreatedArn)); @@ -126,26 +148,23 @@ public void testOperations() { // it needs lambda function ARN to work // TODO:See https://github.com/apache/camel-quarkus/issues/5300 - // RestAssured.given() - // .contentType(ContentType.JSON) - // .body(Collections.singletonMap(SecretsManagerConstants.SECRET_ID, createdArn)) - // .post("/aws-secrets-manager/operation/" + SecretsManagerOperations.rotateSecret) - // .then() - // .statusCode(201) - // .body(is("true")); - - updateSecret(createdArn, secretToUpdate); + // >> update value of the first secret + AwsSecretsManagerUtil.updateSecret(createdArn, secretToUpdate); - String updatedSecret = RestAssured.given() + // >> check value and version of secret1 after update + var secret1UpdatedMap = RestAssured.given() .contentType(ContentType.JSON) .body(Collections.singletonMap(SecretsManagerConstants.SECRET_ID, createdArn)) .post("/aws-secrets-manager/operation/" + SecretsManagerOperations.getSecret) .then() .statusCode(201) - .extract().asString(); + .extract().as(Map.class); - assertEquals(secretToUpdate, updatedSecret); + assertEquals(secretToUpdate, secret1UpdatedMap.get("body")); + assertNotNull(secret1UpdatedMap.get("version")); + assertNotEquals(secret1recievedMap.get("version"), secret1UpdatedMap.get("version")); + // >> restore secret2 RestAssured.given() .contentType(ContentType.JSON) .body(Collections.singletonMap(SecretsManagerConstants.SECRET_ID, createdArn2)) @@ -154,9 +173,10 @@ public void testOperations() { .statusCode(201) .body(is("true")); + // >> validate existence of restored secret by listSecrets Awaitility.await().pollInterval(5, TimeUnit.SECONDS).atMost(1, TimeUnit.MINUTES).untilAsserted( () -> { - Map secrets = listSecrets(); + Map secrets = AwsSecretsManagerUtil.listSecrets(null); //none of them is deleted, because they were restored assertTrue(secrets.containsKey(finalCreatedArn)); @@ -177,12 +197,27 @@ public void testOperations() { // .statusCode(201) // .body(is("true")); } finally { - if (!MockBackendUtils.startMockBackend(false)) { - // we must clean created secrets - // skip cleaning on localstack - deleteSecretImmediately(createdArn); - deleteSecretImmediately(createdArn2); - } + // we must clean created secrets + // also on localstack, if not the second run of operations would fail + AwsSecretsManagerUtil.deleteSecretImmediately(createdArn); + AwsSecretsManagerUtil.deleteSecretImmediately(createdArn2); + } + } + + @Override + public void testMethodForDefaultCredentialsProvider() { + final String secretToCreate = "loadFirst"; + final String nameToCreate = "CQTestSecret-provider-" + System.currentTimeMillis(); + String createdArn = null; + + try { + createdArn = AwsSecretsManagerUtil.createSecret(nameToCreate, secretToCreate); + assertNotNull(createdArn); + + } finally { + // we must clean created secrets + // also on localstack, if not the second run of operations would fail + AwsSecretsManagerUtil.deleteSecretImmediately(createdArn); } } @@ -203,7 +238,7 @@ public void testPropertyFunction() { final String secretToUpdate = "loadSecond"; try { final String nameToCreate = "CQTestSecretPropFunction" + System.currentTimeMillis(); - createdArn = createSecret(nameToCreate, secretToCreate); + createdArn = AwsSecretsManagerUtil.createSecret(nameToCreate, secretToCreate); assertNotNull(createdArn); RestAssured.get("/aws-secrets-manager/propertyFunction/" + nameToCreate) @@ -211,7 +246,7 @@ public void testPropertyFunction() { .statusCode(200) .body(is(AwsSecretsManagerRouteBuilder.MSG_FIRST)); - updateSecret(createdArn, secretToUpdate); + AwsSecretsManagerUtil.updateSecret(createdArn, secretToUpdate); RestAssured.get("/aws-secrets-manager/propertyFunction/" + nameToCreate) .then() @@ -221,7 +256,7 @@ public void testPropertyFunction() { if (!MockBackendUtils.startMockBackend(false)) { // we must clean created secrets // skip cleaning on localstack - deleteSecretImmediately(createdArn); + AwsSecretsManagerUtil.deleteSecretImmediately(createdArn); } } } diff --git a/integration-tests-jvm/aws-secrets-manager/src/test/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/AwsSecretsManagerTestEnvCustomizer.java b/integration-test-groups/aws2/aws-secrets-manager/src/test/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/AwsSecretsManagerTestEnvCustomizer.java similarity index 73% rename from integration-tests-jvm/aws-secrets-manager/src/test/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/AwsSecretsManagerTestEnvCustomizer.java rename to integration-test-groups/aws2/aws-secrets-manager/src/test/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/AwsSecretsManagerTestEnvCustomizer.java index c98631eb0026..1cb20a6a656a 100644 --- a/integration-tests-jvm/aws-secrets-manager/src/test/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/AwsSecretsManagerTestEnvCustomizer.java +++ b/integration-test-groups/aws2/aws-secrets-manager/src/test/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/AwsSecretsManagerTestEnvCustomizer.java @@ -36,23 +36,17 @@ public void customize(Aws2TestEnvContext envContext) { //get all properties from the context Map props = envContext.getProperties(); - //gather all properties (witch changed aws2 -> aws) - Map p2 = props.entrySet().stream() - .collect(Collectors.toMap(e -> e.getKey().replaceFirst("aws2", "aws"), e -> e.getValue())); - //remove client (to get rid of properties containing aws2) - envContext.removeClient(new Service[] { Service.SECRETSMANAGER }); - envContext.removeOverrideEndpoint(new Service[] { Service.SECRETSMANAGER }); - - for (Map.Entry e : p2.entrySet()) { + + for (Map.Entry e : props.entrySet()) { envContext.property(e.getKey(), e.getValue()); } if (MockBackendUtils.startMockBackend(false)) { envContext.property("camel.vault.aws.accessKey", - p2.get("camel.component.aws-secrets-manager.access-key")); + props.get("camel.component.aws-secrets-manager.access-key")); envContext.property("camel.vault.aws.secretKey", - p2.get("camel.component.aws-secrets-manager.secret-key")); - envContext.property("camel.vault.aws.region", p2.get("camel.component.aws-secrets-manager.region")); + props.get("camel.component.aws-secrets-manager.secret-key")); + envContext.property("camel.vault.aws.region", props.get("camel.component.aws-secrets-manager.region")); } else { envContext.property("camel.vault.aws.accessKey", System.getenv("AWS_ACCESS_KEY")); envContext.property("camel.vault.aws.secretKey", System.getenv("AWS_SECRET_KEY")); diff --git a/integration-tests-jvm/aws-secrets-manager/src/test/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/AwsSecretsManagerAbstractTest.java b/integration-test-groups/aws2/aws-secrets-manager/src/test/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/AwsSecretsManagerUtil.java similarity index 88% rename from integration-tests-jvm/aws-secrets-manager/src/test/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/AwsSecretsManagerAbstractTest.java rename to integration-test-groups/aws2/aws-secrets-manager/src/test/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/AwsSecretsManagerUtil.java index cc76947c9e9f..3144f5885c05 100644 --- a/integration-tests-jvm/aws-secrets-manager/src/test/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/AwsSecretsManagerAbstractTest.java +++ b/integration-test-groups/aws2/aws-secrets-manager/src/test/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/AwsSecretsManagerUtil.java @@ -30,9 +30,9 @@ import static org.hamcrest.CoreMatchers.is; -class AwsSecretsManagerAbstractTest { +class AwsSecretsManagerUtil { - protected String createSecret(String secretName, String secretValue) { + static String createSecret(String secretName, String secretValue) { String createdArn = Awaitility.await() .pollInterval(5, TimeUnit.SECONDS) .atMost(1, TimeUnit.MINUTES) @@ -54,7 +54,7 @@ protected String createSecret(String secretName, String secretValue) { return createdArn; } - protected void updateSecret(String secretArn, String newValue) { + static void updateSecret(String secretArn, String newValue) { RestAssured.given() .contentType(ContentType.JSON) .body(Collections.singletonMap(SecretsManagerConstants.SECRET_ID, secretArn)) @@ -65,17 +65,18 @@ protected void updateSecret(String secretArn, String newValue) { .body(is("true")); } - protected Map listSecrets() { + static Map listSecrets(Integer maxResults) { return RestAssured.given() .contentType(ContentType.JSON) - .body(Collections.emptyMap()) + .body(maxResults == null ? Collections.emptyMap() + : Collections.singletonMap(SecretsManagerConstants.MAX_RESULTS, maxResults)) .post("/aws-secrets-manager/operation/" + SecretsManagerOperations.listSecrets) .then() .statusCode(201) .extract().as(Map.class); } - protected void deleteSecretImmediately(String arn) { + static void deleteSecretImmediately(String arn) { if (arn != null) { Log.info("Deleting secret: " + arn); RestAssured.given() diff --git a/integration-test-groups/aws2/aws-secrets-manager/src/test/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/CamelContextRefreshOnSecretRefreshIT.java b/integration-test-groups/aws2/aws-secrets-manager/src/test/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/CamelContextRefreshOnSecretRefreshIT.java new file mode 100644 index 000000000000..872b71690404 --- /dev/null +++ b/integration-test-groups/aws2/aws-secrets-manager/src/test/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/CamelContextRefreshOnSecretRefreshIT.java @@ -0,0 +1,28 @@ +/* + * 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.quarkus.component.aws.secrets.manager.it; + +import io.quarkus.test.junit.QuarkusIntegrationTest; +import org.apache.camel.quarkus.test.EnabledIf; +import org.apache.camel.quarkus.test.mock.backend.MockBackendDisabled; + +@QuarkusIntegrationTest +// disabled on Localstack due to https://docs.localstack.cloud/references/coverage/coverage_cloudtrail/#lookupevents +@EnabledIf(MockBackendDisabled.class) +class CamelContextRefreshOnSecretRefreshIT extends CamelContextRefreshOnSecretRefreshTest { + +} diff --git a/integration-tests-jvm/aws-secrets-manager/src/test/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/CamelContextRefreshOnSecretRefreshTest.java b/integration-test-groups/aws2/aws-secrets-manager/src/test/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/CamelContextRefreshOnSecretRefreshTest.java similarity index 89% rename from integration-tests-jvm/aws-secrets-manager/src/test/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/CamelContextRefreshOnSecretRefreshTest.java rename to integration-test-groups/aws2/aws-secrets-manager/src/test/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/CamelContextRefreshOnSecretRefreshTest.java index 0a7d18f6a3d5..cd95540eb2ef 100644 --- a/integration-tests-jvm/aws-secrets-manager/src/test/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/CamelContextRefreshOnSecretRefreshTest.java +++ b/integration-test-groups/aws2/aws-secrets-manager/src/test/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/CamelContextRefreshOnSecretRefreshTest.java @@ -30,7 +30,6 @@ import org.apache.camel.quarkus.test.mock.backend.MockBackendDisabled; import org.apache.camel.quarkus.test.support.aws2.Aws2TestResource; import org.eclipse.microprofile.config.ConfigProvider; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.testcontainers.shaded.org.awaitility.Awaitility; @@ -41,14 +40,14 @@ @TestProfile(ContextReloadTestProfile.class) // disabled on Localstack due to https://docs.localstack.cloud/references/coverage/coverage_cloudtrail/#lookupevents @EnabledIf(MockBackendDisabled.class) -@Disabled("https://issues.apache.org/jira/browse/CAMEL-21324") -public class CamelContextRefreshOnSecretRefreshTest extends AwsSecretsManagerAbstractTest { +public class CamelContextRefreshOnSecretRefreshTest { @Test public void testCamelContextReloadOnSecretRefresh() { String secretArn = null; try { final String myUniqueSecretValue = "Uniqueee1234"; - secretArn = createSecret(ConfigProvider.getConfig().getValue("camel.vault.aws.secrets", String.class), + secretArn = AwsSecretsManagerUtil.createSecret( + ConfigProvider.getConfig().getValue("camel.vault.aws.secrets", String.class), myUniqueSecretValue); RestAssured.given() .contentType(ContentType.JSON) @@ -66,7 +65,7 @@ public void testCamelContextReloadOnSecretRefresh() { .body(is("true")); }); } finally { - deleteSecretImmediately(secretArn); + AwsSecretsManagerUtil.deleteSecretImmediately(secretArn); } } } diff --git a/integration-tests-jvm/aws-secrets-manager/src/test/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/ContextReloadTestProfile.java b/integration-test-groups/aws2/aws-secrets-manager/src/test/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/ContextReloadTestProfile.java similarity index 100% rename from integration-tests-jvm/aws-secrets-manager/src/test/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/ContextReloadTestProfile.java rename to integration-test-groups/aws2/aws-secrets-manager/src/test/java/org/apache/camel/quarkus/component/aws/secrets/manager/it/ContextReloadTestProfile.java diff --git a/integration-tests-jvm/aws-secrets-manager/src/test/resources/META-INF/services/org.apache.camel.quarkus.test.support.aws2.Aws2TestEnvCustomizer b/integration-test-groups/aws2/aws-secrets-manager/src/test/resources/META-INF/services/org.apache.camel.quarkus.test.support.aws2.Aws2TestEnvCustomizer similarity index 100% rename from integration-tests-jvm/aws-secrets-manager/src/test/resources/META-INF/services/org.apache.camel.quarkus.test.support.aws2.Aws2TestEnvCustomizer rename to integration-test-groups/aws2/aws-secrets-manager/src/test/resources/META-INF/services/org.apache.camel.quarkus.test.support.aws2.Aws2TestEnvCustomizer diff --git a/integration-test-groups/aws2/pom.xml b/integration-test-groups/aws2/pom.xml index be4cfb9b3703..9a78161665d4 100644 --- a/integration-test-groups/aws2/pom.xml +++ b/integration-test-groups/aws2/pom.xml @@ -37,6 +37,7 @@ + aws-secrets-manager aws2-cw aws2-ddb aws2-kinesis diff --git a/integration-tests-jvm/pom.xml b/integration-tests-jvm/pom.xml index b77c5ab692c7..bea2a1859e89 100644 --- a/integration-tests-jvm/pom.xml +++ b/integration-tests-jvm/pom.xml @@ -35,7 +35,6 @@ asn1 asterisk - aws-secrets-manager aws-xray azure-cosmosdb azure-servicebus diff --git a/integration-tests-support/aws2/src/main/java/org/apache/camel/quarkus/test/support/aws2/BaseAws2Resource.java b/integration-tests-support/aws2/src/main/java/org/apache/camel/quarkus/test/support/aws2/BaseAws2Resource.java index 14c3f3f6367d..b118da21458f 100644 --- a/integration-tests-support/aws2/src/main/java/org/apache/camel/quarkus/test/support/aws2/BaseAws2Resource.java +++ b/integration-tests-support/aws2/src/main/java/org/apache/camel/quarkus/test/support/aws2/BaseAws2Resource.java @@ -40,12 +40,18 @@ public class BaseAws2Resource { private boolean useDefaultCredentials; - private final String serviceName; + private final String serviceName, componentName; private boolean clearAwsredentials; public BaseAws2Resource(String serviceName) { this.serviceName = serviceName; + this.componentName = null; + } + + public BaseAws2Resource(String serviceName, String componentName) { + this.serviceName = serviceName; + this.componentName = componentName; } @Path("/setUseDefaultCredentialsProvider") @@ -69,9 +75,10 @@ public Response initializeDefaultCredentials(boolean initialize) throws Exceptio "Setting both System.properties `aws.secretAccessKey` and `aws.accessKeyId` to cover defaultCredentialsProviderTest."); //defaultCredentials provider gets the credentials from fixed location. One of them is system.properties, //therefore to succeed the test, system.properties has to be initialized with the values from the configuration + String component = componentName != null ? componentName : "camel.component.aws2-" + serviceName; Aws2Helper.setAwsSystemCredentials( - ConfigProvider.getConfig().getValue("camel.component.aws2-" + serviceName + ".access-key", String.class), - ConfigProvider.getConfig().getValue("camel.component.aws2-" + serviceName + ".secret-key", String.class)); + ConfigProvider.getConfig().getValue(component + ".access-key", String.class), + ConfigProvider.getConfig().getValue(component + ".secret-key", String.class)); } else { LOG.debug("Clearing both System.properties `aws.secretAccessKey` and `aws.accessKeyId`."); diff --git a/integration-tests-support/aws2/src/test/java/org/apache/camel/quarkus/test/support/aws2/Aws2TestEnvContext.java b/integration-tests-support/aws2/src/test/java/org/apache/camel/quarkus/test/support/aws2/Aws2TestEnvContext.java index 854c0d06bf2c..93688acc2275 100644 --- a/integration-tests-support/aws2/src/test/java/org/apache/camel/quarkus/test/support/aws2/Aws2TestEnvContext.java +++ b/integration-tests-support/aws2/src/test/java/org/apache/camel/quarkus/test/support/aws2/Aws2TestEnvContext.java @@ -70,16 +70,16 @@ public Aws2TestEnvContext(String accessKey, String secretKey, String region, boo localstack.ifPresent(ls -> { for (Service service : exportCredentialsServices) { - String s = camelServiceAcronym(service); + String s = camelServiceComponentName(service); if (s != null) { if (credentialsProvider == CredentialsProvider.staticProvider) { - properties.put("camel.component.aws2-" + s + ".access-key", accessKey); - properties.put("camel.component.aws2-" + s + ".secret-key", secretKey); + properties.put(s + ".access-key", accessKey); + properties.put(s + ".secret-key", secretKey); } - properties.put("camel.component.aws2-" + s + ".region", region); + properties.put(s + ".region", region); - properties.put("camel.component.aws2-" + s + ".override-endpoint", "true"); - properties.put("camel.component.aws2-" + s + ".uri-endpoint-override", + properties.put(s + ".override-endpoint", "true"); + properties.put(s + ".uri-endpoint-override", ls.getEndpointOverride(service).toString()); } } @@ -105,19 +105,19 @@ public Aws2TestEnvContext property(String key, String value) { */ public void removeClient(Service[] services) { for (Service service : services) { - String s = camelServiceAcronym(service); - properties.remove("camel.component.aws2-" + s + ".access-key"); - properties.remove("camel.component.aws2-" + s + ".secret-key"); - properties.remove("camel.component.aws2-" + s + ".region"); - properties.remove("camel.component.aws2-" + s + ".defaultCredentialsProvider"); + String s = camelServiceComponentName(service); + properties.remove(s + ".access-key"); + properties.remove(s + ".secret-key"); + properties.remove(s + ".region"); + properties.remove(s + ".defaultCredentialsProvider"); } } public void removeOverrideEndpoint(Service[] services) { for (Service service : services) { - String s = camelServiceAcronym(service); - properties.remove("camel.component.aws2-" + s + ".override-endpoint"); - properties.remove("camel.component.aws2-" + s + ".uri-endpoint-override"); + String s = camelServiceComponentName(service); + properties.remove(s + ".override-endpoint"); + properties.remove(s + ".uri-endpoint-override"); } } @@ -211,20 +211,20 @@ SdkClient client(Service service, Class clientType) { }); } - private static String camelServiceAcronym(Service service) { + private static String camelServiceComponentName(Service service) { switch (service) { case DYNAMODB: - return "ddb"; + return "camel.component.aws2-ddb"; case DYNAMODB_STREAMS: - return "ddbstream"; + return "camel.component.aws2-ddbstream"; case FIREHOSE: - return "kinesis-firehose"; + return "camel.component.aws2-kinesis-firehose"; case CLOUDWATCH: - return "cw"; + return "camel.component.aws2-cw"; case SECRETSMANAGER: - return "secrets-manager"; + return "camel.component.aws-secrets-manager"; default: - return service.name().toLowerCase(Locale.ROOT); + return "camel.component.aws2-" + service.name().toLowerCase(Locale.ROOT); } } diff --git a/integration-tests/aws2-grouped/pom.xml b/integration-tests/aws2-grouped/pom.xml index a82ea9a05e2f..9bbfdaad5fa8 100644 --- a/integration-tests/aws2-grouped/pom.xml +++ b/integration-tests/aws2-grouped/pom.xml @@ -48,10 +48,18 @@ io.quarkus quarkus-resteasy-jackson + + io.quarkus + quarkus-resteasy-jsonb + io.quarkus quarkus-resteasy-multipart + + org.apache.camel.quarkus + camel-quarkus-aws-secrets-manager + org.apache.camel.quarkus camel-quarkus-aws2-cw @@ -88,6 +96,10 @@ org.apache.camel.quarkus camel-quarkus-aws2-sqs + + org.apache.camel.quarkus + camel-quarkus-direct + org.apache.camel.quarkus camel-quarkus-integration-tests-support-aws2 @@ -197,6 +209,19 @@ + + org.apache.camel.quarkus + camel-quarkus-aws-secrets-manager-deployment + ${project.version} + pom + test + + + * + * + + + org.apache.camel.quarkus camel-quarkus-aws2-cw-deployment @@ -314,6 +339,19 @@ + + org.apache.camel.quarkus + camel-quarkus-direct-deployment + ${project.version} + pom + test + + + * + * + + +