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
commit 997803f5b025db8cf96f91d698e766890daf9850 Author: Andrea Cosentino <anco...@gmail.com> AuthorDate: Mon Jul 11 15:37:31 2022 +0200 CAMEL-18208 - vault: allow to retrieve a specific secret version/revision - AWS Secret Manager --- .../SecretsManagerPropertiesFunction.java | 10 ++++++ .../SecretsManagerPropertiesSourceTestIT.java | 38 ++++++++++++++++++++++ 2 files changed, 48 insertions(+) diff --git a/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerPropertiesFunction.java b/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerPropertiesFunction.java index 12af442e1b6..220b4efe864 100644 --- a/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerPropertiesFunction.java +++ b/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerPropertiesFunction.java @@ -141,6 +141,12 @@ public class SecretsManagerPropertiesFunction extends ServiceSupport implements key = StringHelper.before(remainder, "/"); subkey = StringHelper.after(remainder, "/"); defaultValue = StringHelper.after(subkey, ":"); + if (ObjectHelper.isNotEmpty(defaultValue)) { + if (defaultValue.contains("@")) { + version = StringHelper.after(defaultValue, "@"); + defaultValue = StringHelper.before(defaultValue, "@"); + } + } if (subkey.contains(":")) { subkey = StringHelper.before(subkey, ":"); } @@ -178,6 +184,10 @@ public class SecretsManagerPropertiesFunction extends ServiceSupport implements GetSecretValueRequest request; GetSecretValueRequest.Builder builder = GetSecretValueRequest.builder(); builder.secretId(key); + System.err.println(key); + System.err.println(subkey); + System.err.println(defaultValue); + System.err.println(version); if (ObjectHelper.isNotEmpty(version)) { builder.versionId(version); } diff --git a/components/camel-aws/camel-aws-secrets-manager/src/test/java/org/apache/camel/component/aws/secretsmanager/integration/SecretsManagerPropertiesSourceTestIT.java b/components/camel-aws/camel-aws-secrets-manager/src/test/java/org/apache/camel/component/aws/secretsmanager/integration/SecretsManagerPropertiesSourceTestIT.java index 099b0233166..17b28d21ce9 100644 --- a/components/camel-aws/camel-aws-secrets-manager/src/test/java/org/apache/camel/component/aws/secretsmanager/integration/SecretsManagerPropertiesSourceTestIT.java +++ b/components/camel-aws/camel-aws-secrets-manager/src/test/java/org/apache/camel/component/aws/secretsmanager/integration/SecretsManagerPropertiesSourceTestIT.java @@ -415,4 +415,42 @@ public class SecretsManagerPropertiesSourceTestIT extends CamelTestSupport { template.sendBody("direct:version", "Hello World"); assertMockEndpointsSatisfied(); } + + @EnabledIfEnvironmentVariable(named = "CAMEL_VAULT_AWS_ACCESS_KEY", matches = ".*") + @EnabledIfEnvironmentVariable(named = "CAMEL_VAULT_AWS_SECRET_KEY", matches = ".*") + @EnabledIfEnvironmentVariable(named = "CAMEL_VAULT_AWS_REGION", matches = ".*") + @Test + public void testPropertiesWithVersionNoFieldDefaultValueNotExistentVersionFunction() throws Exception { + context.addRoutes(new RouteBuilder() { + @Override + public void configure() { + from("direct:version").setBody(simple("{{aws:test1:pippo@e8d0e680-a504-4b70-a9b2-acf5efe0ba29}}")).to("mock:bar"); + } + }); + context.start(); + + getMockEndpoint("mock:bar").expectedBodiesReceived("pippo"); + + template.sendBody("direct:version", "Hello World"); + assertMockEndpointsSatisfied(); + } + + @EnabledIfEnvironmentVariable(named = "CAMEL_VAULT_AWS_ACCESS_KEY", matches = ".*") + @EnabledIfEnvironmentVariable(named = "CAMEL_VAULT_AWS_SECRET_KEY", matches = ".*") + @EnabledIfEnvironmentVariable(named = "CAMEL_VAULT_AWS_REGION", matches = ".*") + @Test + public void testPropertiesWithVersionFieldAndDefaultValueFunction() throws Exception { + context.addRoutes(new RouteBuilder() { + @Override + public void configure() { + from("direct:version").setBody(simple("{{aws:test/id:pippo@e8d0e680-a504-4b70-a9b2-acf5efe0ba23}}")).to("mock:bar"); + } + }); + context.start(); + + getMockEndpoint("mock:bar").expectedBodiesReceived("27"); + + template.sendBody("direct:version", "Hello World"); + assertMockEndpointsSatisfied(); + } }