SIENTIAPDE-1350: Add tests for close method and paginated list_bucket_objects
This commit is contained in:
@@ -462,3 +462,52 @@ def test_fetch_file_logs_file_size(mock_boto3, mock_logger, storage_config):
|
|||||||
# Verify logging includes file size
|
# Verify logging includes file size
|
||||||
log_calls = [str(call) for call in mock_logger.info.call_args_list]
|
log_calls = [str(call) for call in mock_logger.info.call_args_list]
|
||||||
assert any('12345 bytes' in str(call) for call in log_calls)
|
assert any('12345 bytes' in str(call) for call in log_calls)
|
||||||
|
|
||||||
|
|
||||||
|
@patch('model_manager.utils.repository.storage_repository.boto3')
|
||||||
|
def test_close_method(mock_boto3, mock_logger, storage_config):
|
||||||
|
"""Test that the close method calls the underlying client's close method."""
|
||||||
|
from model_manager.utils.repository.storage_repository import StorageRepository
|
||||||
|
|
||||||
|
mock_s3_client = Mock()
|
||||||
|
mock_boto3.client.return_value = mock_s3_client
|
||||||
|
|
||||||
|
repo = StorageRepository(logger=mock_logger, **storage_config)
|
||||||
|
repo.close()
|
||||||
|
|
||||||
|
mock_s3_client.close.assert_called_once()
|
||||||
|
mock_logger.info.assert_called_with('MinIO client closed')
|
||||||
|
|
||||||
|
|
||||||
|
@patch('model_manager.utils.repository.storage_repository.boto3')
|
||||||
|
def test_list_bucket_objects_with_pagination(mock_boto3, mock_logger, storage_config):
|
||||||
|
"""Test list_bucket_objects with a paginated response."""
|
||||||
|
from model_manager.utils.repository.storage_repository import StorageRepository
|
||||||
|
|
||||||
|
mock_s3_client = Mock()
|
||||||
|
mock_paginator = Mock()
|
||||||
|
page1 = {
|
||||||
|
'Contents': [
|
||||||
|
{'Key': 'file1.txt'},
|
||||||
|
{'Key': 'file2.txt'},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
page2 = {
|
||||||
|
'Contents': [
|
||||||
|
{'Key': 'file3.txt'},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
page3 = {}
|
||||||
|
|
||||||
|
mock_paginator.paginate.return_value = [page1, page2, page3]
|
||||||
|
mock_s3_client.get_paginator.return_value = mock_paginator
|
||||||
|
mock_boto3.client.return_value = mock_s3_client
|
||||||
|
|
||||||
|
repo = StorageRepository(logger=mock_logger, **storage_config)
|
||||||
|
objects = repo.list_bucket_objects('test-bucket', max_keys=2)
|
||||||
|
|
||||||
|
assert objects == ['file1.txt', 'file2.txt', 'file3.txt']
|
||||||
|
assert len(objects) == 3
|
||||||
|
mock_s3_client.get_paginator.assert_called_once_with('list_objects_v2')
|
||||||
|
mock_paginator.paginate.assert_called_once_with(Bucket='test-bucket', MaxKeys=2)
|
||||||
|
mock_logger.info.assert_any_call('Listed 3 objects from bucket test-bucket')
|
||||||
|
|||||||
Reference in New Issue
Block a user