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 d15d3ab61d186b255b0244bf176f6c1d9ed3d4a3
Author: Andrea Cosentino <[email protected]>
AuthorDate: Tue Jul 24 13:06:08 2018 +0200

    CAMEL-12238 - Camel-AWS: Create an IAM component, listUsers operation
---
 .../camel/component/aws/iam/IAMOperations.java      |  3 ++-
 .../apache/camel/component/aws/iam/IAMProducer.java | 17 +++++++++++++++++
 .../component/aws/iam/AmazonIAMClientMock.java      |  9 ++++++++-
 .../component/aws/iam/IAMProducerSpringTest.java    | 21 ++++++++++++++++++++-
 .../camel/component/aws/iam/IAMProducerTest.java    | 21 +++++++++++++++++++++
 .../aws/iam/IAMComponentSpringTest-context.xml      |  5 +++++
 6 files changed, 73 insertions(+), 3 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 da5b4ca..7559ec7 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
@@ -20,5 +20,6 @@ public enum IAMOperations {
 
     listAccessKeys,
     createUser,
-    deleteUser
+    deleteUser,
+    listUsers
 }
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 83f7998..4fcbaa0 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
@@ -23,6 +23,8 @@ import 
com.amazonaws.services.identitymanagement.model.CreateUserResult;
 import com.amazonaws.services.identitymanagement.model.DeleteUserRequest;
 import com.amazonaws.services.identitymanagement.model.DeleteUserResult;
 import com.amazonaws.services.identitymanagement.model.ListAccessKeysResult;
+import com.amazonaws.services.identitymanagement.model.ListUsersRequest;
+import com.amazonaws.services.identitymanagement.model.ListUsersResult;
 
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
@@ -60,6 +62,9 @@ public class IAMProducer extends DefaultProducer {
         case deleteUser:
             deleteUser(getEndpoint().getIamClient(), exchange);
             break;
+        case listUsers:
+            listUsers(getEndpoint().getIamClient(), exchange);
+            break;
         default:
             throw new IllegalArgumentException("Unsupported operation");
         }
@@ -135,4 +140,16 @@ public class IAMProducer extends DefaultProducer {
         Message message = getMessageForResponse(exchange);
         message.setBody(result);
     }
+    
+    private void listUsers(AmazonIdentityManagement iamClient, Exchange 
exchange) {
+        ListUsersResult result;
+        try {
+            result = iamClient.listUsers();
+        } catch (AmazonServiceException ase) {
+            LOG.trace("List users command returned the error code {}", 
ase.getErrorCode());
+            throw ase;
+        }
+        Message message = getMessageForResponse(exchange);
+        message.setBody(result);
+    }
 }
\ No newline at end of file
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 abe78a2..c21efdd 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
@@ -19,6 +19,7 @@ package org.apache.camel.component.aws.iam;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Date;
+import java.util.List;
 
 import com.amazonaws.AmazonWebServiceRequest;
 import com.amazonaws.ResponseMetadata;
@@ -655,7 +656,13 @@ public class AmazonIAMClientMock extends 
AmazonIdentityManagementClient {
 
        @Override
        public ListUsersResult listUsers() {
-        throw new UnsupportedOperationException();
+        ListUsersResult res = new ListUsersResult();
+        List<User> list = new ArrayList<>();
+        User user = new User();
+        user.setUserName("test");
+        list.add(user);
+        res.setUsers(list);
+        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 d69ad43..16875b5 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
@@ -27,6 +27,7 @@ import 
org.springframework.context.support.ClassPathXmlApplicationContext;
 import com.amazonaws.services.identitymanagement.model.CreateUserResult;
 import com.amazonaws.services.identitymanagement.model.DeleteUserResult;
 import com.amazonaws.services.identitymanagement.model.ListAccessKeysResult;
+import com.amazonaws.services.identitymanagement.model.ListUsersResult;
 
 public class IAMProducerSpringTest extends CamelSpringTestSupport {
 
@@ -34,7 +35,7 @@ public class IAMProducerSpringTest extends 
CamelSpringTestSupport {
        private MockEndpoint mock;
 
        @Test
-       public void mqListBrokersTest() throws Exception {
+       public void iamListAccessKeysTest() throws Exception {
 
                mock.expectedMessageCount(1);
                Exchange exchange = template.request("direct:listKeys", new 
Processor() {
@@ -86,6 +87,24 @@ public class IAMProducerSpringTest extends 
CamelSpringTestSupport {
         DeleteUserResult resultGet = (DeleteUserResult) 
exchange.getIn().getBody();
         assertNotNull(resultGet);
     }
+    
+       @Test
+       public void iamListUsersTest() throws Exception {
+
+               mock.expectedMessageCount(1);
+               Exchange exchange = template.request("direct:listUsers", new 
Processor() {
+                       @Override
+                       public void process(Exchange exchange) throws Exception 
{
+                               
exchange.getIn().setHeader(IAMConstants.OPERATION, IAMOperations.listUsers);
+                       }
+               });
+
+               assertMockEndpointsSatisfied();
+
+               ListUsersResult resultGet = (ListUsersResult) 
exchange.getIn().getBody();
+               assertEquals(1, resultGet.getUsers().size());
+               assertEquals("test", resultGet.getUsers().get(0).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 b9aa180..1041dbd 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
@@ -28,6 +28,7 @@ import org.junit.Test;
 import com.amazonaws.services.identitymanagement.model.CreateUserResult;
 import com.amazonaws.services.identitymanagement.model.DeleteUserResult;
 import com.amazonaws.services.identitymanagement.model.ListAccessKeysResult;
+import com.amazonaws.services.identitymanagement.model.ListUsersResult;
 
 public class IAMProducerTest extends CamelTestSupport {
 
@@ -87,6 +88,24 @@ public class IAMProducerTest extends CamelTestSupport {
         DeleteUserResult resultGet = (DeleteUserResult) 
exchange.getIn().getBody();
         assertNotNull(resultGet);
     }
+    
+       @Test
+       public void iamListUsersTest() throws Exception {
+
+               mock.expectedMessageCount(1);
+               Exchange exchange = template.request("direct:listUsers", new 
Processor() {
+                       @Override
+                       public void process(Exchange exchange) throws Exception 
{
+                               
exchange.getIn().setHeader(IAMConstants.OPERATION, IAMOperations.listUsers);
+                       }
+               });
+
+               assertMockEndpointsSatisfied();
+
+               ListUsersResult resultGet = (ListUsersResult) 
exchange.getIn().getBody();
+               assertEquals(1, resultGet.getUsers().size());
+               assertEquals("test", resultGet.getUsers().get(0).getUserName());
+       }
 
        @Override
        protected JndiRegistry createRegistry() throws Exception {
@@ -110,6 +129,8 @@ public class IAMProducerTest extends CamelTestSupport {
                                        .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");
                        }
                };
        }
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 454e936..8d3cd52 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
@@ -39,6 +39,11 @@
             <to 
uri="aws-iam://Test?iamClient=#amazonIAMClient&amp;operation=deleteUser"/>
             <to uri="mock:result"/>
         </route>
+        <route>
+            <from uri="direct:listUsers"/>
+            <to 
uri="aws-iam://Test?iamClient=#amazonIAMClient&amp;operation=listUsers"/>
+            <to uri="mock:result"/>
+        </route>
     </camelContext>
     
     <bean id="amazonIAMClient" 
class="org.apache.camel.component.aws.iam.AmazonIAMClientMock"/>

Reply via email to