43 lines
1.4 KiB
Python
43 lines
1.4 KiB
Python
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"
|