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 c32775b29b5 CAMEL-21323 - Camel-AWS-Secrets-Manager: Add a PutSecretValue operation to producer (#15866) c32775b29b5 is described below commit c32775b29b546e45a52d21879299e3db3f12c3d3 Author: Andrea Cosentino <anco...@gmail.com> AuthorDate: Mon Oct 7 13:54:19 2024 +0200 CAMEL-21323 - Camel-AWS-Secrets-Manager: Add a PutSecretValue operation to producer (#15866) Signed-off-by: Andrea Cosentino <anco...@gmail.com> --- .../catalog/components/aws-secrets-manager.json | 4 +- .../aws/secretsmanager/aws-secrets-manager.json | 4 +- .../secretsmanager/SecretsManagerOperations.java | 3 +- .../aws/secretsmanager/SecretsManagerProducer.java | 58 ++++++++++++++-------- ...ManagerPutSecretValueProducerLocalstackIT.java} | 26 +++++----- ...etsManagerUpdateSecretProducerLocalstackIT.java | 12 ++--- 6 files changed, 60 insertions(+), 47 deletions(-) diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws-secrets-manager.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws-secrets-manager.json index 9c7d8c9103c..0e565b44391 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws-secrets-manager.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws-secrets-manager.json @@ -28,7 +28,7 @@ "binaryPayload": { "index": 0, "kind": "property", "displayName": "Binary Payload", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws.secretsmanager.SecretsManagerConfiguration", "configurationField": "configuration", "description": "Set if the secret is binary or not" }, "configuration": { "index": 1, "kind": "property", "displayName": "Configuration", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.aws.secretsmanager.SecretsManagerConfiguration", "deprecated": false, "autowired": false, "secret": false, "description": "Component configuration" }, "lazyStartProducer": { "index": 2, "kind": "property", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail [...] - "operation": { "index": 3, "kind": "property", "displayName": "Operation", "group": "producer", "label": "", "required": true, "type": "object", "javaType": "org.apache.camel.component.aws.secretsmanager.SecretsManagerOperations", "enum": [ "listSecrets", "createSecret", "getSecret", "batchGetSecret", "describeSecret", "deleteSecret", "rotateSecret", "updateSecret", "restoreSecret", "replicateSecretToRegions" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret" [...] + "operation": { "index": 3, "kind": "property", "displayName": "Operation", "group": "producer", "label": "", "required": true, "type": "object", "javaType": "org.apache.camel.component.aws.secretsmanager.SecretsManagerOperations", "enum": [ "listSecrets", "createSecret", "getSecret", "batchGetSecret", "describeSecret", "deleteSecret", "rotateSecret", "updateSecret", "restoreSecret", "replicateSecretToRegions", "putSecretValue" ], "deprecated": false, "deprecationNote": "", "autowired [...] "overrideEndpoint": { "index": 4, "kind": "property", "displayName": "Override Endpoint", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws.secretsmanager.SecretsManagerConfiguration", "configurationField": "configuration", "description": "Set the need for overriding the endpoint. This option needs to be us [...] "pojoRequest": { "index": 5, "kind": "property", "displayName": "Pojo Request", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws.secretsmanager.SecretsManagerConfiguration", "configurationField": "configuration", "description": "If we want to use a POJO request as body or not" }, "profileCredentialsName": { "index": 6, "kind": "property", "displayName": "Profile Credentials Name", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws.secretsmanager.SecretsManagerConfiguration", "configurationField": "configuration", "description": "If using a profile credentials provider, this parameter will set the p [...] @@ -64,7 +64,7 @@ "properties": { "label": { "index": 0, "kind": "path", "displayName": "Label", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws.secretsmanager.SecretsManagerConfiguration", "configurationField": "configuration", "description": "Logical name" }, "binaryPayload": { "index": 1, "kind": "parameter", "displayName": "Binary Payload", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws.secretsmanager.SecretsManagerConfiguration", "configurationField": "configuration", "description": "Set if the secret is binary or not" }, - "operation": { "index": 2, "kind": "parameter", "displayName": "Operation", "group": "producer", "label": "", "required": true, "type": "object", "javaType": "org.apache.camel.component.aws.secretsmanager.SecretsManagerOperations", "enum": [ "listSecrets", "createSecret", "getSecret", "batchGetSecret", "describeSecret", "deleteSecret", "rotateSecret", "updateSecret", "restoreSecret", "replicateSecretToRegions" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret [...] + "operation": { "index": 2, "kind": "parameter", "displayName": "Operation", "group": "producer", "label": "", "required": true, "type": "object", "javaType": "org.apache.camel.component.aws.secretsmanager.SecretsManagerOperations", "enum": [ "listSecrets", "createSecret", "getSecret", "batchGetSecret", "describeSecret", "deleteSecret", "rotateSecret", "updateSecret", "restoreSecret", "replicateSecretToRegions", "putSecretValue" ], "deprecated": false, "deprecationNote": "", "autowire [...] "overrideEndpoint": { "index": 3, "kind": "parameter", "displayName": "Override Endpoint", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws.secretsmanager.SecretsManagerConfiguration", "configurationField": "configuration", "description": "Set the need for overriding the endpoint. This option needs to be u [...] "pojoRequest": { "index": 4, "kind": "parameter", "displayName": "Pojo Request", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws.secretsmanager.SecretsManagerConfiguration", "configurationField": "configuration", "description": "If we want to use a POJO request as body or not" }, "profileCredentialsName": { "index": 5, "kind": "parameter", "displayName": "Profile Credentials Name", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws.secretsmanager.SecretsManagerConfiguration", "configurationField": "configuration", "description": "If using a profile credentials provider, this parameter will set the [...] diff --git a/components/camel-aws/camel-aws-secrets-manager/src/generated/resources/META-INF/org/apache/camel/component/aws/secretsmanager/aws-secrets-manager.json b/components/camel-aws/camel-aws-secrets-manager/src/generated/resources/META-INF/org/apache/camel/component/aws/secretsmanager/aws-secrets-manager.json index 9c7d8c9103c..0e565b44391 100644 --- a/components/camel-aws/camel-aws-secrets-manager/src/generated/resources/META-INF/org/apache/camel/component/aws/secretsmanager/aws-secrets-manager.json +++ b/components/camel-aws/camel-aws-secrets-manager/src/generated/resources/META-INF/org/apache/camel/component/aws/secretsmanager/aws-secrets-manager.json @@ -28,7 +28,7 @@ "binaryPayload": { "index": 0, "kind": "property", "displayName": "Binary Payload", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws.secretsmanager.SecretsManagerConfiguration", "configurationField": "configuration", "description": "Set if the secret is binary or not" }, "configuration": { "index": 1, "kind": "property", "displayName": "Configuration", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.aws.secretsmanager.SecretsManagerConfiguration", "deprecated": false, "autowired": false, "secret": false, "description": "Component configuration" }, "lazyStartProducer": { "index": 2, "kind": "property", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail [...] - "operation": { "index": 3, "kind": "property", "displayName": "Operation", "group": "producer", "label": "", "required": true, "type": "object", "javaType": "org.apache.camel.component.aws.secretsmanager.SecretsManagerOperations", "enum": [ "listSecrets", "createSecret", "getSecret", "batchGetSecret", "describeSecret", "deleteSecret", "rotateSecret", "updateSecret", "restoreSecret", "replicateSecretToRegions" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret" [...] + "operation": { "index": 3, "kind": "property", "displayName": "Operation", "group": "producer", "label": "", "required": true, "type": "object", "javaType": "org.apache.camel.component.aws.secretsmanager.SecretsManagerOperations", "enum": [ "listSecrets", "createSecret", "getSecret", "batchGetSecret", "describeSecret", "deleteSecret", "rotateSecret", "updateSecret", "restoreSecret", "replicateSecretToRegions", "putSecretValue" ], "deprecated": false, "deprecationNote": "", "autowired [...] "overrideEndpoint": { "index": 4, "kind": "property", "displayName": "Override Endpoint", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws.secretsmanager.SecretsManagerConfiguration", "configurationField": "configuration", "description": "Set the need for overriding the endpoint. This option needs to be us [...] "pojoRequest": { "index": 5, "kind": "property", "displayName": "Pojo Request", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws.secretsmanager.SecretsManagerConfiguration", "configurationField": "configuration", "description": "If we want to use a POJO request as body or not" }, "profileCredentialsName": { "index": 6, "kind": "property", "displayName": "Profile Credentials Name", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws.secretsmanager.SecretsManagerConfiguration", "configurationField": "configuration", "description": "If using a profile credentials provider, this parameter will set the p [...] @@ -64,7 +64,7 @@ "properties": { "label": { "index": 0, "kind": "path", "displayName": "Label", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws.secretsmanager.SecretsManagerConfiguration", "configurationField": "configuration", "description": "Logical name" }, "binaryPayload": { "index": 1, "kind": "parameter", "displayName": "Binary Payload", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws.secretsmanager.SecretsManagerConfiguration", "configurationField": "configuration", "description": "Set if the secret is binary or not" }, - "operation": { "index": 2, "kind": "parameter", "displayName": "Operation", "group": "producer", "label": "", "required": true, "type": "object", "javaType": "org.apache.camel.component.aws.secretsmanager.SecretsManagerOperations", "enum": [ "listSecrets", "createSecret", "getSecret", "batchGetSecret", "describeSecret", "deleteSecret", "rotateSecret", "updateSecret", "restoreSecret", "replicateSecretToRegions" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret [...] + "operation": { "index": 2, "kind": "parameter", "displayName": "Operation", "group": "producer", "label": "", "required": true, "type": "object", "javaType": "org.apache.camel.component.aws.secretsmanager.SecretsManagerOperations", "enum": [ "listSecrets", "createSecret", "getSecret", "batchGetSecret", "describeSecret", "deleteSecret", "rotateSecret", "updateSecret", "restoreSecret", "replicateSecretToRegions", "putSecretValue" ], "deprecated": false, "deprecationNote": "", "autowire [...] "overrideEndpoint": { "index": 3, "kind": "parameter", "displayName": "Override Endpoint", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws.secretsmanager.SecretsManagerConfiguration", "configurationField": "configuration", "description": "Set the need for overriding the endpoint. This option needs to be u [...] "pojoRequest": { "index": 4, "kind": "parameter", "displayName": "Pojo Request", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws.secretsmanager.SecretsManagerConfiguration", "configurationField": "configuration", "description": "If we want to use a POJO request as body or not" }, "profileCredentialsName": { "index": 5, "kind": "parameter", "displayName": "Profile Credentials Name", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws.secretsmanager.SecretsManagerConfiguration", "configurationField": "configuration", "description": "If using a profile credentials provider, this parameter will set the [...] diff --git a/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerOperations.java b/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerOperations.java index a4c6e51b627..b0c5c34741d 100644 --- a/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerOperations.java +++ b/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerOperations.java @@ -27,5 +27,6 @@ public enum SecretsManagerOperations { rotateSecret, updateSecret, restoreSecret, - replicateSecretToRegions + replicateSecretToRegions, + putSecretValue } diff --git a/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerProducer.java b/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerProducer.java index c691804ed1f..b5db8dcc888 100644 --- a/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerProducer.java +++ b/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerProducer.java @@ -36,29 +36,8 @@ import org.slf4j.LoggerFactory; import software.amazon.awssdk.awscore.exception.AwsServiceException; import software.amazon.awssdk.core.SdkBytes; import software.amazon.awssdk.services.secretsmanager.SecretsManagerClient; -import software.amazon.awssdk.services.secretsmanager.model.BatchGetSecretValueRequest; -import software.amazon.awssdk.services.secretsmanager.model.BatchGetSecretValueResponse; -import software.amazon.awssdk.services.secretsmanager.model.CreateSecretRequest; -import software.amazon.awssdk.services.secretsmanager.model.CreateSecretResponse; -import software.amazon.awssdk.services.secretsmanager.model.DeleteSecretRequest; -import software.amazon.awssdk.services.secretsmanager.model.DeleteSecretResponse; -import software.amazon.awssdk.services.secretsmanager.model.DescribeSecretRequest; -import software.amazon.awssdk.services.secretsmanager.model.DescribeSecretResponse; -import software.amazon.awssdk.services.secretsmanager.model.GetSecretValueRequest; -import software.amazon.awssdk.services.secretsmanager.model.GetSecretValueResponse; -import software.amazon.awssdk.services.secretsmanager.model.ListSecretsRequest; +import software.amazon.awssdk.services.secretsmanager.model.*; import software.amazon.awssdk.services.secretsmanager.model.ListSecretsRequest.Builder; -import software.amazon.awssdk.services.secretsmanager.model.ListSecretsResponse; -import software.amazon.awssdk.services.secretsmanager.model.ReplicaRegionType; -import software.amazon.awssdk.services.secretsmanager.model.ReplicateSecretToRegionsRequest; -import software.amazon.awssdk.services.secretsmanager.model.ReplicateSecretToRegionsResponse; -import software.amazon.awssdk.services.secretsmanager.model.RestoreSecretRequest; -import software.amazon.awssdk.services.secretsmanager.model.RestoreSecretResponse; -import software.amazon.awssdk.services.secretsmanager.model.RotateSecretRequest; -import software.amazon.awssdk.services.secretsmanager.model.RotateSecretResponse; -import software.amazon.awssdk.services.secretsmanager.model.SecretValueEntry; -import software.amazon.awssdk.services.secretsmanager.model.UpdateSecretRequest; -import software.amazon.awssdk.services.secretsmanager.model.UpdateSecretResponse; /** * A Producer which sends messages to the Amazon Secrets Manager Service SDK v2 @@ -109,6 +88,9 @@ public class SecretsManagerProducer extends DefaultProducer { case restoreSecret: restoreSecret(getEndpoint().getSecretsManagerClient(), exchange); break; + case putSecretValue: + putSecretValue(getEndpoint().getSecretsManagerClient(), exchange); + break; default: throw new IllegalArgumentException("Unsupported operation"); } @@ -469,6 +451,38 @@ public class SecretsManagerProducer extends DefaultProducer { exchange.getMessage().setHeader(SecretsManagerConstants.SECRET_VERSION_IDS, versionIds); } + private void putSecretValue(SecretsManagerClient secretsManagerClient, Exchange exchange) + throws InvalidPayloadException { + PutSecretValueRequest request = null; + PutSecretValueResponse result; + if (getConfiguration().isPojoRequest()) { + request = exchange.getIn().getMandatoryBody(PutSecretValueRequest.class); + } else { + PutSecretValueRequest.Builder builder = PutSecretValueRequest.builder(); + String payload = exchange.getIn().getMandatoryBody(String.class); + if (ObjectHelper.isNotEmpty(exchange.getIn().getHeader(SecretsManagerConstants.SECRET_ID))) { + String secretId = exchange.getIn().getHeader(SecretsManagerConstants.SECRET_ID, String.class); + builder.secretId(secretId); + } else { + throw new IllegalArgumentException("Secret Id must be specified"); + } + if (getConfiguration().isBinaryPayload()) { + builder.secretBinary(SdkBytes.fromUtf8String(Base64.getEncoder().encodeToString(payload.getBytes()))); + } else { + builder.secretString(payload); + } + request = builder.build(); + } + try { + result = secretsManagerClient.putSecretValue(request); + } catch (AwsServiceException ase) { + LOG.trace("Put Secret Value command returned the error code {}", ase.awsErrorDetails().errorCode()); + throw ase; + } + Message message = getMessageForResponse(exchange); + message.setBody(result); + } + public static Message getMessageForResponse(final Exchange exchange) { return exchange.getMessage(); } diff --git a/components/camel-aws/camel-aws-secrets-manager/src/test/java/org/apache/camel/component/aws/secretsmanager/integration/SecretsManagerUpdateSecretProducerLocalstackIT.java b/components/camel-aws/camel-aws-secrets-manager/src/test/java/org/apache/camel/component/aws/secretsmanager/integration/SecretsManagerPutSecretValueProducerLocalstackIT.java similarity index 79% copy from components/camel-aws/camel-aws-secrets-manager/src/test/java/org/apache/camel/component/aws/secretsmanager/integration/SecretsManagerUpdateSecretProducerLocalstackIT.java copy to components/camel-aws/camel-aws-secrets-manager/src/test/java/org/apache/camel/component/aws/secretsmanager/integration/SecretsManagerPutSecretValueProducerLocalstackIT.java index e95452d3679..182b54e21de 100644 --- a/components/camel-aws/camel-aws-secrets-manager/src/test/java/org/apache/camel/component/aws/secretsmanager/integration/SecretsManagerUpdateSecretProducerLocalstackIT.java +++ b/components/camel-aws/camel-aws-secrets-manager/src/test/java/org/apache/camel/component/aws/secretsmanager/integration/SecretsManagerPutSecretValueProducerLocalstackIT.java @@ -26,14 +26,12 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.DisabledIfSystemProperty; import software.amazon.awssdk.services.secretsmanager.model.CreateSecretResponse; -import software.amazon.awssdk.services.secretsmanager.model.UpdateSecretResponse; +import software.amazon.awssdk.services.secretsmanager.model.PutSecretValueResponse; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.*; @DisabledIfSystemProperty(named = "ci.env.name", matches = "github.com", disabledReason = "Flaky on GitHub Actions") -public class SecretsManagerUpdateSecretProducerLocalstackIT extends AwsSecretsManagerBaseTest { +public class SecretsManagerPutSecretValueProducerLocalstackIT extends AwsSecretsManagerBaseTest { @EndpointInject("mock:result") private MockEndpoint mock; @@ -45,7 +43,7 @@ public class SecretsManagerUpdateSecretProducerLocalstackIT extends AwsSecretsMa Exchange exchange = template.request("direct:createSecret", new Processor() { @Override public void process(Exchange exchange) { - exchange.getIn().setHeader(SecretsManagerConstants.SECRET_NAME, "TestSecret4"); + exchange.getIn().setHeader(SecretsManagerConstants.SECRET_NAME, "TestSecret10"); exchange.getIn().setBody("Body"); } }); @@ -53,18 +51,18 @@ public class SecretsManagerUpdateSecretProducerLocalstackIT extends AwsSecretsMa CreateSecretResponse resultGet = (CreateSecretResponse) exchange.getIn().getBody(); assertNotNull(resultGet); - exchange = template.request("direct:updateSecret", new Processor() { + exchange = template.request("direct:putSecretValue", new Processor() { @Override public void process(Exchange exchange) { exchange.getIn().setHeader(SecretsManagerConstants.SECRET_ID, resultGet.arn()); - exchange.getIn().setBody("Binary Body"); + exchange.getIn().setBody("Test New Value"); } }); Assertions.assertNotNull(exchange); - UpdateSecretResponse resultUpdate = (UpdateSecretResponse) exchange.getIn().getBody(); + PutSecretValueResponse resultUpdate = (PutSecretValueResponse) exchange.getIn().getBody(); assertTrue(resultUpdate.sdkHttpResponse().isSuccessful()); - assertEquals("TestSecret4", resultUpdate.name()); + assertEquals("TestSecret10", resultUpdate.name()); exchange = template.request("direct:getSecret", new Processor() { @Override @@ -75,7 +73,7 @@ public class SecretsManagerUpdateSecretProducerLocalstackIT extends AwsSecretsMa Assertions.assertNotNull(exchange); String secret = exchange.getIn().getBody(String.class); - assertEquals("Binary Body", secret); + assertEquals("Test New Value", secret); } @Override @@ -86,11 +84,11 @@ public class SecretsManagerUpdateSecretProducerLocalstackIT extends AwsSecretsMa from("direct:createSecret") .to("aws-secrets-manager://test?operation=createSecret"); - from("direct:updateSecret") - .to("aws-secrets-manager://test?operation=updateSecret&binaryPayload=true"); + from("direct:putSecretValue") + .to("aws-secrets-manager://test?operation=putSecretValue"); from("direct:getSecret") - .to("aws-secrets-manager://test?operation=getSecret&binaryPayload=true") + .to("aws-secrets-manager://test?operation=getSecret") .to("mock:result"); } }; diff --git a/components/camel-aws/camel-aws-secrets-manager/src/test/java/org/apache/camel/component/aws/secretsmanager/integration/SecretsManagerUpdateSecretProducerLocalstackIT.java b/components/camel-aws/camel-aws-secrets-manager/src/test/java/org/apache/camel/component/aws/secretsmanager/integration/SecretsManagerUpdateSecretProducerLocalstackIT.java index e95452d3679..20a4b949f54 100644 --- a/components/camel-aws/camel-aws-secrets-manager/src/test/java/org/apache/camel/component/aws/secretsmanager/integration/SecretsManagerUpdateSecretProducerLocalstackIT.java +++ b/components/camel-aws/camel-aws-secrets-manager/src/test/java/org/apache/camel/component/aws/secretsmanager/integration/SecretsManagerUpdateSecretProducerLocalstackIT.java @@ -39,9 +39,10 @@ public class SecretsManagerUpdateSecretProducerLocalstackIT extends AwsSecretsMa private MockEndpoint mock; @Test - public void createSecretTest() { + public void createSecretTest() throws InterruptedException { mock.expectedMessageCount(1); + mock.expectedBodiesReceived("Test Body"); Exchange exchange = template.request("direct:createSecret", new Processor() { @Override public void process(Exchange exchange) { @@ -57,7 +58,7 @@ public class SecretsManagerUpdateSecretProducerLocalstackIT extends AwsSecretsMa @Override public void process(Exchange exchange) { exchange.getIn().setHeader(SecretsManagerConstants.SECRET_ID, resultGet.arn()); - exchange.getIn().setBody("Binary Body"); + exchange.getIn().setBody("Test Body"); } }); Assertions.assertNotNull(exchange); @@ -74,8 +75,7 @@ public class SecretsManagerUpdateSecretProducerLocalstackIT extends AwsSecretsMa }); Assertions.assertNotNull(exchange); - String secret = exchange.getIn().getBody(String.class); - assertEquals("Binary Body", secret); + mock.assertIsSatisfied(); } @Override @@ -87,10 +87,10 @@ public class SecretsManagerUpdateSecretProducerLocalstackIT extends AwsSecretsMa .to("aws-secrets-manager://test?operation=createSecret"); from("direct:updateSecret") - .to("aws-secrets-manager://test?operation=updateSecret&binaryPayload=true"); + .to("aws-secrets-manager://test?operation=updateSecret"); from("direct:getSecret") - .to("aws-secrets-manager://test?operation=getSecret&binaryPayload=true") + .to("aws-secrets-manager://test?operation=getSecret") .to("mock:result"); } };