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

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

commit 86af324ddbe5518ff3890cbbe55aabb163d04ee7
Author: Andrea Cosentino <[email protected]>
AuthorDate: Wed Jul 25 11:29:54 2018 +0200

    CAMEL-12238 - Camel-AWS: Create an IAM component, createAccessKey operation
---
 .../camel/component/aws/iam/IAMOperations.java     |  3 ++-
 .../camel/component/aws/iam/IAMProducer.java       | 22 ++++++++++++++++++++++
 .../component/aws/iam/AmazonIAMClientMock.java     |  7 ++++++-
 .../component/aws/iam/IAMProducerSpringTest.java   | 20 ++++++++++++++++++++
 .../camel/component/aws/iam/IAMProducerTest.java   | 21 +++++++++++++++++++++
 .../aws/iam/IAMComponentSpringTest-context.xml     |  5 +++++
 6 files changed, 76 insertions(+), 2 deletions(-)

diff --git 
a/components/camel-aws/src/main/java/org/apache/camel/component/aws/iam/IAMOperations.java
 
b/components/camel-aws/src/main/java/org/apache/camel/component/aws/iam/IAMOperations.java
index 1ee3536..a2ff19e 100644
--- 
a/components/camel-aws/src/main/java/org/apache/camel/component/aws/iam/IAMOperations.java
+++ 
b/components/camel-aws/src/main/java/org/apache/camel/component/aws/iam/IAMOperations.java
@@ -18,5 +18,6 @@ package org.apache.camel.component.aws.iam;
 
 public enum IAMOperations {
 
-    listAccessKeys, createUser, deleteUser, listUsers
+    listAccessKeys, createUser, deleteUser, listUsers,
+    createAccessKey
 }
diff --git 
a/components/camel-aws/src/main/java/org/apache/camel/component/aws/iam/IAMProducer.java
 
b/components/camel-aws/src/main/java/org/apache/camel/component/aws/iam/IAMProducer.java
index 785bd11..ca5f38c 100644
--- 
a/components/camel-aws/src/main/java/org/apache/camel/component/aws/iam/IAMProducer.java
+++ 
b/components/camel-aws/src/main/java/org/apache/camel/component/aws/iam/IAMProducer.java
@@ -18,6 +18,8 @@ package org.apache.camel.component.aws.iam;
 
 import com.amazonaws.AmazonServiceException;
 import com.amazonaws.services.identitymanagement.AmazonIdentityManagement;
+import com.amazonaws.services.identitymanagement.model.CreateAccessKeyRequest;
+import com.amazonaws.services.identitymanagement.model.CreateAccessKeyResult;
 import com.amazonaws.services.identitymanagement.model.CreateUserRequest;
 import com.amazonaws.services.identitymanagement.model.CreateUserResult;
 import com.amazonaws.services.identitymanagement.model.DeleteUserRequest;
@@ -55,6 +57,9 @@ public class IAMProducer extends DefaultProducer {
         case listAccessKeys:
             listAccessKeys(getEndpoint().getIamClient(), exchange);
             break;
+        case createAccessKey:
+            createAccessKey(getEndpoint().getIamClient(), exchange);
+            break;
         case createUser:
             createUser(getEndpoint().getIamClient(), exchange);
             break;
@@ -151,4 +156,21 @@ public class IAMProducer extends DefaultProducer {
         Message message = getMessageForResponse(exchange);
         message.setBody(result);
     }
+    
+    private void createAccessKey(AmazonIdentityManagement iamClient, Exchange 
exchange) {
+        CreateAccessKeyRequest request = new CreateAccessKeyRequest();
+        if 
(ObjectHelper.isNotEmpty(exchange.getIn().getHeader(IAMConstants.USERNAME))) {
+            String userName = 
exchange.getIn().getHeader(IAMConstants.USERNAME, String.class);
+            request.withUserName(userName);
+        }
+        CreateAccessKeyResult result;
+        try {
+            result = iamClient.createAccessKey(request);
+        } catch (AmazonServiceException ase) {
+            LOG.trace("Create Access Key command returned the error code {}", 
ase.getErrorCode());
+            throw ase;
+        }
+        Message message = getMessageForResponse(exchange);
+        message.setBody(result);
+    }
 }
diff --git 
a/components/camel-aws/src/test/java/org/apache/camel/component/aws/iam/AmazonIAMClientMock.java
 
