"""Unit tests for MinioConfig.""" from __future__ import annotations import pytest from python_repositories.config import MinioConfig def _set_required_minio_env(monkeypatch: pytest.MonkeyPatch) -> None: monkeypatch.setenv("MINIO_ENDPOINT", "localhost:9000") monkeypatch.setenv("MINIO_ACCESS_KEY", "access") monkeypatch.setenv("MINIO_SECRET_KEY", "secret") monkeypatch.setenv("MINIO_BUCKET", "my-bucket") def test_from_env_loads_all_fields(monkeypatch: pytest.MonkeyPatch) -> None: _set_required_minio_env(monkeypatch) config = MinioConfig.from_env(use_dotenv=False) assert config.endpoint == "localhost:9000" assert config.access_key == "access" assert config.secret_key == "secret" assert config.bucket == "my-bucket" assert config.secure is True assert config.create_bucket_if_missing is False def test_from_env_defaults_secure_to_true_when_unset( monkeypatch: pytest.MonkeyPatch, ) -> None: _set_required_minio_env(monkeypatch) monkeypatch.delenv("MINIO_SECURE", raising=False) config = MinioConfig.from_env(use_dotenv=False) assert config.secure is True def test_from_env_reads_secure_from_env(monkeypatch: pytest.MonkeyPatch) -> None: _set_required_minio_env(monkeypatch) monkeypatch.setenv("MINIO_SECURE", "false") assert MinioConfig.from_env(use_dotenv=False).secure is False def test_from_env_reads_create_bucket_if_missing_from_env( monkeypatch: pytest.MonkeyPatch, ) -> None: _set_required_minio_env(monkeypatch) monkeypatch.setenv("MINIO_CREATE_BUCKET_IF_MISSING", "true") assert MinioConfig.from_env(use_dotenv=False).create_bucket_if_missing is True def test_from_env_defaults_create_bucket_if_missing_to_false_when_unset( monkeypatch: pytest.MonkeyPatch, ) -> None: _set_required_minio_env(monkeypatch) monkeypatch.delenv("MINIO_CREATE_BUCKET_IF_MISSING", raising=False) config = MinioConfig.from_env(use_dotenv=False) assert config.create_bucket_if_missing is False def test_from_env_raises_when_endpoint_missing( monkeypatch: pytest.MonkeyPatch, ) -> None: monkeypatch.delenv("MINIO_ENDPOINT", raising=False) monkeypatch.setenv("MINIO_ACCESS_KEY", "access") monkeypatch.setenv("MINIO_SECRET_KEY", "secret") monkeypatch.setenv("MINIO_BUCKET", "my-bucket") with pytest.raises(Exception): MinioConfig.from_env(use_dotenv=False)