from __future__ import annotations import os from EvoScientist.config.provider_admin import ( get_provider_admin_token, get_provider_admin_token_path, ) def test_explicit_provider_admin_token_wins(monkeypatch, tmp_path): monkeypatch.setenv("XDG_CONFIG_HOME", str(tmp_path)) monkeypatch.setenv("EVOSCIENTIST_PROVIDER_ADMIN_TOKEN", "explicit-token") assert get_provider_admin_token() == "explicit-token" assert not get_provider_admin_token_path().exists() def test_provider_admin_token_is_created_and_reused(monkeypatch, tmp_path): monkeypatch.setenv("XDG_CONFIG_HOME", str(tmp_path)) monkeypatch.delenv("EVOSCIENTIST_PROVIDER_ADMIN_TOKEN", raising=False) first = get_provider_admin_token() second = get_provider_admin_token() path = get_provider_admin_token_path() assert first assert first == second assert path.read_text(encoding="utf-8").strip() == first if os.name != "nt": assert path.parent.stat().st_mode & 0o777 == 0o700 assert path.stat().st_mode & 0o777 == 0o600 def test_provider_admin_token_reads_existing_file(monkeypatch, tmp_path): monkeypatch.setenv("XDG_CONFIG_HOME", str(tmp_path)) monkeypatch.delenv("EVOSCIENTIST_PROVIDER_ADMIN_TOKEN", raising=False) path = get_provider_admin_token_path() path.parent.mkdir(parents=True) path.write_text("shared-token\n", encoding="utf-8") assert get_provider_admin_token() == "shared-token"