package software.amazon.ecr.registrypolicy; import com.google.common.reflect.TypeToken; import com.google.gson.Gson; import java.util.Map; import java.util.concurrent.CompletableFuture; import java.util.function.Function; 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.ecr.EcrClient; 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 LoggerProxy logger; protected static final Map REGISTRY_POLICY_INPUT; static final String TEST_REGISTRY_ID = "12345"; static final String REGISTRY_POLICY_INPUT_TEXT = "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Sid\":\"ReplicationAccessCrossAccount\",\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"arn:aws:iam::123412341234:root\"},\"Action\":[\"ecr:CreateRepository\",\"ecr:ReplicateImage\"],\"Resource\":\"arn:aws:ecr:us-west-2:123456123456:repository\"}]}"; static final String REGISTRY_POLICY_OUTPUT_TEXT = "{\n \"Version\" : \"2012-10-17\",\n \"Statement\" : [ {\n \"Sid\" : \"ReplicationAccessCrossAccount\",\n \"Effect\" : \"Allow\",\n \"Principal\" : {\n \"AWS\" : \"arn:aws:iam::123412341234:root\"\n },\n \"Action\" : [ \"ecr:CreateRepository\", \"ecr:ReplicateImage\" ],\n \"Resource\" : \"arn:aws:ecr:us-west-2:123456123456:repository\"\n } ]\n}"; static { MOCK_CREDENTIALS = new Credentials("accessKey", "secretKey", "token"); logger = new LoggerProxy(); REGISTRY_POLICY_INPUT = new Gson().fromJson(REGISTRY_POLICY_INPUT_TEXT, new TypeToken>() {}.getType()); } static ProxyClient MOCK_PROXY( final AmazonWebServicesClientProxy proxy, final EcrClient sdkClient) { return new ProxyClient() { @Override public ResponseT injectCredentialsAndInvokeV2(RequestT request, Function requestFunction) { return proxy.injectCredentialsAndInvokeV2(request, requestFunction); } @Override public CompletableFuture injectCredentialsAndInvokeV2Async(RequestT request, Function> requestFunction) { throw new UnsupportedOperationException(); } @Override public > IterableT injectCredentialsAndInvokeIterableV2(RequestT request, Function requestFunction) { return proxy.injectCredentialsAndInvokeIterableV2(request, requestFunction); } @Override public ResponseInputStream injectCredentialsAndInvokeV2InputStream(RequestT requestT, Function> function) { throw new UnsupportedOperationException(); } @Override public ResponseBytes injectCredentialsAndInvokeV2Bytes(RequestT requestT, Function> function) { throw new UnsupportedOperationException(); } @Override public EcrClient client() { return sdkClient; } }; } }