unit testing AWS secret manager java

2.9k Views Asked by At

I need to unit test AWS secret manager that is in Java and am using Mockito and EasyMock to do that and whenever I call client.getSecretValue(), it is trowing the exception Code to be tested

AWSSecretsManagerClient client =
            (AWSSecretsManagerClient) 
AWSSecretsManagerClientBuilder.standard().withRegion(region).build();

    String secret = null, decodedBinarySecret = null;
    GetSecretValueRequest getSecretValueRequest = new GetSecretValueRequest().withSecretId(secretName);
    GetSecretValueResult getSecretValueResult = null;
    AWSSecrets awsSecrets = null;
    try {
        getSecretValueResult = client.getSecretValue(getSecretValueRequest);
    } catch (DecryptionFailureException e) {

Exception

 "com.amazonaws.SdkClientException: Unable to load AWS credentials from any provider in the chain: [EnvironmentVariableCredentialsProvider: Unable to load AWS credentials from environment variables (AWS_ACCESS_KEY_ID (or AWS_ACCESS_KEY) and AWS_SECRET_KEY (or AWS_SECRET_ACCESS_KEY)), SystemPropertiesCredentialsProvider: Unable to load AWS credentials from Java system properties (aws.accessKeyId and aws.secretKey), com.amazonaws.auth.profile.ProfileCredentialsProvider@28ce75ec: Unable to load credentials into profile [default]: AWS Access Key ID is not specified., WebIdentityTokenCredentialsProvider: To use assume role profiles the aws-java-sdk-sts module must be on the class path., com.amazonaws.auth.EC2ContainerCredentialsProviderWrapper@4db728df: Unable to load credentials from service endpoint]".

Can anybody help me with this?

1

There are 1 best solutions below

0
On

You are creating an instance of GetSecretValueRequest instead of creating a mock for it.

Your test is trying to communicate with the real object thereby asking for your AWS credentials.