Files
hermes-agent/tests/hermes_cli/test_global_auth_store_memo.py
teknium1 4f1dcc2dad test: purge low-value tests, lane py11 (303 removed)
Change-detectors, tautologies, source-reading tests, redundant duplicates,
mock-echo tests and dead/unrunnable tests. Per-test rationale in the lane
ledger (category + reason for every removal).
2026-09-23 03:15:26 -07:00

92 lines
3.1 KiB
Python

"""Measured-work pins for the _load_global_auth_store() memo.
read_credential_pool() -> load_pool() runs _load_global_auth_store() once per
provider row in the /model picker, and the global-store JSON read + parse
cost ~60-100us+ per call even when nothing changed. The memo keyed on the
global auth file's path+mtime makes repeat reads a dict lookup. The store
only changes when the user authenticates at global scope (writes always go
through _save_auth_store, which touches the file), so the mtime key keeps
the memo freshness-correct.
"""
from __future__ import annotations
import json
import os
import pytest
import hermes_cli.auth as auth_mod
@pytest.fixture(autouse=True)
def _reset_cache(monkeypatch):
# raising=False: on pre-fix code the memo attribute doesn't exist (that
# IS the fix); the reset is a no-op there so the measured-work assertions
# fail genuinely instead of erroring.
monkeypatch.setattr(
auth_mod, "_global_auth_store_cache", None, raising=False
)
yield
monkeypatch.setattr(
auth_mod, "_global_auth_store_cache", None, raising=False
)
def _make_global_store(tmp_path) -> "os.PathLike[str]":
"""Write a realistic global auth.json and return its path."""
path = tmp_path / "global-hermes" / "auth.json"
path.parent.mkdir(parents=True)
path.write_text(
json.dumps(
{
"version": 1,
"providers": {
"openai": {"api_key": "sk-x"},
"anthropic": {"api_key": "an-x"},
},
"credential_pool": {
"openai": [{"id": "1", "access_token": "t"}],
"anthropic": [{"id": "2", "access_token": "u"}],
},
}
),
encoding="utf-8",
)
return path
class TestLoadGlobalAuthStoreMemo:
def test_mtime_change_re_reads_once(self, tmp_path, monkeypatch):
"""A store file change on disk invalidates the memo."""
global_path = _make_global_store(tmp_path)
monkeypatch.setattr(
auth_mod, "_global_auth_file_path", lambda: global_path
)
reads = {"n": 0}
orig = auth_mod._load_auth_store
def counting_load(store_path=None):
reads["n"] += 1
return orig(store_path)
monkeypatch.setattr(auth_mod, "_load_auth_store", counting_load)
auth_mod._load_global_auth_store()
assert reads["n"] == 1
# Bump the file mtime -> memo invalidates -> re-read once.
os.utime(global_path, (1_700_000_000, 1_700_000_000))
auth_mod._load_global_auth_store()
assert reads["n"] == 2, "mtime change must force exactly one re-read"
def test_absent_global_store_returns_empty_without_error(self, tmp_path, monkeypatch):
"""No global fallback (classic mode) returns {} and stays cheap."""
missing = tmp_path / "no-such" / "auth.json"
monkeypatch.setattr(
auth_mod, "_global_auth_file_path", lambda: missing
)
assert auth_mod._load_global_auth_store() == {}
assert auth_mod._global_auth_store_cache is None