Spaces:
Paused
Paused
| from unittest.mock import MagicMock, patch | |
| import pytest | |
| # Now we import the REAL service to ensure the file exists and works | |
| from app.services.infrastructure.storage.backup_service import BackupService | |
| def test_create_backup_mock_fs(): | |
| """Test backup creation with file system mocked""" | |
| # Mock shutil and os to prevent actual file creation | |
| with patch( | |
| "shutil.make_archive", return_value="/tmp/backup.zip" | |
| ) as mock_shutil, patch("os.makedirs"), patch( | |
| "os.path.exists", return_value=True | |
| ), patch( | |
| "builtins.open", MagicMock() | |
| ), patch( | |
| "shutil.rmtree" | |
| ): | |
| service = BackupService() | |
| # Override backup_dir for safety | |
| service.backup_dir = "/tmp/backups" | |
| result = service.create_backup(include_db=False) | |
| assert result == "/tmp/backup.zip" | |
| # Verify make_archive was called | |
| assert mock_shutil.called | |
| async def test_upload_to_s3_mock_boto(): | |
| """Test S3 upload with mocked boto3 client""" | |
| # Simpler: Mock the `boto3` module in sys.modules so the import works | |
| mock_boto = MagicMock() | |
| with patch.dict("sys.modules", {"boto3": mock_boto}), patch( | |
| "os.path.exists", return_value=True | |
| ), patch("os.path.basename", return_value="backup.zip"), patch( | |
| "core.config.settings.S3_BUCKET_NAME", "test-bucket" | |
| ): | |
| service = BackupService() | |
| success = await service.upload_to_s3("backup.zip", "my-bucket") | |
| assert success is True | |
| mock_boto.client.return_value.upload_file.assert_called_once() | |