package software.amazon.devopsguru.loganomalydetectionintegration; 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.cloudwatchlogs.CloudWatchLogsClient; import software.amazon.awssdk.services.devopsguru.DevOpsGuruClient; import software.amazon.awssdk.services.devopsguru.model.DescribeServiceIntegrationRequest; import software.amazon.awssdk.services.devopsguru.model.DescribeServiceIntegrationResponse; import software.amazon.awssdk.services.devopsguru.model.LogsAnomalyDetectionIntegration; import software.amazon.awssdk.services.devopsguru.model.ServiceIntegrationConfig; import software.amazon.cloudformation.proxy.AmazonWebServicesClientProxy; import software.amazon.cloudformation.proxy.Credentials; import software.amazon.cloudformation.proxy.LoggerProxy; import software.amazon.cloudformation.proxy.OperationStatus; import software.amazon.cloudformation.proxy.ProgressEvent; import software.amazon.cloudformation.proxy.ProxyClient; import java.util.concurrent.CompletableFuture; import java.util.function.Function; import static org.assertj.core.api.Assertions.assertThat; public class AbstractTestBase { protected static final Credentials MOCK_CREDENTIALS; protected static final LoggerProxy logger; static final String OPT_IN_STATUS_ENABLED = "ENABLED"; static final String OPT_IN_STATUS_DISABLED = "DISABLED"; static final String accountID = "accountID"; static { MOCK_CREDENTIALS = new Credentials("accessKey", "secretKey", "token"); logger = new LoggerProxy(); } static ProxyClient MOCK_PROXY( final AmazonWebServicesClientProxy proxy, final DevOpsGuruClient devOpsGuruClient) { 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 DevOpsGuruClient client() { return devOpsGuruClient; } }; } static ProxyClient MOCK_PROXY( final AmazonWebServicesClientProxy proxy, final CloudWatchLogsClient cloudWatchLogsClient) { 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 CloudWatchLogsClient client() { return cloudWatchLogsClient; } }; } void assertResponse(ProgressEvent response, ResourceModel responseModel) { assertThat(response).isNotNull(); assertThat(response.getStatus()).isEqualTo(OperationStatus.SUCCESS); assertThat(response.getCallbackContext()).isNull(); assertThat(response.getCallbackDelaySeconds()).isEqualTo(0); assertThat(response.getResourceModel()).isEqualTo(responseModel); assertThat(response.getResourceModels()).isNull(); assertThat(response.getMessage()).isNull(); assertThat(response.getErrorCode()).isNull(); } static LogsAnomalyDetectionIntegration constructLogsAnomalyDetectionIntegration(String optInStatus){ if (optInStatus == null) { return LogsAnomalyDetectionIntegration.builder().build(); } return LogsAnomalyDetectionIntegration.builder().optInStatus(optInStatus).build(); } static DescribeServiceIntegrationResponse constructDescribeServiceIntegrationResponse(String OptInStatus) { return DescribeServiceIntegrationResponse.builder() .serviceIntegration(ServiceIntegrationConfig.builder() .logsAnomalyDetection(constructLogsAnomalyDetectionIntegration(OptInStatus)) .build()) .build(); } static ResourceModel constructResourceModel(){ return ResourceModel.builder() .accountId(accountID) .build(); } }