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 2d57a7e04f94ac3c4c37c424cb951db02c1336d1 Author: Andrea Cosentino <[email protected]> AuthorDate: Tue Jul 24 12:01:17 2018 +0200 CAMEL-12238 - Camel-AWS: Create an IAM component, createUser operation --- .../camel/component/aws/iam/IAMConstants.java | 7 ++----- .../camel/component/aws/iam/IAMOperations.java | 3 ++- .../camel/component/aws/iam/IAMProducer.java | 23 ++++++++++++++++++++++ .../component/aws/iam/AmazonIAMClientMock.java | 6 +++++- .../component/aws/iam/IAMProducerSpringTest.java | 20 +++++++++++++++++++ .../camel/component/aws/iam/IAMProducerTest.java | 21 ++++++++++++++++++++ .../aws/iam/IAMComponentSpringTest-context.xml | 5 +++++ 7 files changed, 78 insertions(+), 7 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 b8d9f5f..ba0db9a 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 @@ -21,9 +21,6 @@ package org.apache.camel.component.aws.iam; * */ public interface IAMConstants { - String OPERATION = "CamelAwsKMSOperation"; - String LIMIT = "CamelAwsKMSLimit"; - String DESCRIPTION = "CamelAwsKMSDescription"; - String KEY_ID = "CamelAwsKMSKeyId"; - String PENDING_WINDOW_IN_DAYS = "CamelAwsKMSPendingWindowInDays"; + String OPERATION = "CamelAwsIAMOperation"; + String USERNAME = "CamelAwsIAMUsername"; } 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 5327d5b..031abdd 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,5 +18,6 @@ package org.apache.camel.component.aws.iam; public enum IAMOperations { - listAccessKeys + listAccessKeys, + createUser } 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 04df46a..b4fabff 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 @@ -18,12 +18,15 @@ package org.apache.camel.component.aws.iam; 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.ListAccessKeysResult; import org.apache.camel.Endpoint; import org.apache.camel.Exchange; import org.apache.camel.Message; import org.apache.camel.impl.DefaultProducer; +import org.apache.camel.util.ObjectHelper; import org.apache.camel.util.URISupport; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -49,6 +52,9 @@ public class IAMProducer extends DefaultProducer { case listAccessKeys: listAccessKeys(getEndpoint().getIamClient(), exchange); break; + case createUser: + createUser(getEndpoint().getIamClient(), exchange); + break; default: throw new IllegalArgumentException("Unsupported operation"); } @@ -90,4 +96,21 @@ public class IAMProducer extends DefaultProducer { Message message = getMessageForResponse(exchange); message.setBody(result); } + + private void createUser(AmazonIdentityManagement iamClient, Exchange exchange) { + CreateUserRequest request = new CreateUserRequest(); + if (ObjectHelper.isNotEmpty(exchange.getIn().getHeader(IAMConstants.USERNAME))) { + String userName = exchange.getIn().getHeader(IAMConstants.USERNAME, String.class); + request.withUserName(userName); + } + CreateUserResult result; + try { + result = iamClient.createUser(request); + } catch (AmazonServiceException ase) { + LOG.trace("Create 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 4354d5c..2916623 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 @@ -146,7 +146,11 @@ public class AmazonIAMClientMock extends AmazonIdentityManagementClient { @Override public CreateUserResult createUser(CreateUserRequest createUserRequest) { - throw new UnsupportedOperationException(); + CreateUserResult result = new CreateUserResult(); + 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 f44dd88..5d66c321 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 @@ -24,6 +24,7 @@ import org.apache.camel.test.spring.CamelSpringTestSupport; import org.junit.Test; import org.springframework.context.support.ClassPathXmlApplicationContext; +import com.amazonaws.services.identitymanagement.model.CreateUserResult; import com.amazonaws.services.identitymanagement.model.ListAccessKeysResult; public class IAMProducerSpringTest extends CamelSpringTestSupport { @@ -48,6 +49,25 @@ public class IAMProducerSpringTest extends CamelSpringTestSupport { assertEquals(1, resultGet.getAccessKeyMetadata().size()); assertEquals("1", resultGet.getAccessKeyMetadata().get(0).getAccessKeyId()); } + + @Test + public void iamCreateUserTest() throws Exception { + + mock.expectedMessageCount(1); + Exchange exchange = template.request("direct:createUser", new Processor() { + @Override + public void process(Exchange exchange) throws Exception { + exchange.getIn().setHeader(IAMConstants.OPERATION, IAMOperations.createUser); + exchange.getIn().setHeader(IAMConstants.USERNAME, "test"); + } + }); + + assertMockEndpointsSatisfied(); + + CreateUserResult resultGet = (CreateUserResult) 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 63089a2..a0175cf 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 @@ -25,6 +25,7 @@ import org.apache.camel.impl.JndiRegistry; import org.apache.camel.test.junit4.CamelTestSupport; import org.junit.Test; +import com.amazonaws.services.identitymanagement.model.CreateUserResult; import com.amazonaws.services.identitymanagement.model.ListAccessKeysResult; public class IAMProducerTest extends CamelTestSupport { @@ -49,6 +50,24 @@ public class IAMProducerTest extends CamelTestSupport { assertEquals(1, resultGet.getAccessKeyMetadata().size()); assertEquals("1", resultGet.getAccessKeyMetadata().get(0).getAccessKeyId()); } + + @Test + public void iamCreateUserTest() throws Exception { + + mock.expectedMessageCount(1); + Exchange exchange = template.request("direct:createUser", new Processor() { + @Override + public void process(Exchange exchange) throws Exception { + exchange.getIn().setHeader(IAMConstants.OPERATION, IAMOperations.createUser); + exchange.getIn().setHeader(IAMConstants.USERNAME, "test"); + } + }); + + assertMockEndpointsSatisfied(); + + CreateUserResult resultGet = (CreateUserResult) exchange.getIn().getBody(); + assertEquals("test", resultGet.getUser().getUserName()); + } @Override protected JndiRegistry createRegistry() throws Exception { @@ -68,6 +87,8 @@ public class IAMProducerTest extends CamelTestSupport { public void configure() throws Exception { from("direct:listKeys").to("aws-iam://test?iamClient=#amazonIAMClient&operation=listAccessKeys") .to("mock:result"); + from("direct:createUser").to("aws-iam://test?iamClient=#amazonIAMClient&operation=createUser") + .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 4c81bf9..39a2a8c 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 @@ -29,6 +29,11 @@ <to uri="aws-iam://Test?iamClient=#amazonIAMClient&operation=listAccessKeys"/> <to uri="mock:result"/> </route> + <route> + <from uri="direct:createUser"/> + <to uri="aws-iam://Test?iamClient=#amazonIAMClient&operation=createUser"/> + <to uri="mock:result"/> + </route> </camelContext> <bean id="amazonIAMClient" class="org.apache.camel.component.aws.iam.AmazonIAMClientMock"/>
