import uuid import pytest from anyio import CapacityLimiter from src.application.files.storage_keys import source_file_object_key from src.config import MinioSettings from src.infrastructure.minio.client import create_client from src.infrastructure.minio.storage import MinioObjectStorage pytestmark = [pytest.mark.integration, pytest.mark.minio, pytest.mark.asyncio] async def test_put_object_stores_bytes_under_server_derived_key( minio_settings: MinioSettings, ) -> None: client = create_client(minio_settings) storage = MinioObjectStorage(client, bucket=minio_settings.bucket, limiter=CapacityLimiter(2)) key = source_file_object_key(uuid.uuid4(), uuid.uuid4()) data = b"tenant-scoped, id-addressed bytes" await storage.put_object(key=key, data=data, content_type="text/csv") stored = client.get_object(minio_settings.bucket, key).read() assert stored == data async def test_put_object_overwrites_existing_object_at_same_key( minio_settings: MinioSettings, ) -> None: client = create_client(minio_settings) storage = MinioObjectStorage(client, bucket=minio_settings.bucket, limiter=CapacityLimiter(2)) key = source_file_object_key(uuid.uuid4(), uuid.uuid4()) await storage.put_object(key=key, data=b"first", content_type="text/csv") await storage.put_object(key=key, data=b"second", content_type="text/csv") stored = client.get_object(minio_settings.bucket, key).read() assert stored == b"second"