From d0b5b74f8881ef631ad42f8c02d1e6f679dc2e61 Mon Sep 17 00:00:00 2001 From: Bruno Domingues Date: Tue, 25 Nov 2025 16:04:59 -0300 Subject: [PATCH] SIENTIAPDE-1350: Add tests for close method and paginated list_bucket_objects --- .../repository/test_storage_repository.py | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/tests/utils/repository/test_storage_repository.py b/tests/utils/repository/test_storage_repository.py index d8e22ee..3aaeec7 100644 --- a/tests/utils/repository/test_storage_repository.py +++ b/tests/utils/repository/test_storage_repository.py @@ -462,3 +462,52 @@ def test_fetch_file_logs_file_size(mock_boto3, mock_logger, storage_config): # Verify logging includes file size 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) + + +@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')