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 12:57:31 UTC

[camel] 11/13: CAMEL-17687 - Create a Camel Azure Key Vault component - Get Secret Operation

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 db222709795167e54f9ff5033ff9907b3d2aadbc
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Wed Mar 30 13:19:35 2022 +0200

    CAMEL-17687 - Create a Camel Azure Key Vault component - Get Secret Operation
---
 .../azure/key/vault/KeyVaultProducer.java          | 14 +++++++++
 .../operations/KeyVaultOperationsTest.java         | 35 +++++++++++++++++-----
 2 files changed, 41 insertions(+), 8 deletions(-)

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 00c8bd8..dc1fe4f 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
@@ -51,6 +51,9 @@ public class KeyVaultProducer extends DefaultProducer {
             case createSecret:
                 createSecret(exchange);
                 break;
+            case getSecret:
+                getSecret(exchange);
+                break;
             default:
                 throw new IllegalArgumentException("Unsupported operation");
         }
@@ -67,6 +70,17 @@ public class KeyVaultProducer extends DefaultProducer {
         message.setBody(p);
     }
 
+    private void getSecret(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");
+        }
+        KeyVaultSecret p = getEndpoint().getSecretClient()
+                .getSecret(secretName);
+        Message message = getMessageForResponse(exchange);
+        message.setBody(p.getValue());
+    }
+
     @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 73de7a5..e67b0e5 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
@@ -22,6 +22,7 @@ import org.apache.camel.ExchangePattern;
 import org.apache.camel.Processor;
 import org.apache.camel.ProducerTemplate;
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.azure.key.vault.KeyVaultConstants;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit5.CamelTestSupport;
 import org.junit.jupiter.api.Test;
@@ -39,19 +40,34 @@ import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
 @TestInstance(TestInstance.Lifecycle.PER_CLASS)
 public class KeyVaultOperationsTest extends CamelTestSupport {
 
-    @EndpointInject("direct:start")
+    @EndpointInject("direct:createSecret")
     private ProducerTemplate template;
 
-    @EndpointInject("mock:result")
-    private MockEndpoint result;
+    @EndpointInject("direct:getSecret")
+    private ProducerTemplate getTemplate;
+
+    @EndpointInject("mock:createSecret")
+    private MockEndpoint createResult;
+
+    @EndpointInject("mock:getSecret")
+    private MockEndpoint getResult;
 
     @Test
     public void sendInOnly() throws Exception {
-        result.expectedMessageCount(1);
+        createResult.expectedMessageCount(1);
+        getResult.expectedMessageCount(1);
+        getResult.expectedBodiesReceived("TestValue");
+
+        template.send("direct:createSecret", ExchangePattern.InOnly, new Processor() {
+            public void process(Exchange exchange) {
+                exchange.getMessage().setHeader(KeyVaultConstants.SECRET_NAME, "Test");
+                exchange.getIn().setBody("TestValue");
+            }
+        });
 
-        Exchange exchange = template.send("direct:start", ExchangePattern.InOnly, new Processor() {
+        template.send("direct:getSecret", ExchangePattern.InOnly, new Processor() {
             public void process(Exchange exchange) {
-                exchange.getIn().setBody("Test");
+                exchange.getMessage().setHeader(KeyVaultConstants.SECRET_NAME, "Test");
             }
         });
 
@@ -64,10 +80,13 @@ public class KeyVaultOperationsTest extends CamelTestSupport {
         return new RouteBuilder() {
             @Override
             public void configure() {
-                from("direct:start").startupOrder(1)
+                from("direct:createSecret")
                         .to("azure-key-vault://{{vaultName}}?clientId=RAW({{clientId}})&clientSecret=RAW({{clientSecret}})&tenantId=RAW({{tenantId}})")
-                        .to("mock:result");
+                        .to("mock:createSecret");
 
+                from("direct:getSecret")
+                        .to("azure-key-vault://{{vaultName}}?clientId=RAW({{clientId}})&clientSecret=RAW({{clientSecret}})&tenantId=RAW({{tenantId}})&operation=getSecret")
+                        .to("mock:getSecret");
             }
         };
     }