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 98d43a40fce89291cd1886f0323c5a7b55a9f77a Author: Andrea Cosentino <[email protected]> AuthorDate: Tue Jul 24 12:53:59 2018 +0200 CAMEL-12238 - Camel-AWS: Create an IAM component, deleteUser operation --- .../camel/component/aws/iam/IAMOperations.java | 3 ++- .../camel/component/aws/iam/IAMProducer.java | 22 ++++++++++++++++++++++ .../component/aws/iam/AmazonIAMClientMock.java | 3 ++- .../component/aws/iam/IAMProducerSpringTest.java | 18 ++++++++++++++++++ .../camel/component/aws/iam/IAMProducerTest.java | 21 +++++++++++++++++++++ .../aws/iam/IAMComponentSpringTest-context.xml | 5 +++++ 6 files changed, 70 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 031abdd..da5b4ca 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 @@ -19,5 +19,6 @@ package org.apache.camel.component.aws.iam; public enum IAMOperations { listAccessKeys, - createUser + createUser, + deleteUser } 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 b4fabff..83f7998 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 @@ -20,6 +20,8 @@ import com.amazonaws.AmazonServiceException; import com.amazonaws.services.identitymanagement.AmazonIdentityManagement; import com.amazonaws.services.identitymanagement.model.CreateUserRequest; 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 org.apache.camel.Endpoint; @@ -55,6 +57,9 @@ public class IAMProducer extends DefaultProducer { case createUser: createUser(getEndpoint().getIamClient(), exchange); break; + case deleteUser: + deleteUser(getEndpoint().getIamClient(), exchange); + break; default: throw new IllegalArgumentException("Unsupported operation"); } @@ -113,4 +118,21 @@ public class IAMProducer extends DefaultProducer { Message message = getMessageForResponse(exchange); message.setBody(result); } + + private void deleteUser(AmazonIdentityManagement iamClient, Exchange exchange) { + DeleteUserRequest request = new DeleteUserRequest(); + if (ObjectHelper.isNotEmpty(exchange.getIn().getHeader(IAMConstants.USERNAME))) { + String userName = exchange.getIn().getHeader(IAMConstants.USERNAME, String.class); + request.withUserName(userName); + } + DeleteUserResult result; + try { + result = iamClient.deleteUser(request); + } catch (AmazonServiceException ase) { + LOG.trace("Delete user 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 2916623..abe78a2 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 @@ -268,7 +268,8 @@ public class AmazonIAMClientMock extends AmazonIdentityManagementClient { @Override public DeleteUserResult deleteUser(DeleteUserRequest deleteUserRequest) { - throw new UnsupportedOperationException(); + DeleteUserResult res = new DeleteUserResult(); + 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 5d66c321..d69ad43 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 @@ -25,6 +25,7 @@ import org.junit.Test; 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; public class IAMProducerSpringTest extends CamelSpringTestSupport { @@ -67,7 +68,24 @@ public class IAMProducerSpringTest extends CamelSpringTestSupport { CreateUserResult resultGet = (CreateUserResult) exchange.getIn().getBody(); assertEquals("test", resultGet.getUser().getUserName()); } + + @Test + public void iamDeleteUserTest() throws Exception { + mock.expectedMessageCount(1); + Exchange exchange = template.request("direct:deleteUser", new Processor() { + @Override + public void process(Exchange exchange) throws Exception { + exchange.getIn().setHeader(IAMConstants.OPERATION, IAMOperations.deleteUser); + exchange.getIn().setHeader(IAMConstants.USERNAME, "test"); + } + }); + + assertMockEndpointsSatisfied(); + + DeleteUserResult resultGet = (DeleteUserResult) exchange.getIn().getBody(); + assertNotNull(resultGet); + } @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 a0175cf..b9aa180 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 @@ -26,6 +26,7 @@ import org.apache.camel.test.junit4.CamelTestSupport; 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; public class IAMProducerTest extends CamelTestSupport { @@ -68,6 +69,24 @@ public class IAMProducerTest extends CamelTestSupport { CreateUserResult resultGet = (CreateUserResult) exchange.getIn().getBody(); assertEquals("test", resultGet.getUser().getUserName()); } + + @Test + public void iamDeleteUserTest() throws Exception { + + mock.expectedMessageCount(1); + Exchange exchange = template.request("direct:deleteUser", new Processor() { + @Override + public void process(Exchange exchange) throws Exception { + exchange.getIn().setHeader(IAMConstants.OPERATION, IAMOperations.deleteUser); + exchange.getIn().setHeader(IAMConstants.USERNAME, "test"); + } + }); + + assertMockEndpointsSatisfied(); + + DeleteUserResult resultGet = (DeleteUserResult) exchange.getIn().getBody(); + assertNotNull(resultGet); + } @Override protected JndiRegistry createRegistry() throws Exception { @@ -89,6 +108,8 @@ public class IAMProducerTest extends CamelTestSupport { .to("mock:result"); 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"); } }; } 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 39a2a8c..454e936 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 @@ -34,6 +34,11 @@ <to uri="aws-iam://Test?iamClient=#amazonIAMClient&operation=createUser"/> <to uri="mock:result"/> </route> + <route> + <from uri="direct:deleteUser"/> + <to uri="aws-iam://Test?iamClient=#amazonIAMClient&operation=deleteUser"/> + <to uri="mock:result"/> + </route> </camelContext> <bean id="amazonIAMClient" class="org.apache.camel.component.aws.iam.AmazonIAMClientMock"/>