b/components/camel-aws/src/test/java/org/apache/camel/component/aws/iam/AmazonIAMClientMock.java
index 5ed1077..56ec407 100644
--- 
a/components/camel-aws/src/test/java/org/apache/camel/component/aws/iam/AmazonIAMClientMock.java
+++ 
b/components/camel-aws/src/test/java/org/apache/camel/component/aws/iam/AmazonIAMClientMock.java
@@ -75,7 +75,12 @@ public class AmazonIAMClientMock extends 
AmazonIdentityManagementClient {
 
     @Override
     public CreateAccessKeyResult createAccessKey(CreateAccessKeyRequest 
createAccessKeyRequest) {
-        throw new UnsupportedOperationException();
+        CreateAccessKeyResult res = new CreateAccessKeyResult();
+        AccessKey key = new AccessKey();
+        key.setAccessKeyId("test");
+        key.setSecretAccessKey("testSecret");
+        res.setAccessKey(key);
+        return res;
     }
 
     @Override
diff --git 
a/components/camel-aws/src/test/java/org/apache/camel/component/aws/iam/IAMProducerSpringTest.java
 
b/components/camel-aws/src/test/java/org/apache/camel/component/aws/iam/IAMProducerSpringTest.java
index 701b8a7..8fc4638 100644
--- 
a/components/camel-aws/src/test/java/org/apache/camel/component/aws/iam/IAMProducerSpringTest.java
+++ 
b/components/camel-aws/src/test/java/org/apache/camel/component/aws/iam/IAMProducerSpringTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.component.aws.iam;
 
+import com.amazonaws.services.identitymanagement.model.CreateAccessKeyResult;
 import com.amazonaws.services.identitymanagement.model.CreateUserResult;
 import com.amazonaws.services.identitymanagement.model.DeleteUserResult;
 import com.amazonaws.services.identitymanagement.model.ListAccessKeysResult;
@@ -105,6 +106,25 @@ public class IAMProducerSpringTest extends 
CamelSpringTestSupport {
         assertEquals(1, resultGet.getUsers().size());
         assertEquals("test", resultGet.getUsers().get(0).getUserName());
     }
+    
+    @Test
+    public void iamCreateAccessKeyTest() throws Exception {
+
+        mock.expectedMessageCount(1);
+        Exchange exchange = template.request("direct:createAccessKey", new 
Processor() {
+            @Override
+            public void process(Exchange exchange) throws Exception {
+                exchange.getIn().setHeader(IAMConstants.OPERATION, 
IAMOperations.createAccessKey);
+                exchange.getIn().setHeader(IAMConstants.USERNAME, "test");
+            }
+        });
+
+        assertMockEndpointsSatisfied();
+
+        CreateAccessKeyResult resultGet = (CreateAccessKeyResult) 
exchange.getIn().getBody();
+        assertEquals("test", resultGet.getAccessKey().getAccessKeyId());
+        assertEquals("testSecret", 
resultGet.getAccessKey().getSecretAccessKey());
+    }
 
     @Override
     protected ClassPathXmlApplicationContext createApplicationContext() {
diff --git 
a/components/camel-aws/src/test/java/org/apache/camel/component/aws/iam/IAMProducerTest.java
 
b/components/camel-aws/src/test/java/org/apache/camel/component/aws/iam/IAMProducerTest.java
index 4f9dada..66bcc2d 100644
--- 
a/components/camel-aws/src/test/java/org/apache/camel/component/aws/iam/IAMProducerTest.java
+++ 
b/components/camel-aws/src/test/java/org/apache/camel/component/aws/iam/IAMProducerTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.component.aws.iam;
 
+import com.amazonaws.services.identitymanagement.model.CreateAccessKeyResult;
 import com.amazonaws.services.identitymanagement.model.CreateUserResult;
 import com.amazonaws.services.identitymanagement.model.DeleteUserResult;
 import com.amazonaws.services.identitymanagement.model.ListAccessKeysResult;
@@ -106,6 +107,25 @@ public class IAMProducerTest extends CamelTestSupport {
         assertEquals(1, resultGet.getUsers().size());
         assertEquals("test", resultGet.getUsers().get(0).getUserName());
     }
+    
+    @Test
+    public void iamCreateAccessKeyTest() throws Exception {
+
+        mock.expectedMessageCount(1);
+        Exchange exchange = template.request("direct:createAccessKey", new 
Processor() {
+            @Override
+            public void process(Exchange exchange) throws Exception {
+                exchange.getIn().setHeader(IAMConstants.OPERATION, 
IAMOperations.createAccessKey);
+                exchange.getIn().setHeader(IAMConstants.USERNAME, "test");
+            }
+        });
+
+        assertMockEndpointsSatisfied();
+
+        CreateAccessKeyResult resultGet = (CreateAccessKeyResult) 
exchange.getIn().getBody();
+        assertEquals("test", resultGet.getAccessKey().getAccessKeyId());
+        assertEquals("testSecret", 
resultGet.getAccessKey().getSecretAccessKey());
+    }
 
     @Override
     protected JndiRegistry createRegistry() throws Exception {
@@ -127,6 +147,7 @@ public class IAMProducerTest extends CamelTestSupport {
                 
from("direct:createUser").to("aws-iam://test?iamClient=#amazonIAMClient&operation=createUser").to("mock:result");
                 
from("direct:deleteUser").to("aws-iam://test?iamClient=#amazonIAMClient&operation=deleteUser").to("mock:result");
                 
from("direct:listUsers").to("aws-iam://test?iamClient=#amazonIAMClient&operation=listUsers").to("mock:result");
+                
from("direct:createAccessKey").to("aws-iam://test?iamClient=#amazonIAMClient&operation=createAccessKey").to("mock:result");
             }
         };
     }
diff --git 
a/components/camel-aws/src/test/resources/org/apache/camel/component/aws/iam/IAMComponentSpringTest-context.xml
 
b/components/camel-aws/src/test/resources/org/apache/camel/component/aws/iam/IAMComponentSpringTest-context.xml
index 8d3cd52..0411c96 100644
--- 
a/components/camel-aws/src/test/resources/org/apache/camel/component/aws/iam/IAMComponentSpringTest-context.xml
+++ 
b/components/camel-aws/src/test/resources/org/apache/camel/component/aws/iam/IAMComponentSpringTest-context.xml
@@ -44,6 +44,11 @@
             <to 
uri="aws-iam://Test?iamClient=#amazonIAMClient&amp;operation=listUsers"/>
             <to uri="mock:result"/>
         </route>
+        <route>
+            <from uri="direct:createAccessKey"/>
+            <to 
uri="aws-iam://Test?iamClient=#amazonIAMClient&amp;operation=createAccessKey"/>
+            <to uri="mock:result"/>
+        </route>
     </camelContext>
     
     <bean id="amazonIAMClient" 
class="org.apache.camel.component.aws.iam.AmazonIAMClientMock"/>

Reply via email to