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&operation=getUser"/> + <to uri="mock:result"/> + </route> + <route> <from uri="direct:listUsers"/> <to uri="aws-iam://Test?iamClient=#amazonIAMClient&operation=listUsers"/> <to uri="mock:result"/>