This is an automated email from the ASF dual-hosted git repository.

acosentino pushed a commit to branch CAMEL-21323
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 392c76ec40d7d160ed81d26a2acfab82fcac26ce
Author: Andrea Cosentino <anco...@gmail.com>
AuthorDate: Mon Oct 7 13:01:17 2024 +0200

    CAMEL-21323 - Camel-AWS-Secrets-Manager: Add a PutSecretValue operation to 
producer
    
    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");
             }
         };

Reply via email to