package com.amazonaws.iotanalytics.channel; 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.iotanalytics.IoTAnalyticsClient; import software.amazon.cloudformation.proxy.AmazonWebServicesClientProxy; import software.amazon.cloudformation.proxy.Credentials; import software.amazon.cloudformation.proxy.LoggerProxy; import software.amazon.cloudformation.proxy.ProxyClient; import java.time.Duration; import java.util.concurrent.CompletableFuture; import java.util.function.Function; import static org.mockito.Mockito.mock; public abstract class AbstractTestBase { protected static final Credentials MOCK_CREDENTIALS; protected static final LoggerProxy logger; protected ProxyClient proxyClient; protected IoTAnalyticsClient client; protected AmazonWebServicesClientProxy proxy; static { MOCK_CREDENTIALS = new Credentials("accessKey", "secretKey", "token"); logger = new LoggerProxy(); } protected void setUp() { client = mock(IoTAnalyticsClient.class); proxy = new AmazonWebServicesClientProxy(logger, MOCK_CREDENTIALS, () -> Duration.ofSeconds(600).toMillis()); proxyClient = MOCK_PROXY(proxy, client); } private static ProxyClient MOCK_PROXY( final AmazonWebServicesClientProxy proxy, final IoTAnalyticsClient client) { return new ProxyClient() { @Override public ResponseT injectCredentialsAndInvokeV2( final RequestT request, final Function requestFunction) { return proxy.injectCredentialsAndInvokeV2(request, requestFunction); } @Override public CompletableFuture injectCredentialsAndInvokeV2Async( final RequestT request, final Function> requestFunction) { throw new UnsupportedOperationException(); } @Override public > IterableT injectCredentialsAndInvokeIterableV2( final RequestT request, final Function requestFunction) { return proxy.injectCredentialsAndInvokeIterableV2(request, requestFunction); } @Override public ResponseInputStream injectCredentialsAndInvokeV2InputStream( final RequestT requestT, final Function> function) { throw new UnsupportedOperationException(); } @Override public ResponseBytes injectCredentialsAndInvokeV2Bytes( final RequestT requestT, final Function> function) { throw new UnsupportedOperationException(); } @Override public IoTAnalyticsClient client() { return client; } }; } }