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 2af6ac615a04068b0cfe228170ad99f22863ed78 Author: Andrea Cosentino <anco...@gmail.com> AuthorDate: Fri Oct 5 10:35:10 2018 +0200 CAMEL-12859 - Camel-AWS: Add more operations to the AWS IAM producer, updateAccessKey operation --- .../camel/component/aws/iam/IAMConstants.java | 2 ++ .../camel/component/aws/iam/IAMOperations.java | 2 +- .../camel/component/aws/iam/IAMProducer.java | 35 ++++++++++++++++++++++ .../component/aws/iam/AmazonIAMClientMock.java | 3 +- .../component/aws/iam/IAMProducerSpringTest.java | 21 +++++++++++++ .../camel/component/aws/iam/IAMProducerTest.java | 22 ++++++++++++++ .../aws/iam/IAMComponentSpringTest-context.xml | 5 ++++ 7 files changed, 88 insertions(+), 2 deletions(-) diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/iam/IAMConstants.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/iam/IAMConstants.java index 6fb9cfb..bcb6d6a 100644 --- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/iam/IAMConstants.java +++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/iam/IAMConstants.java @@ -22,4 +22,6 @@ package org.apache.camel.component.aws.iam; public interface IAMConstants { String OPERATION = "CamelAwsIAMOperation"; String USERNAME = "CamelAwsIAMUsername"; + String ACCESS_KEY_ID = "CamelAwsIAMAccessKeyID"; + String ACCESS_KEY_STATUS = "CamelAwsIAMAccessKeyStatus"; } 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 b0039b5..3d9b30c 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, getUser, listUsers, - createAccessKey, deleteAccessKey + createAccessKey, deleteAccessKey, updateAccessKey } 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 7fd5f44..62b2ff2 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 @@ -30,6 +30,9 @@ 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; +import com.amazonaws.services.identitymanagement.model.StatusType; +import com.amazonaws.services.identitymanagement.model.UpdateAccessKeyRequest; +import com.amazonaws.services.identitymanagement.model.UpdateAccessKeyResult; import org.apache.camel.Endpoint; import org.apache.camel.Exchange; @@ -67,6 +70,9 @@ public class IAMProducer extends DefaultProducer { case deleteAccessKey: deleteAccessKey(getEndpoint().getIamClient(), exchange); break; + case updateAccessKey: + updateAccessKey(getEndpoint().getIamClient(), exchange); + break; case createUser: createUser(getEndpoint().getIamClient(), exchange); break; @@ -217,4 +223,33 @@ public class IAMProducer extends DefaultProducer { Message message = getMessageForResponse(exchange); message.setBody(result); } + + private void updateAccessKey(AmazonIdentityManagement iamClient, Exchange exchange) { + UpdateAccessKeyRequest request = new UpdateAccessKeyRequest(); + if (ObjectHelper.isNotEmpty(exchange.getIn().getHeader(IAMConstants.ACCESS_KEY_ID))) { + String accessKeyId = exchange.getIn().getHeader(IAMConstants.ACCESS_KEY_ID, String.class); + request.withAccessKeyId(accessKeyId); + } else { + throw new IllegalArgumentException("Key Id must be specified"); + } + if (ObjectHelper.isNotEmpty(exchange.getIn().getHeader(IAMConstants.ACCESS_KEY_STATUS))) { + String status = exchange.getIn().getHeader(IAMConstants.ACCESS_KEY_STATUS, String.class); + request.withStatus(StatusType.fromValue(status)); + } else { + throw new IllegalArgumentException("Access Key status must be specified"); + } + if (ObjectHelper.isNotEmpty(exchange.getIn().getHeader(IAMConstants.USERNAME))) { + String userName = exchange.getIn().getHeader(IAMConstants.USERNAME, String.class); + request.withUserName(userName); + } + UpdateAccessKeyResult result; + try { + result = iamClient.updateAccessKey(request); + } catch (AmazonServiceException ase) { + LOG.trace("Update 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 3f00d05..1422cb8 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 @@ -957,7 +957,8 @@ public class AmazonIAMClientMock extends AmazonIdentityManagementClient { @Override public UpdateAccessKeyResult updateAccessKey(UpdateAccessKeyRequest updateAccessKeyRequest) { - throw new UnsupportedOperationException(); + UpdateAccessKeyResult result = new UpdateAccessKeyResult(); + 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 da99c8b..3cc7def 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 @@ -23,6 +23,8 @@ 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; +import com.amazonaws.services.identitymanagement.model.StatusType; +import com.amazonaws.services.identitymanagement.model.UpdateAccessKeyResult; import org.apache.camel.EndpointInject; import org.apache.camel.Exchange; @@ -163,6 +165,25 @@ public class IAMProducerSpringTest extends CamelSpringTestSupport { GetUserResult resultGet = (GetUserResult)exchange.getIn().getBody(); assertEquals("test", resultGet.getUser().getUserName()); } + + @Test + public void iamUpdateAccessKeyTest() throws Exception { + + mock.expectedMessageCount(1); + Exchange exchange = template.request("direct:updateAccessKey", new Processor() { + @Override + public void process(Exchange exchange) throws Exception { + exchange.getIn().setHeader(IAMConstants.OPERATION, IAMOperations.updateAccessKey); + exchange.getIn().setHeader(IAMConstants.ACCESS_KEY_ID, "1"); + exchange.getIn().setHeader(IAMConstants.ACCESS_KEY_STATUS, StatusType.Inactive.toString()); + } + }); + + assertMockEndpointsSatisfied(); + + UpdateAccessKeyResult resultGet = (UpdateAccessKeyResult)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 ef02509..ecd8336 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 @@ -23,6 +23,8 @@ 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; +import com.amazonaws.services.identitymanagement.model.StatusType; +import com.amazonaws.services.identitymanagement.model.UpdateAccessKeyResult; import org.apache.camel.EndpointInject; import org.apache.camel.Exchange; @@ -164,6 +166,25 @@ public class IAMProducerTest extends CamelTestSupport { DeleteAccessKeyResult resultGet = (DeleteAccessKeyResult)exchange.getIn().getBody(); assertNotNull(resultGet); } + + @Test + public void iamUpdateAccessKeyTest() throws Exception { + + mock.expectedMessageCount(1); + Exchange exchange = template.request("direct:updateAccessKey", new Processor() { + @Override + public void process(Exchange exchange) throws Exception { + exchange.getIn().setHeader(IAMConstants.OPERATION, IAMOperations.updateAccessKey); + exchange.getIn().setHeader(IAMConstants.ACCESS_KEY_ID, "1"); + exchange.getIn().setHeader(IAMConstants.ACCESS_KEY_STATUS, StatusType.Inactive.toString()); + } + }); + + assertMockEndpointsSatisfied(); + + UpdateAccessKeyResult resultGet = (UpdateAccessKeyResult)exchange.getIn().getBody(); + assertNotNull(resultGet); + } @Override protected JndiRegistry createRegistry() throws Exception { @@ -188,6 +209,7 @@ public class IAMProducerTest extends CamelTestSupport { 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"); + from("direct:updateAccessKey").to("aws-iam://test?iamClient=#amazonIAMClient&operation=updateAccessKey").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 98169f8..8a96829 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 @@ -59,6 +59,11 @@ <to uri="aws-iam://Test?iamClient=#amazonIAMClient&operation=deleteAccessKey"/> <to uri="mock:result"/> </route> + <route> + <from uri="direct:updateAccessKey"/> + <to uri="aws-iam://Test?iamClient=#amazonIAMClient&operation=updateAccessKey"/> + <to uri="mock:result"/> + </route> </camelContext> <bean id="amazonIAMClient" class="org.apache.camel.component.aws.iam.AmazonIAMClientMock"/>