From 1e708e119638025c2d85c34c52dba75a8b1c2a02 Mon Sep 17 00:00:00 2001 From: Ethan Katnic Date: Wed, 4 Sep 2024 10:30:56 -0700 Subject: [PATCH] Add tests to validate create() method providers and StsAssumeRoleCredentialsProvider --- ...tialsProviderPropertyValueDecoderTest.java | 47 ++++++++++++++++++- 1 file changed, 45 insertions(+), 2 deletions(-) diff --git a/amazon-kinesis-client-multilang/src/test/java/software/amazon/kinesis/multilang/config/AWSCredentialsProviderPropertyValueDecoderTest.java b/amazon-kinesis-client-multilang/src/test/java/software/amazon/kinesis/multilang/config/AWSCredentialsProviderPropertyValueDecoderTest.java index 58bca383..71f97d18 100644 --- a/amazon-kinesis-client-multilang/src/test/java/software/amazon/kinesis/multilang/config/AWSCredentialsProviderPropertyValueDecoderTest.java +++ b/amazon-kinesis-client-multilang/src/test/java/software/amazon/kinesis/multilang/config/AWSCredentialsProviderPropertyValueDecoderTest.java @@ -40,6 +40,7 @@ public class AWSCredentialsProviderPropertyValueDecoderTest { private final String credentialName1 = AlwaysSucceedCredentialsProvider.class.getName(); private final String credentialName2 = ConstructorCredentialsProvider.class.getName(); + private final String createCredentialClass = CreateProvider.class.getName(); private final AwsCredentialsProviderPropertyValueDecoder decoder = new AwsCredentialsProviderPropertyValueDecoder(); @ToString @@ -119,13 +120,31 @@ public class AWSCredentialsProviderPropertyValueDecoderTest { public void testKclAuthProvider() { for (final String className : Arrays.asList( KclStsAssumeRoleCredentialsProvider.class.getName(), // fully-qualified name - KclStsAssumeRoleCredentialsProvider.class.getSimpleName() // name-only; needs prefix - )) { + KclStsAssumeRoleCredentialsProvider.class.getSimpleName(), // name-only; needs prefix + "software.amazon.awssdk.auth.credentials.StsAssumeRoleCredentialsProvider")) { final AwsCredentialsProvider provider = decoder.decodeValue(className + "|arn|sessionName"); assertNotNull(className, provider); } } + /** + * Test that OneArgCreateProvider in the SDK v2 can process a create() method + */ + @Test + public void testEmptyCreateProvider() { + AwsCredentialsProvider provider = decoder.decodeValue(createCredentialClass); + assertThat(provider, hasCredentials(TEST_ACCESS_KEY_ID, TEST_SECRET_KEY)); + } + + /** + * Test that OneArgCreateProvider in the SDK v2 can process a create(arg1) method + */ + @Test + public void testOneArgCreateProvider() { + AwsCredentialsProvider provider = decoder.decodeValue(createCredentialClass + "|testCreateProperty"); + assertThat(provider, hasCredentials("testCreateProperty", TEST_SECRET_KEY)); + } + /** * Test that a provider can be instantiated by its varargs constructor. */ @@ -188,4 +207,28 @@ public class AWSCredentialsProviderPropertyValueDecoderTest { return AwsBasicCredentials.create(flattenedArgs, flattenedArgs); } } + + /** + * Credentials provider to test AWS SDK v2 create() methods for providers like ProfileCredentialsProvider + */ + public static class CreateProvider implements AwsCredentialsProvider { + private String accessKeyId; + + private CreateProvider(String accessKeyId) { + this.accessKeyId = accessKeyId; + } + + public static CreateProvider create() { + return new CreateProvider(TEST_ACCESS_KEY_ID); + } + + public static CreateProvider create(String accessKeyId) { + return new CreateProvider(accessKeyId); + } + + @Override + public AwsCredentials resolveCredentials() { + return AwsBasicCredentials.create(accessKeyId, TEST_SECRET_KEY); + } + } }