def test_cur_without_resourceids(self, mock_boto3_client): """Test that a CUR without resource IDs raises ValidationError.""" bucket = FAKE.word() s3_client = Mock() s3_client.describe_report_definitions.return_value = {'ReportDefinitions': [ {'ReportName': FAKE.word(), 'TimeUnit': 'HOURLY', 'Format': 'textORcsv', 'Compression': 'GZIP', 'AdditionalSchemaElements': [], 'S3Bucket': bucket, 'S3Prefix': FAKE.word(), 'S3Region': 'us-east-1', 'AdditionalArtifacts': [], 'RefreshClosedReports': True, 'ReportVersioning': 'CREATE_NEW_REPORT'}], 'ResponseMetadata': {'RequestId': FAKE.uuid4(), 'HTTPStatusCode': 200, 'HTTPHeaders': {'x-amzn-requestid': FAKE.uuid4(), 'content-type': 'application/x-amz-json-1.1', 'content-length': '1234', 'date': FAKE.date_time()}, 'RetryAttempts': 0}} mock_boto3_client.return_value = s3_client with self.assertRaises(ValidationError): _check_cost_report_access(FAKE.word(), {'aws_access_key_id': FAKE.md5(), 'aws_secret_access_key': FAKE.md5(), 'aws_session_token': FAKE.md5()}, bucket=bucket)
def test_check_cost_report_access_compression_error( self, mock_boto3_client): """Test _check_cost_report_access success.""" test_bucket = "test-bucket" s3_client = Mock() s3_client.describe_report_definitions.return_value = { "ReportDefinitions": [{ "ReportName": FAKE.word(), "Compression": "Parquet", "AdditionalSchemaElements": ["RESOURCES"], "S3Bucket": test_bucket, "S3Region": "us-east-1", }] } mock_boto3_client.return_value = s3_client with self.assertRaises(ValidationError): _check_cost_report_access( FAKE.word(), { "aws_access_key_id": FAKE.md5(), "aws_secret_access_key": FAKE.md5(), "aws_session_token": FAKE.md5(), }, bucket=test_bucket, )
def test_check_cost_report_access(self, mock_boto3_client): """Test _check_cost_report_access success.""" s3_client = Mock() s3_client.describe_report_definitions.return_value = {'ReportDefinitions': [ {'ReportName': FAKE.word(), 'TimeUnit': 'HOURLY', 'Format': 'textORcsv', 'Compression': 'GZIP', 'AdditionalSchemaElements': ['RESOURCES'], 'S3Bucket': FAKE.word(), 'S3Prefix': FAKE.word(), 'S3Region': 'us-east-1', 'AdditionalArtifacts': [], 'RefreshClosedReports': True, 'ReportVersioning': 'CREATE_NEW_REPORT'}], 'ResponseMetadata': {'RequestId': FAKE.uuid4(), 'HTTPStatusCode': 200, 'HTTPHeaders': {'x-amzn-requestid': FAKE.uuid4(), 'content-type': 'application/x-amz-json-1.1', 'content-length': '1234', 'date': FAKE.date_time()}, 'RetryAttempts': 0}} mock_boto3_client.return_value = s3_client try: _check_cost_report_access(FAKE.word(), {'aws_access_key_id': FAKE.md5(), 'aws_secret_access_key': FAKE.md5(), 'aws_session_token': FAKE.md5()}) except Exception as exc: self.fail(exc)
def test_check_cost_report_access_fail(self, mock_boto3_client): """Test _check_cost_report_access fail.""" s3_client = Mock() s3_client.describe_report_definitions.side_effect = _mock_boto3_kwargs_exception mock_boto3_client.return_value = s3_client with self.assertRaises(ValidationError): _check_cost_report_access(FAKE.word(), {'aws_access_key_id': FAKE.md5(), 'aws_secret_access_key': FAKE.md5(), 'aws_session_token': FAKE.md5()}, bucket='wrongbucket')
def test_cur_has_resourceids(self, mock_boto3_client): """Test that a CUR with resource IDs succeeds.""" bucket = FAKE.word() s3_client = Mock() s3_client.describe_report_definitions.return_value = { "ReportDefinitions": [ { "ReportName": FAKE.word(), "TimeUnit": "HOURLY", "Format": "textORcsv", "Compression": "GZIP", "AdditionalSchemaElements": ["RESOURCES"], "S3Bucket": bucket, "S3Prefix": FAKE.word(), "S3Region": "us-east-1", "AdditionalArtifacts": [], "RefreshClosedReports": True, "ReportVersioning": "CREATE_NEW_REPORT", } ], "ResponseMetadata": { "RequestId": FAKE.uuid4(), "HTTPStatusCode": 200, "HTTPHeaders": { "x-amzn-requestid": FAKE.uuid4(), "content-type": "application/x-amz-json-1.1", "content-length": "1234", "date": FAKE.date_time(), }, "RetryAttempts": 0, }, } mock_boto3_client.return_value = s3_client try: _check_cost_report_access( FAKE.word(), { "aws_access_key_id": FAKE.md5(), "aws_secret_access_key": FAKE.md5(), "aws_session_token": FAKE.md5(), }, bucket=bucket, ) except Exception as exc: self.fail(str(exc))