You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2022/03/30 15:11:16 UTC

[camel] 01/02: CAMEL-17687 - Create a Camel Azure Key Vault component - Purge Deleted Secret

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

acosentino pushed a commit to branch purge-deleted-secret-val
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 290145ca6e8ff3390309e9754e39032bc2cbac4f
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Wed Mar 30 16:55:20 2022 +0200

    CAMEL-17687 - Create a Camel Azure Key Vault component - Purge Deleted Secret
---
 .../camel/component/azure/key/vault/KeyVaultOperation.java  |  3 ++-
 .../camel/component/azure/key/vault/KeyVaultProducer.java   | 12 ++++++++++++
 .../integration/operations/KeyVaultOperationsTest.java      | 13 +++++++++++++
 3 files changed, 27 insertions(+), 1 deletion(-)

diff --git a/components/camel-azure/camel-azure-key-vault/src/main/java/org/apache/camel/component/azure/key/vault/KeyVaultOperation.java b/components/camel-azure/camel-azure-key-vault/src/main/java/org/apache/camel/component/azure/key/vault/KeyVaultOperation.java
index d6fa441..e04d05c 100644
--- a/components/camel-azure/camel-azure-key-vault/src/main/java/org/apache/camel/component/azure/key/vault/KeyVaultOperation.java
+++ b/components/camel-azure/camel-azure-key-vault/src/main/java/org/apache/camel/component/azure/key/vault/KeyVaultOperation.java
@@ -19,5 +19,6 @@ package org.apache.camel.component.azure.key.vault;
 public enum KeyVaultOperation {
     createSecret,
     getSecret,
-    deleteSecret
+    deleteSecret,
+    purgeDeletedSecret
 }
diff --git a/components/camel-azure/camel-azure-key-vault/src/main/java/org/apache/camel/component/azure/key/vault/KeyVaultProducer.java b/components/camel-azure/camel-azure-key-vault/src/main/java/org/apache/camel/component/azure/key/vault/KeyVaultProducer.java
index 5b55f16..b1cc086 100644
--- a/components/camel-azure/camel-azure-key-vault/src/main/java/org/apache/camel/component/azure/key/vault/KeyVaultProducer.java
+++ b/components/camel-azure/camel-azure-key-vault/src/main/java/org/apache/camel/component/azure/key/vault/KeyVaultProducer.java
@@ -59,6 +59,9 @@ public class KeyVaultProducer extends DefaultProducer {
             case deleteSecret:
                 deleteSecret(exchange);
                 break;
+            case purgeDeletedSecret:
+                purgeDeletedSecret(exchange);
+                break;
             default:
                 throw new IllegalArgumentException("Unsupported operation");
         }
@@ -98,6 +101,15 @@ public class KeyVaultProducer extends DefaultProducer {
         message.setBody(p.getFinalResult());
     }
 
+    private void purgeDeletedSecret(Exchange exchange) throws InvalidPayloadException {
+        final String secretName = exchange.getMessage().getHeader(KeyVaultConstants.SECRET_NAME, String.class);
+        if (ObjectHelper.isEmpty(secretName)) {
+            throw new IllegalArgumentException("Secret Name must be specified for createSecret Operation");
+        }
+        getEndpoint().getSecretClient()
+                .purgeDeletedSecret(secretName);
+    }
+
     @Override
     public KeyVaultEndpoint getEndpoint() {
         return (KeyVaultEndpoint) super.getEndpoint();
diff --git a/components/camel-azure/camel-azure-key-vault/src/test/java/org/apache/camel/component/azure/key/vault/integration/operations/KeyVaultOperationsTest.java b/components/camel-azure/camel-azure-key-vault/src/test/java/org/apache/camel/component/azure/key/vault/integration/operations/KeyVaultOperationsTest.java
index 8477352a..75236eb 100644
--- a/components/camel-azure/camel-azure-key-vault/src/test/java/org/apache/camel/component/azure/key/vault/integration/operations/KeyVaultOperationsTest.java
+++ b/components/camel-azure/camel-azure-key-vault/src/test/java/org/apache/camel/component/azure/key/vault/integration/operations/KeyVaultOperationsTest.java
@@ -58,6 +58,9 @@ public class KeyVaultOperationsTest extends CamelTestSupport {
     @EndpointInject("mock:deleteSecret")
     private MockEndpoint deleteResult;
 
+    @EndpointInject("mock:purgeDeletedSecret")
+    private MockEndpoint purgeDeletedSecretResult;
+
     @Test
     public void sendInOnly() throws Exception {
         createResult.expectedMessageCount(1);
@@ -84,6 +87,12 @@ public class KeyVaultOperationsTest extends CamelTestSupport {
             }
         });
 
+        template.send("direct:purgeDeletedSecret", ExchangePattern.InOnly, new Processor() {
+            public void process(Exchange exchange) {
+                exchange.getMessage().setHeader(KeyVaultConstants.SECRET_NAME, "Test1");
+            }
+        });
+
         assertMockEndpointsSatisfied();
     }
 
@@ -104,6 +113,10 @@ public class KeyVaultOperationsTest extends CamelTestSupport {
                 from("direct:deleteSecret")
                         .to("azure-key-vault://{{vaultName}}?clientId=RAW({{clientId}})&clientSecret=RAW({{clientSecret}})&tenantId=RAW({{tenantId}})&operation=deleteSecret")
                         .to("mock:deleteSecret");
+
+                from("direct:purgeDeletedSecret")
+                        .to("azure-key-vault://{{vaultName}}?clientId=RAW({{clientId}})&clientSecret=RAW({{clientSecret}})&tenantId=RAW({{tenantId}})&operation=purgeDeletedSecret")
+                        .to("mock:purgeDeletedSecret");
             }
         };
     }