import os import pytest from app.config import load_config, ConfigError def test_missing_required_raises(): with pytest.raises(ConfigError) as e: load_config({"IMMICH_URL": "http://x"}) assert "IMMICH_API_KEY" in e.value.missing def test_anthropic_optional_and_paths(tmp_path): cfg = load_config({"IMMICH_URL": "http://x/", "IMMICH_API_KEY": "k", "DATA_DIR": str(tmp_path)}) assert cfg.immich_url == "http://x" # trailing slash stripped assert cfg.anthropic_api_key == "" # optional in M1 assert cfg.db_path == os.path.join(str(tmp_path), "trip-cluster.db") assert cfg.thumbs_dir == os.path.join(str(tmp_path), "thumbs") def test_immich_db_url_optional(): # DSN is optional — only the pgvector spike / M1.5 need it; REST creds stay required. cfg = load_config({"IMMICH_URL": "http://x", "IMMICH_API_KEY": "k"}) assert cfg.immich_db_url is None cfg = load_config({"IMMICH_URL": "http://x", "IMMICH_API_KEY": "k", "IMMICH_DB_URL": " postgresql://u:p@h:5432/immich "}) assert cfg.immich_db_url == "postgresql://u:p@h:5432/immich" # trimmed