from __future__ import annotations from pydantic import ValidationError import pytest from pytest import MonkeyPatch from core.config.settings import Settings def test_social_prefixed_storage_env_populates_settings( monkeypatch: MonkeyPatch, ) -> None: monkeypatch.setenv("SOCIAL_STORAGE__PROVIDER", "supabase") monkeypatch.setenv("SOCIAL_STORAGE__ATTACHMENT__BUCKET", "agent-chat-attachments") monkeypatch.setenv("SOCIAL_STORAGE__AVATAR__BUCKET", "avatars") monkeypatch.setenv("SOCIAL_STORAGE__SIGNED_URL_TTL_SECONDS", "900") monkeypatch.setenv("SOCIAL_STORAGE__ATTACHMENT__MAX_SIZE_MB", "25") monkeypatch.setenv("SOCIAL_STORAGE__AVATAR__MAX_SIZE_MB", "3") monkeypatch.setenv("SOCIAL_STORAGE__RETENTION_DAYS", "45") settings = Settings() assert settings.storage.provider == "supabase" assert settings.storage.attachment.bucket == "agent-chat-attachments" assert settings.storage.avatar.bucket == "avatars" assert settings.storage.signed_url_ttl_seconds == 900 assert settings.storage.attachment.max_size_mb == 25 assert settings.storage.avatar.max_size_mb == 3 assert settings.storage.retention_days == 45 def test_storage_settings_validation_rejects_invalid_provider( monkeypatch: MonkeyPatch, ) -> None: monkeypatch.setenv("SOCIAL_STORAGE__PROVIDER", "s3") with pytest.raises(ValidationError): Settings()