AutoTeam-F / tests /unit /test_admin_state.py
cnitlrt's picture
chore: add phase-1 project foundations
3c6b003
Raw
History Blame Contribute Delete
3.02 kB
import json
from autoteam import admin_state
def test_load_admin_state_migrates_legacy_session_file(tmp_path, monkeypatch):
state_file = tmp_path / "state.json"
legacy_file = tmp_path / "session"
legacy_file.write_text("legacy-session-token", encoding="utf-8")
monkeypatch.setattr(admin_state, "STATE_FILE", state_file)
monkeypatch.setattr(admin_state, "LEGACY_SESSION_FILE", legacy_file)
state = admin_state.load_admin_state()
assert state["session_token"] == "legacy-session-token"
assert state_file.exists()
assert not legacy_file.exists()
def test_update_admin_state_normalizes_and_summary_uses_saved_values(tmp_path, monkeypatch):
state_file = tmp_path / "state.json"
legacy_file = tmp_path / "session"
monkeypatch.setattr(admin_state, "STATE_FILE", state_file)
monkeypatch.setattr(admin_state, "LEGACY_SESSION_FILE", legacy_file)
saved = admin_state.update_admin_state(
email="owner@example.com",
session_token="token-1",
password="secret",
account_id="123e4567-e89b-12d3-a456-426614174000",
workspace_name="Team A",
)
assert saved["updated_at"] is not None
summary = admin_state.get_admin_state_summary()
assert summary == {
"configured": True,
"email": "owner@example.com",
"account_id": "123e4567-e89b-12d3-a456-426614174000",
"workspace_name": "Team A",
"session_present": True,
"password_saved": True,
"updated_at": saved["updated_at"],
}
raw_state = json.loads(state_file.read_text(encoding="utf-8"))
assert raw_state["workspace_name"] == "Team A"
def test_get_chatgpt_account_id_falls_back_to_env_when_state_id_is_invalid(tmp_path, monkeypatch):
state_file = tmp_path / "state.json"
legacy_file = tmp_path / "session"
state_file.write_text(
json.dumps(
{
"email": "owner@example.com",
"session_token": "token-1",
"account_id": "user-123",
}
),
encoding="utf-8",
)
monkeypatch.setattr(admin_state, "STATE_FILE", state_file)
monkeypatch.setattr(admin_state, "LEGACY_SESSION_FILE", legacy_file)
monkeypatch.setenv("CHATGPT_ACCOUNT_ID", "123e4567-e89b-12d3-a456-426614174999")
assert admin_state.get_chatgpt_account_id() == "123e4567-e89b-12d3-a456-426614174999"
def test_clear_admin_state_keeps_state_file_for_symlink_safety(tmp_path, monkeypatch):
state_file = tmp_path / "state.json"
legacy_file = tmp_path / "session"
state_file.write_text(json.dumps({"session_token": "token-1"}), encoding="utf-8")
legacy_file.write_text("legacy-token", encoding="utf-8")
monkeypatch.setattr(admin_state, "STATE_FILE", state_file)
monkeypatch.setattr(admin_state, "LEGACY_SESSION_FILE", legacy_file)
admin_state.clear_admin_state()
assert state_file.exists()
assert json.loads(state_file.read_text(encoding="utf-8")) == {}
assert not legacy_file.exists()