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 aca7932eed59bae354957e7659cb9ee05660b345 Author: Andrea Cosentino <[email protected]> AuthorDate: Tue Feb 22 11:28:17 2022 +0100 CAMEL-17691 - Camel Google Secret Manager: Add more operations - deleteSecret --- .../manager/GoogleSecretManagerProducer.java | 24 +++++++++++++--------- .../manager/integration/GoogleSecretManagerIT.java | 17 +++++++++++++++ 2 files changed, 31 insertions(+), 10 deletions(-) diff --git a/components/camel-google/camel-google-secrets-manager/src/main/java/org/apache/camel/component/google/secret/manager/GoogleSecretManagerProducer.java b/components/camel-google/camel-google-secrets-manager/src/main/java/org/apache/camel/component/google/secret/manager/GoogleSecretManagerProducer.java index 3f5b5f5..9bc631e 100644 --- a/components/camel-google/camel-google-secrets-manager/src/main/java/org/apache/camel/component/google/secret/manager/GoogleSecretManagerProducer.java +++ b/components/camel-google/camel-google-secrets-manager/src/main/java/org/apache/camel/component/google/secret/manager/GoogleSecretManagerProducer.java @@ -16,16 +16,7 @@ */ package org.apache.camel.component.google.secret.manager; -import com.google.cloud.secretmanager.v1.AccessSecretVersionRequest; -import com.google.cloud.secretmanager.v1.AccessSecretVersionResponse; -import com.google.cloud.secretmanager.v1.AddSecretVersionRequest; -import com.google.cloud.secretmanager.v1.ProjectName; -import com.google.cloud.secretmanager.v1.Replication; -import com.google.cloud.secretmanager.v1.Secret; -import com.google.cloud.secretmanager.v1.SecretManagerServiceClient; -import com.google.cloud.secretmanager.v1.SecretPayload; -import com.google.cloud.secretmanager.v1.SecretVersion; -import com.google.cloud.secretmanager.v1.SecretVersionName; +import com.google.cloud.secretmanager.v1.*; import com.google.protobuf.ByteString; import org.apache.camel.Exchange; import org.apache.camel.InvalidPayloadException; @@ -56,6 +47,9 @@ public class GoogleSecretManagerProducer extends DefaultProducer { case getSecretVersion: getSecretVersion(endpoint.getClient(), exchange); break; + case deleteSecret: + deleteSecret(endpoint.getClient(), exchange); + break; default: throw new IllegalArgumentException("Unsupported operation"); } @@ -103,6 +97,16 @@ public class GoogleSecretManagerProducer extends DefaultProducer { message.setBody(response.getPayload().getData().toStringUtf8()); } + private void deleteSecret(SecretManagerServiceClient client, Exchange exchange) throws InvalidPayloadException { + if (getConfiguration().isPojoRequest()) { + DeleteSecretRequest request = exchange.getIn().getMandatoryBody(DeleteSecretRequest.class); + client.deleteSecret(request); + } else { + String secretId = exchange.getMessage().getHeader(GoogleSecretManagerConstants.SECRET_ID, String.class); + client.deleteSecret(SecretName.of(getConfiguration().getProject(), secretId)); + } + } + private GoogleSecretManagerOperations determineOperation(Exchange exchange) { GoogleSecretManagerOperations operation = exchange.getIn().getHeader(GoogleSecretManagerConstants.OPERATION, GoogleSecretManagerOperations.class); diff --git a/components/camel-google/camel-google-secrets-manager/src/test/java/org/apache/camel/component/google/secret/manager/integration/GoogleSecretManagerIT.java b/components/camel-google/camel-google-secrets-manager/src/test/java/org/apache/camel/component/google/secret/manager/integration/GoogleSecretManagerIT.java index 0530675..55a6ef4 100644 --- a/components/camel-google/camel-google-secrets-manager/src/test/java/org/apache/camel/component/google/secret/manager/integration/GoogleSecretManagerIT.java +++ b/components/camel-google/camel-google-secrets-manager/src/test/java/org/apache/camel/component/google/secret/manager/integration/GoogleSecretManagerIT.java @@ -27,6 +27,7 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; @EnabledIfEnvironmentVariable(named = "GOOGLE_APPLICATION_CREDENTIALS", matches = ".*", disabledReason = "Application credentials were not provided") @@ -39,6 +40,8 @@ public class GoogleSecretManagerIT extends CamelTestSupport { private MockEndpoint mockSecret; @EndpointInject("mock:getSecret") private MockEndpoint mockGetSecret; + @EndpointInject("mock:deleteSecret") + private MockEndpoint mockDeleteSecret; @Override protected RouteBuilder createRouteBuilder() throws Exception { @@ -55,6 +58,10 @@ public class GoogleSecretManagerIT extends CamelTestSupport { + serviceAccountKeyFile + "&operation=getSecretVersion") .to("mock:getSecret"); + from("direct:deleteSecret").to("google-secret-manager://" + project + "?serviceAccountKey=" + + serviceAccountKeyFile + "&operation=deleteSecret") + .to("mock:deleteSecret"); + } }; } @@ -64,6 +71,7 @@ public class GoogleSecretManagerIT extends CamelTestSupport { mockSecret.expectedMessageCount(1); mockGetSecret.expectedMessageCount(1); + mockDeleteSecret.expectedMessageCount(1); template.send("direct:createSecret", new Processor() { @@ -91,6 +99,15 @@ public class GoogleSecretManagerIT extends CamelTestSupport { }); assertEquals("Hello", ex.getMessage().getBody()); + + ex = template.request("direct:deleteSecret", new Processor() { + @Override + public void process(Exchange exchange) throws Exception { + exchange.getMessage().setHeader(GoogleSecretManagerConstants.SECRET_ID, "test123"); + } + }); + + assertNotNull(ex.getMessage()); } }
