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&operation=deleteUser"/> <to uri="mock:result"/> </route> + <route> + <from uri="direct:listUsers"/> + <to uri="aws-iam://Test?iamClient=#amazonIAMClient&operation=listUsers"/> + <to uri="mock:result"/> + </route> </camelContext> <bean id="amazonIAMClient" class="org.apache.camel.component.aws.iam.AmazonIAMClientMock"/>
