33 lines
1.3 KiB
Python
33 lines
1.3 KiB
Python
import asyncio
|
|
|
|
from codexpi import agent_service
|
|
from codexpi.commands import CommandResult
|
|
|
|
|
|
def test_agent_accounts_status_detects_connections(monkeypatch):
|
|
monkeypatch.setattr(agent_service.shutil, "which", lambda binary: f"/usr/bin/{binary}")
|
|
|
|
async def fake_run(argv, **_kwargs):
|
|
binary = argv[0].rsplit("/", 1)[-1]
|
|
if binary == "codex":
|
|
return CommandResult(argv, 0, "Logged in using ChatGPT\n", "")
|
|
if binary == "claude":
|
|
return CommandResult(argv, 0, '{"loggedIn":false}', "")
|
|
return CommandResult(argv, 0, "0 credentials", "")
|
|
|
|
monkeypatch.setattr(agent_service, "run_command", fake_run)
|
|
rows = asyncio.run(agent_service.agent_accounts_status("codex", "claude", "opencode"))
|
|
|
|
assert [row["id"] for row in rows] == ["codex", "claude", "opencode"]
|
|
assert rows[0]["connected"] is True
|
|
assert rows[0]["account"] == "Logged in using ChatGPT"
|
|
assert rows[1]["connected"] is False
|
|
assert rows[2]["connected"] is False
|
|
|
|
|
|
def test_agent_accounts_status_reports_missing_binary(monkeypatch):
|
|
monkeypatch.setattr(agent_service.shutil, "which", lambda _binary: None)
|
|
rows = asyncio.run(agent_service.agent_accounts_status("codex", "claude", "opencode"))
|
|
assert all(row["installed"] is False for row in rows)
|
|
assert rows[1]["command"] == "claude auth login"
|