package com.amazonaws.ssm.opsmetadata; import java.util.HashMap; import java.util.Map; import java.util.concurrent.CompletableFuture; import java.util.function.Function; import org.slf4j.LoggerFactory; import software.amazon.awssdk.awscore.AwsRequest; import software.amazon.awssdk.awscore.AwsResponse; import software.amazon.awssdk.core.ResponseBytes; import software.amazon.awssdk.core.ResponseInputStream; import software.amazon.awssdk.core.pagination.sync.SdkIterable; import software.amazon.awssdk.services.ssm.SsmClient; import software.amazon.cloudformation.proxy.AmazonWebServicesClientProxy; import software.amazon.cloudformation.proxy.Credentials; import software.amazon.cloudformation.proxy.LoggerProxy; import software.amazon.cloudformation.proxy.ProxyClient; public class AbstractTestBase { protected static final Credentials MOCK_CREDENTIALS; protected static final org.slf4j.Logger delegate; protected static final LoggerProxy logger; protected static final Map TAG_SET; protected static final Map SYSTEM_TAGS_SET; protected static final Map PREVIOUS_TAG_SET; static { System.setProperty("org.slf4j.simpleLogger.showDateTime", "true"); System.setProperty("org.slf4j.simpleLogger.dateTimeFormat", "HH:mm:ss:SSS Z"); MOCK_CREDENTIALS = new Credentials("accessKey", "secretKey", "token"); delegate = LoggerFactory.getLogger("testing"); logger = new LoggerProxy(); TAG_SET = new HashMap() { { put("key1", "value1"); put("key2", "value2"); } }; SYSTEM_TAGS_SET = new HashMap() { { put("aws:cloudformation:stack-name", "DummyStackName"); put("aws:cloudformation:logical-id", "DummyLogicalId"); put("aws:cloudformation:stack-id", "DummyStackArn"); } }; PREVIOUS_TAG_SET = new HashMap() { { put("key3", "value3"); } }; PREVIOUS_TAG_SET.putAll(TAG_SET); PREVIOUS_TAG_SET.putAll(SYSTEM_TAGS_SET); } static ProxyClient MOCK_PROXY( final AmazonWebServicesClientProxy proxy, final SsmClient ssmClient ) { return new ProxyClient() { @Override public ResponseT injectCredentialsAndInvokeV2(RequestT requestT, Function function) { return proxy.injectCredentialsAndInvokeV2(requestT, function); } @Override public CompletableFuture injectCredentialsAndInvokeV2Async(RequestT requestT, Function> function) { throw new UnsupportedOperationException(); } @Override public > IterableT injectCredentialsAndInvokeIterableV2(RequestT requestT, Function function) { return proxy.injectCredentialsAndInvokeIterableV2(requestT, function); } @Override public ResponseInputStream injectCredentialsAndInvokeV2InputStream(RequestT requestT, Function> function) { throw new UnsupportedOperationException(); } @Override public ResponseBytes injectCredentialsAndInvokeV2Bytes(RequestT requestT, Function> function) { throw new UnsupportedOperationException(); } @Override public SsmClient client() { return ssmClient; } }; } }