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

Reply via email to