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 65feb73d830d6d4a3138b88184f215c0c843541d Author: Andrea Cosentino <anco...@gmail.com> AuthorDate: Wed Mar 2 08:12:02 2022 +0100 CAMEL-17730 - Camel-AWS Secret Manager Properties Source: if the subkey contains a default value the actual won't substitute correctly the secret --- .../SecretsManagerPropertiesFunction.java | 3 ++ .../SecretsManagerPropertiesSourceTestIT.java | 42 ++++++++++++++++++++++ 2 files changed, 45 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 124a554..a04ca59 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,9 @@ public class SecretsManagerPropertiesFunction extends ServiceSupport implements key = StringHelper.before(remainder, "/"); subkey = StringHelper.after(remainder, "/"); defaultValue = StringHelper.after(subkey, ":"); + if (subkey.contains(":")) { + subkey = StringHelper.before(subkey, ":"); + } } else if (remainder.contains(":")) { key = StringHelper.before(remainder, ":"); defaultValue = StringHelper.after(remainder, ":"); 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 b5a0870..6ffd9b9 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 @@ -297,4 +297,46 @@ public class SecretsManagerPropertiesSourceTestIT extends CamelTestSupport { template.sendBody("direct:username", "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 testPropertiesWithDefaultFunction() throws Exception { + context.addRoutes(new RouteBuilder() { + @Override + public void configure() throws Exception { + from("direct:username").setBody(simple("{{aws:postgresql/username:oscerd}}")).to("mock:bar"); + from("direct:password").setBody(simple("{{aws:postgresql/password:password}}")).to("mock:bar"); + } + }); + context.start(); + + getMockEndpoint("mock:bar").expectedBodiesReceived("postgres", "secret"); + + template.sendBody("direct:username", "Hello World"); + template.sendBody("direct:password", "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 testPropertiesWithDefaultNotExistentFunction() throws Exception { + context.addRoutes(new RouteBuilder() { + @Override + public void configure() throws Exception { + from("direct:username").setBody(simple("{{aws:db_sample/username:oscerd}}")).to("mock:bar"); + from("direct:password").setBody(simple("{{aws:db_sample/password:password}}")).to("mock:bar"); + } + }); + context.start(); + + getMockEndpoint("mock:bar").expectedBodiesReceived("oscerd", "password"); + + template.sendBody("direct:username", "Hello World"); + template.sendBody("direct:password", "Hello World"); + assertMockEndpointsSatisfied(); + } }