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 93fa169bcce161965ed15dae0bfa6a36aebf380e
Author: Andrea Cosentino <anco...@gmail.com>
AuthorDate: Fri Oct 5 09:56:00 2018 +0200

    CAMEL-12859 - Camel-AWS: Add more operations to the AWS IAM producer, 
getUser Operation
---
 .../camel/component/aws/iam/IAMOperations.java     |  2 +-
 .../camel/component/aws/iam/IAMProducer.java       | 22 ++++++++++++++++++++++
 .../component/aws/iam/AmazonIAMClientMock.java     |  6 +++++-
 .../component/aws/iam/IAMProducerSpringTest.java   | 19 +++++++++++++++++++
 .../camel/component/aws/iam/IAMProducerTest.java   | 20 ++++++++++++++++++++
 .../aws/iam/IAMComponentSpringTest-context.xml     |  5 +++++
 6 files changed, 72 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 eead44c..b0039b5 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,6 +18,6 @@ package org.apache.camel.component.aws.iam;
 
 public enum IAMOperations {
 
-    listAccessKeys, createUser, deleteUser, listUsers,
+    listAccessKeys, createUser, deleteUser, getUser, listUsers,
     createAccessKey, deleteAccessKey
 }
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 1db7864..7fd5f44 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
@@ -26,6 +26,8 @@ import 
com.amazonaws.services.identitymanagement.model.DeleteAccessKeyRequest;
 import com.amazonaws.services.identitymanagement.model.DeleteAccessKeyResult;
 import com.amazonaws.services.identitymanagement.model.DeleteUserRequest;
 import com.amazonaws.services.identitymanagement.model.DeleteUserResult;
+import com.amazonaws.services.identitymanagement.model.GetUserRequest;
+import com.amazonaws.services.identitymanagement.model.GetUserResult;
 import com.amazonaws.services.identitymanagement.model.ListAccessKeysResult;
 import com.amazonaws.services.identitymanagement.model.ListUsersResult;
 
