Introduce typed config objects, optional adapter injection, and .env loading to simplify testing while preserving env-based defaults for production usage. Co-authored-by: Cursor <[email protected]>
32 lines
1.1 KiB
Python
32 lines
1.1 KiB
Python
"""Unit tests for MinioConfig."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import pytest
|
|
|
|
from python_repositories.config import MinioConfig
|
|
|
|
|
|
def test_from_env_loads_all_fields(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")
|
|
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 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)
|