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?
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.