@@ -71,6 +73,9 @@ public class IAMProducer extends DefaultProducer {
         case deleteUser:
             deleteUser(getEndpoint().getIamClient(), exchange);
             break;
+        case getUser:
+            getUser(getEndpoint().getIamClient(), exchange);
+            break;
         case listUsers:
             listUsers(getEndpoint().getIamClient(), exchange);
             break;
@@ -149,6 +154,23 @@ public class IAMProducer extends DefaultProducer {
         Message message = getMessageForResponse(exchange);
         message.setBody(result);
     }
+    
+    private void getUser(AmazonIdentityManagement iamClient, Exchange 
exchange) {
+        GetUserRequest request = new GetUserRequest();
+        if 
(ObjectHelper.isNotEmpty(exchange.getIn().getHeader(IAMConstants.USERNAME))) {
+            String userName = 
exchange.getIn().getHeader(IAMConstants.USERNAME, String.class);
+            request.withUserName(userName);
+        }
+        GetUserResult result;
+        try {
+            result = iamClient.getUser(request);
+        } catch (AmazonServiceException ase) {
+            LOG.trace("get user command returned the error code {}", 
ase.getErrorCode());
+            throw ase;
+        }
+        Message message = getMessageForResponse(exchange);
+        message.setBody(result);
+    }
 
     private void listUsers(AmazonIdentityManagement iamClient, Exchange 
exchange) {
         ListUsersResult 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 d501188..3f00d05 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
@@ -673,7 +673,11 @@ public class AmazonIAMClientMock extends 
AmazonIdentityManagementClient {
 
     @Override
     public GetUserResult getUser(GetUserRequest getUserRequest) {
-        throw new UnsupportedOperationException();
+        GetUserResult result = new GetUserResult();
+        User user = new User();
+        user.setUserName("test");
+        result.setUser(user);
+        return result;
     }
 
     @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 a0e5c15..da99c8b 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
@@ -20,6 +20,7 @@ import 
com.amazonaws.services.identitymanagement.model.CreateAccessKeyResult;
 import com.amazonaws.services.identitymanagement.model.CreateUserResult;
 import com.amazonaws.services.identitymanagement.model.DeleteAccessKeyResult;
 import com.amazonaws.services.identitymanagement.model.DeleteUserResult;
+import com.amazonaws.services.identitymanagement.model.GetUserResult;
 import com.amazonaws.services.identitymanagement.model.ListAccessKeysResult;
 import com.amazonaws.services.identitymanagement.model.ListUsersResult;
 
@@ -144,6 +145,24 @@ public class IAMProducerSpringTest extends 
CamelSpringTestSupport {
         DeleteAccessKeyResult resultGet = 
(DeleteAccessKeyResult)exchange.getIn().getBody();
         assertNotNull(resultGet);
     }
+    
+    @Test
+    public void iamGetUserTest() throws Exception {
+
+        mock.expectedMessageCount(1);
+        Exchange exchange = template.request("direct:getUser", new Processor() 
{
+            @Override
+            public void process(Exchange exchange) throws Exception {
+                exchange.getIn().setHeader(IAMConstants.OPERATION, 
IAMOperations.getUser);
+                exchange.getIn().setHeader(IAMConstants.USERNAME, "test");
+            }
+        });
+
+        assertMockEndpointsSatisfied();
+
+        GetUserResult resultGet = (GetUserResult)exchange.getIn().getBody();
+        assertEquals("test", resultGet.getUser().getUserName());
+    }
 
     @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 9b3d9cf..ef02509 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
@@ -20,6 +20,7 @@ import 
com.amazonaws.services.identitymanagement.model.CreateAccessKeyResult;
 import com.amazonaws.services.identitymanagement.model.CreateUserResult;
 import com.amazonaws.services.identitymanagement.model.DeleteAccessKeyResult;
 import com.amazonaws.services.identitymanagement.model.DeleteUserResult;
+import com.amazonaws.services.identitymanagement.model.GetUserResult;
 import com.amazonaws.services.identitymanagement.model.ListAccessKeysResult;
 import com.amazonaws.services.identitymanagement.model.ListUsersResult;
 
@@ -90,6 +91,24 @@ public class IAMProducerTest extends CamelTestSupport {
         DeleteUserResult resultGet = 
(DeleteUserResult)exchange.getIn().getBody();
         assertNotNull(resultGet);
     }
+    
+    @Test
+    public void iamGetUserTest() throws Exception {
+
+        mock.expectedMessageCount(1);
+        Exchange exchange = template.request("direct:getUser", new Processor() 
{
+            @Override
+            public void process(Exchange exchange) throws Exception {
+                exchange.getIn().setHeader(IAMConstants.OPERATION, 
IAMOperations.getUser);
+                exchange.getIn().setHeader(IAMConstants.USERNAME, "test");
+            }
+        });
+
+        assertMockEndpointsSatisfied();
+
+        GetUserResult resultGet = (GetUserResult)exchange.getIn().getBody();
+        assertEquals("test", resultGet.getUser().getUserName());
+    }
 
     @Test
     public void iamListUsersTest() throws Exception {
@@ -166,6 +185,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:getUser").to("aws-iam://test?iamClient=#amazonIAMClient&operation=getUser").to("mock:result");
                 
from("direct:createAccessKey").to("aws-iam://test?iamClient=#amazonIAMClient&operation=createAccessKey").to("mock:result");
                 
from("direct:deleteAccessKey").to("aws-iam://test?iamClient=#amazonIAMClient&operation=deleteAccessKey").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 dbb216d..98169f8 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
@@ -40,6 +40,11 @@
             <to uri="mock:result"/>
         </route>
         <route>
+            <from uri="direct:getUser"/>
+            <to 
uri="aws-iam://Test?iamClient=#amazonIAMClient&amp;operation=getUser"/>
+            <to uri="mock:result"/>
+        </route>
+        <route>
             <from uri="direct:listUsers"/>
             <to 
uri="aws-iam://Test?iamClient=#amazonIAMClient&amp;operation=listUsers"/>
             <to uri="mock:result"/>

Reply via email to