### Question:
AWSCredentialsProviderPropertyValueDecoder implements IPropertyValueDecoder<AWSCredentialsProvider> { @Override public AWSCredentialsProvider decodeValue(String value) { if (value != null) { List<String> providerNames = getProviderNames(value); List<AWSCredentialsProvider> providers = getValidCredentialsProviders(providerNames); AWSCredentialsProvider[] ps = new AWSCredentialsProvider[providers.size()]; providers.toArray(ps); return new AWSCredentialsProviderChain(providers); } else { throw new IllegalArgumentException("Property AWSCredentialsProvider is missing."); } } AWSCredentialsProviderPropertyValueDecoder(); @Override AWSCredentialsProvider decodeValue(String value); @Override List<Class<AWSCredentialsProvider>> getSupportedTypes();  }### Answer:
@Test public void testSingleProvider() { AWSCredentialsProvider provider = decoder.decodeValue(credentialName1); assertThat(provider, hasCredentials(TEST_ACCESS_KEY_ID, TEST_SECRET_KEY)); }
@Test public void testTwoProviders() { AWSCredentialsProvider provider = decoder.decodeValue(credentialName1 + "," + credentialName1); assertThat(provider, hasCredentials(TEST_ACCESS_KEY_ID, TEST_SECRET_KEY)); }
@Test public void testProfileProviderWithOneArg() { AWSCredentialsProvider provider = decoder.decodeValue(credentialName2 + "|arg"); assertThat(provider, hasCredentials("arg", "blank")); }
@Test public void testProfileProviderWithTwoArgs() { AWSCredentialsProvider provider = decoder.decodeValue(credentialName2 + "|arg1|arg2"); assertThat(provider, hasCredentials("arg1", "arg2")); }