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 fee53c2b07c777ca9143b6bcb59416aac51acd11 Author: Andrea Cosentino <[email protected]> AuthorDate: Wed Jul 25 11:48:03 2018 +0200 CAMEL-12238 - Camel-AWS: Create an IAM component, deleteAccessKey operation --- .../camel/component/aws/iam/IAMOperations.java | 2 +- .../camel/component/aws/iam/IAMProducer.java | 22 ++++++++++++++++++++++ .../component/aws/iam/AmazonIAMClientMock.java | 3 ++- .../component/aws/iam/IAMProducerSpringTest.java | 19 +++++++++++++++++++ .../camel/component/aws/iam/IAMProducerTest.java | 20 ++++++++++++++++++++ .../aws/iam/IAMComponentSpringTest-context.xml | 5 +++++ 6 files changed, 69 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 a2ff19e..eead44c 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,5 @@ package org.apache.camel.component.aws.iam; public enum IAMOperations { listAccessKeys, createUser, deleteUser, listUsers, - createAccessKey + 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 ca5f38c..1db7864 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 @@ -22,6 +22,8 @@ import com.amazonaws.services.identitymanagement.model.CreateAccessKeyRequest; import com.amazonaws.services.identitymanagement.model.CreateAccessKeyResult; import com.amazonaws.services.identitymanagement.model.CreateUserRequest; import com.amazonaws.services.identitymanagement.model.CreateUserResult; +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.ListAccessKeysResult; @@ -60,6 +62,9 @@ public class IAMProducer extends DefaultProducer { case createAccessKey: createAccessKey(getEndpoint().getIamClient(), exchange); break; + case deleteAccessKey: + deleteAccessKey(getEndpoint().getIamClient(), exchange); + break; case createUser: createUser(getEndpoint().getIamClient(), exchange); break; @@ -173,4 +178,21 @@ public class IAMProducer extends DefaultProducer { Message message = getMessageForResponse(exchange); message.setBody(result); } + + private void deleteAccessKey(AmazonIdentityManagement iamClient, Exchange exchange) { + DeleteAccessKeyRequest request = new DeleteAccessKeyRequest(); + if (ObjectHelper.isNotEmpty(exchange.getIn().getHeader(IAMConstants.USERNAME))) { + String userName = exchange.getIn().getHeader(IAMConstants.USERNAME, String.class); + request.withUserName(userName); + } + DeleteAccessKeyResult result; + try { + result = iamClient.deleteAccessKey(request); + } catch (AmazonServiceException ase) { + LOG.trace("Delete Access Key command returned the error code {}", ase.getErrorCode()); + throw ase; + } + Message message = getMessageForResponse(exchange); + message.setBody(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 56ec407..4393fc8 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 @@ -164,7 +164,8 @@ public class AmazonIAMClientMock extends AmazonIdentityManagementClient { @Override public DeleteAccessKeyResult deleteAccessKey(DeleteAccessKeyRequest deleteAccessKeyRequest) { - throw new UnsupportedOperationException(); + DeleteAccessKeyResult res = new DeleteAccessKeyResult(); + 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 8fc4638..a0e5c15 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 @@ -18,6 +18,7 @@ package org.apache.camel.component.aws.iam; 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.ListAccessKeysResult; import com.amazonaws.services.identitymanagement.model.ListUsersResult; @@ -125,6 +126,24 @@ public class IAMProducerSpringTest extends CamelSpringTestSupport { assertEquals("test", resultGet.getAccessKey().getAccessKeyId()); assertEquals("testSecret", resultGet.getAccessKey().getSecretAccessKey()); } + + @Test + public void iamDeleteAccessKeyTest() throws Exception { + + mock.expectedMessageCount(1); + Exchange exchange = template.request("direct:deleteAccessKey", new Processor() { + @Override + public void process(Exchange exchange) throws Exception { + exchange.getIn().setHeader(IAMConstants.OPERATION, IAMOperations.deleteAccessKey); + exchange.getIn().setHeader(IAMConstants.USERNAME, "test"); + } + }); + + assertMockEndpointsSatisfied(); + + DeleteAccessKeyResult resultGet = (DeleteAccessKeyResult)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 66bcc2d..9b3d9cf 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 @@ -18,6 +18,7 @@ package org.apache.camel.component.aws.iam; 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.ListAccessKeysResult; import com.amazonaws.services.identitymanagement.model.ListUsersResult; @@ -126,6 +127,24 @@ public class IAMProducerTest extends CamelTestSupport { assertEquals("test", resultGet.getAccessKey().getAccessKeyId()); assertEquals("testSecret", resultGet.getAccessKey().getSecretAccessKey()); } + + @Test + public void iamDeleteAccessKeyTest() throws Exception { + + mock.expectedMessageCount(1); + Exchange exchange = template.request("direct:deleteAccessKey", new Processor() { + @Override + public void process(Exchange exchange) throws Exception { + exchange.getIn().setHeader(IAMConstants.OPERATION, IAMOperations.deleteAccessKey); + exchange.getIn().setHeader(IAMConstants.USERNAME, "test"); + } + }); + + assertMockEndpointsSatisfied(); + + DeleteAccessKeyResult resultGet = (DeleteAccessKeyResult)exchange.getIn().getBody(); + assertNotNull(resultGet); + } @Override protected JndiRegistry createRegistry() throws Exception { @@ -148,6 +167,7 @@ public class IAMProducerTest extends CamelTestSupport { 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: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 0411c96..dbb216d 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 @@ -49,6 +49,11 @@ <to uri="aws-iam://Test?iamClient=#amazonIAMClient&operation=createAccessKey"/> <to uri="mock:result"/> </route> + <route> + <from uri="direct:deleteAccessKey"/> + <to uri="aws-iam://Test?iamClient=#amazonIAMClient&operation=deleteAccessKey"/> + <to uri="mock:result"/> + </route> </camelContext> <bean id="amazonIAMClient" class="org.apache.camel.component.aws.iam.AmazonIAMClientMock"/>
