feat: 他PRのフィードバック S3の例外テストを実装
This commit is contained in:
parent
a298e32204
commit
4e215335f7
@ -35,6 +35,22 @@ class TestS3Resource:
|
||||
# Assert
|
||||
assert actual == 'aaaaaaaaaaaaaaa'
|
||||
|
||||
def test_raise_get_object(self, s3_test, s3_client, bucket_name):
|
||||
"""
|
||||
Cases:
|
||||
- オブジェクトのキーが存在しない場合エラーになること
|
||||
Arranges:
|
||||
- S3をモック化する
|
||||
Expects:
|
||||
- オブジェクト取得時にエラーになること
|
||||
"""
|
||||
# Arrange
|
||||
# Act
|
||||
sut = S3Resource(bucket_name)
|
||||
with pytest.raises(Exception):
|
||||
# Assert
|
||||
sut.get_object('hogehoge/test.txt')
|
||||
|
||||
def test_put_object(self, s3_test, s3_client, bucket_name):
|
||||
"""
|
||||
Cases:
|
||||
@ -52,6 +68,23 @@ class TestS3Resource:
|
||||
|
||||
assert actual['Body'].read().decode('utf-8') == 'aaaaaaaaaaaaaaa'
|
||||
|
||||
def test_raise_put_object(self, s3_client, bucket_name):
|
||||
"""
|
||||
Cases:
|
||||
- バケットが存在しない場合エラーになること
|
||||
Arranges:
|
||||
- S3をモック化する
|
||||
- バケットを作成しない
|
||||
Expects:
|
||||
- オブジェクト登録時にエラーになること
|
||||
"""
|
||||
# Arrange
|
||||
# Act
|
||||
sut = S3Resource(bucket_name)
|
||||
with pytest.raises(Exception):
|
||||
# Assert
|
||||
sut.put_object('hogehoge/test.txt', 'aaaaaaaaaaaaaaa')
|
||||
|
||||
def test_copy(self, s3_test, s3_client, bucket_name):
|
||||
"""
|
||||
Cases:
|
||||
@ -74,7 +107,23 @@ class TestS3Resource:
|
||||
actual = s3_client.get_object(Bucket=for_copy_bucket, Key='test.txt')
|
||||
assert actual['Body'].read() == b'aaaaaaaaaaaaaaa'
|
||||
|
||||
def test_init_raise_no_provide_bucket_name(self):
|
||||
def test_raise_copy(self, s3_client, s3_test, bucket_name):
|
||||
"""
|
||||
Cases:
|
||||
- コピー対象のキーが存在しない場合エラーになること
|
||||
Arranges:
|
||||
- S3をモック化する
|
||||
Expects:
|
||||
- オブジェクト登録時にエラーになること
|
||||
"""
|
||||
# Arrange
|
||||
# Act
|
||||
sut = S3Resource(bucket_name)
|
||||
with pytest.raises(Exception):
|
||||
# Assert
|
||||
sut.copy(bucket_name, 'hogehoge/test.txt', 'for_copy_bucket', 'test.txt')
|
||||
|
||||
def test_raise_init_no_provide_bucket_name(self):
|
||||
"""
|
||||
Cases:
|
||||
- バケット名を指定しない場合、例外となること
|
||||
@ -95,6 +144,7 @@ class TestConfigBucket:
|
||||
Cases:
|
||||
- オブジェクト情報ファイルが取得できること
|
||||
Arranges:
|
||||
- 環境変数を置き換える
|
||||
- オブジェクト情報ファイルを配置する
|
||||
Expects:
|
||||
- オブジェクト情報ファイルが文字列として取得でき、期待値と一致する
|
||||
@ -109,6 +159,24 @@ class TestConfigBucket:
|
||||
|
||||
assert actual == 'aaaaaaaaaaaaaaa'
|
||||
|
||||
def test_raise_get_object_info_file(self, s3_test, s3_client, bucket_name, monkeypatch):
|
||||
"""
|
||||
Cases:
|
||||
- オブジェクト情報ファイルが存在しない場合、エラーになること
|
||||
Arranges:
|
||||
- s3_testフィクスチャを引数に指定しない
|
||||
- 環境変数を置き換える
|
||||
Expects:
|
||||
- オブジェクト情報ファイルが取得できず、例外が発生する
|
||||
"""
|
||||
monkeypatch.setattr('src.aws.s3.CRM_CONFIG_BUCKET', bucket_name)
|
||||
monkeypatch.setattr('src.aws.s3.OBJECT_INFO_FOLDER', 'crm')
|
||||
monkeypatch.setattr('src.aws.s3.OBJECT_INFO_FILENAME', 'objects.json')
|
||||
|
||||
sut = ConfigBucket()
|
||||
with pytest.raises(Exception):
|
||||
sut.get_object_info_file()
|
||||
|
||||
def test_get_last_fetch_datetime_file(self, s3_test, s3_client, bucket_name, monkeypatch):
|
||||
"""
|
||||
Cases:
|
||||
@ -128,6 +196,23 @@ class TestConfigBucket:
|
||||
|
||||
assert actual == 'aaaaaaaaaaaaaaa'
|
||||
|
||||
def test_raise_get_last_fetch_datetime_file(self, s3_test, s3_client, bucket_name, monkeypatch):
|
||||
"""
|
||||
Cases:
|
||||
- オブジェクト最終更新日時ファイルが存在しない場合、エラーになること
|
||||
Arranges:
|
||||
- s3_testフィクスチャを引数に指定しない
|
||||
- 環境変数を置き換える
|
||||
Expects:
|
||||
- オブジェクト最終更新日時ファイルが取得できず、例外が発生する
|
||||
"""
|
||||
monkeypatch.setattr('src.aws.s3.CRM_CONFIG_BUCKET', bucket_name)
|
||||
monkeypatch.setattr('src.aws.s3.LAST_FETCH_DATE_FOLDER', 'crm')
|
||||
|
||||
sut = ConfigBucket()
|
||||
with pytest.raises(Exception):
|
||||
sut.get_last_fetch_datetime_file('Object.json')
|
||||
|
||||
def test_put_last_fetch_datetime_file(self, s3_test, s3_client, bucket_name, monkeypatch):
|
||||
"""
|
||||
Cases:
|
||||
@ -147,6 +232,23 @@ class TestConfigBucket:
|
||||
actual = s3_client.get_object(Bucket=bucket_name, Key=f'crm/Object.json')
|
||||
assert actual['Body'].read().decode('utf-8') == 'aaaaaaaaaaaaaaa'
|
||||
|
||||
def test_raise_put_last_fetch_datetime_file(self, s3_client, bucket_name, monkeypatch):
|
||||
"""
|
||||
Cases:
|
||||
- オブジェクト最終更新日時ファイルをPUTできない場合、エラーになること
|
||||
Arranges:
|
||||
- s3_testフィクスチャを引数に指定しない
|
||||
- 環境変数を置き換える
|
||||
Expects:
|
||||
- オブジェクト最終更新日時ファイルをPUTできず、例外が発生する
|
||||
"""
|
||||
monkeypatch.setattr('src.aws.s3.CRM_CONFIG_BUCKET', bucket_name)
|
||||
monkeypatch.setattr('src.aws.s3.LAST_FETCH_DATE_FOLDER', 'crm')
|
||||
|
||||
sut = ConfigBucket()
|
||||
with pytest.raises(Exception):
|
||||
sut.put_last_fetch_datetime_file('Object.json', 'aaaaaaaaaaaaaaa')
|
||||
|
||||
def test_config_bucket_str(self, s3_test, s3_client, bucket_name, monkeypatch):
|
||||
"""
|
||||
Cases:
|
||||
@ -184,6 +286,23 @@ class TestDataBucket:
|
||||
actual = s3_client.get_object(Bucket=bucket_name, Key=f'crm/target/test.csv')
|
||||
assert actual['Body'].read().decode('utf-8') == 'test,test,test'
|
||||
|
||||
def test_raise_put_csv(self, s3_client, bucket_name, monkeypatch):
|
||||
"""
|
||||
Cases:
|
||||
- CSVファイルをPUTできず、エラーになること
|
||||
Arranges:
|
||||
- s3_testフィクスチャを引数に指定しない
|
||||
- 環境変数を置き換える
|
||||
Expects:
|
||||
- CSVファイルをPUTできず、例外が発生する
|
||||
"""
|
||||
monkeypatch.setattr('src.aws.s3.IMPORT_DATA_BUCKET', bucket_name)
|
||||
monkeypatch.setattr('src.aws.s3.CRM_IMPORT_DATA_FOLDER', 'crm/target')
|
||||
|
||||
sut = DataBucket()
|
||||
with pytest.raises(Exception):
|
||||
sut.put_csv('test.csv', 'test,test,test')
|
||||
|
||||
def test_put_csv_from(self, s3_test, s3_client, bucket_name, monkeypatch):
|
||||
"""
|
||||
Cases:
|
||||
@ -209,6 +328,23 @@ class TestDataBucket:
|
||||
|
||||
assert actual['Body'].read().decode('utf-8') == 'test,test,test'
|
||||
|
||||
def test_raise_put_csv_from(self, s3_client, bucket_name, monkeypatch):
|
||||
"""
|
||||
Cases:
|
||||
- 他のバケットからCSVファイルをコピーできず、エラーになること
|
||||
Arranges:
|
||||
- s3_testフィクスチャを引数に指定しない
|
||||
- 環境変数を置き換える
|
||||
Expects:
|
||||
- コピーできず、例外が発生する
|
||||
"""
|
||||
monkeypatch.setattr('src.aws.s3.IMPORT_DATA_BUCKET', 'for_copy_bucket')
|
||||
monkeypatch.setattr('src.aws.s3.CRM_IMPORT_DATA_FOLDER', 'crm/target')
|
||||
|
||||
sut = DataBucket()
|
||||
with pytest.raises(Exception):
|
||||
sut.put_csv_from(bucket_name, 'hogehoge/test.csv')
|
||||
|
||||
def test_data_bucket_str(self, s3_test, s3_client, bucket_name, monkeypatch):
|
||||
"""
|
||||
Cases:
|
||||
@ -246,6 +382,23 @@ class TestBackupBucket:
|
||||
actual = s3_client.get_object(Bucket=bucket_name, Key=f'data_import/test.csv')
|
||||
assert actual['Body'].read().decode('utf-8') == 'test,test,test'
|
||||
|
||||
def test_raise_put_csv_from(self, s3_client, bucket_name, monkeypatch):
|
||||
"""
|
||||
Cases:
|
||||
- CSVファイルをPUTできず、エラーになること
|
||||
Arranges:
|
||||
- s3_testフィクスチャを引数に指定しない
|
||||
- 環境変数を置き換える
|
||||
Expects:
|
||||
- CSVファイルがPUTできず、例外が発生する
|
||||
"""
|
||||
monkeypatch.setattr('src.aws.s3.IMPORT_DATA_BUCKET', bucket_name)
|
||||
monkeypatch.setattr('src.aws.s3.CRM_IMPORT_DATA_FOLDER', 'crm/target')
|
||||
|
||||
sut = BackupBucket()
|
||||
with pytest.raises(Exception):
|
||||
sut.put_csv('test.csv', 'test,test,test')
|
||||
|
||||
def test_put_response_json(self, s3_test, s3_client, bucket_name, monkeypatch):
|
||||
"""
|
||||
Cases:
|
||||
@ -265,10 +418,27 @@ class TestBackupBucket:
|
||||
actual = s3_client.get_object(Bucket=bucket_name, Key=f'response_json/test.json')
|
||||
assert actual['Body'].read().decode('utf-8') == '{"test": "test"}'
|
||||
|
||||
def test_raise_response_json(self, s3_client, bucket_name, monkeypatch):
|
||||
"""
|
||||
Cases:
|
||||
- JSONファイルをPUTできず、エラーになること
|
||||
Arranges:
|
||||
- s3_testフィクスチャを引数に指定しない
|
||||
- 環境変数を置き換える
|
||||
Expects:
|
||||
- JSONファイルをPUTできず、例外が発生する
|
||||
"""
|
||||
monkeypatch.setattr('src.aws.s3.CRM_BACKUP_BUCKET', bucket_name)
|
||||
monkeypatch.setattr('src.aws.s3.RESPONSE_JSON_BACKUP_FOLDER', 'response_json')
|
||||
|
||||
sut = BackupBucket()
|
||||
with pytest.raises(Exception):
|
||||
sut.put_response_json('test.json', {"test": "test"})
|
||||
|
||||
def test_put_result_json(self, s3_test, s3_client, bucket_name, monkeypatch):
|
||||
"""
|
||||
Cases:
|
||||
- JSONファイルをPUTできること
|
||||
- 結果のJSONファイルをPUTできること
|
||||
Arranges:
|
||||
- S3をモック化する
|
||||
- 環境変数をテスト用の値に置き換える
|
||||
@ -284,6 +454,23 @@ class TestBackupBucket:
|
||||
actual = s3_client.get_object(Bucket=bucket_name, Key=f'data_import/result.json')
|
||||
assert actual['Body'].read().decode('utf-8') == '{"test": "test"}'
|
||||
|
||||
def test_raise_result_json(self, s3_client, bucket_name, monkeypatch):
|
||||
"""
|
||||
Cases:
|
||||
- 結果のJSONファイルをPUTできず、エラーになること
|
||||
Arranges:
|
||||
- s3_testフィクスチャを引数に指定しない
|
||||
- 環境変数を置き換える
|
||||
Expects:
|
||||
- 結果のJSONファイルをPUTできず、例外が発生する
|
||||
"""
|
||||
monkeypatch.setattr('src.aws.s3.CRM_BACKUP_BUCKET', bucket_name)
|
||||
monkeypatch.setattr('src.aws.s3.PROCESS_RESULT_FOLDER', 'data_import')
|
||||
|
||||
sut = BackupBucket()
|
||||
with pytest.raises(Exception):
|
||||
sut.put_result_json('result.json', {"test": "test"})
|
||||
|
||||
def test_backup_bucket_str(self, s3_test, s3_client, bucket_name, monkeypatch):
|
||||
"""
|
||||
Cases:
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user