galaxis-agent/tests/test_auth_sources.py

88 lines
2.7 KiB
Python
Raw Normal View History

2026-03-20 14:38:07 +09:00
from __future__ import annotations
import asyncio
import pytest
from agent.utils import auth
def test_leave_failure_comment_posts_to_slack_thread(
monkeypatch: pytest.MonkeyPatch,
) -> None:
called: dict[str, str] = {}
async def fake_post_slack_ephemeral_message(
channel_id: str, user_id: str, text: str, thread_ts: str | None = None
) -> bool:
called["channel_id"] = channel_id
called["user_id"] = user_id
called["thread_ts"] = thread_ts
called["message"] = text
return True
async def fake_post_slack_thread_reply(channel_id: str, thread_ts: str, message: str) -> bool:
raise AssertionError("post_slack_thread_reply should not be called when ephemeral succeeds")
monkeypatch.setattr(auth, "post_slack_ephemeral_message", fake_post_slack_ephemeral_message)
monkeypatch.setattr(auth, "post_slack_thread_reply", fake_post_slack_thread_reply)
monkeypatch.setattr(
auth,
"get_config",
lambda: {
"configurable": {
"slack_thread": {
"channel_id": "C123",
"thread_ts": "1.2",
"triggering_user_id": "U123",
}
}
},
)
asyncio.run(auth.leave_failure_comment("slack", "auth failed"))
assert called == {
"channel_id": "C123",
"user_id": "U123",
"thread_ts": "1.2",
"message": "auth failed",
}
def test_leave_failure_comment_falls_back_to_slack_thread_when_ephemeral_fails(
monkeypatch: pytest.MonkeyPatch,
) -> None:
thread_called: dict[str, str] = {}
async def fake_post_slack_ephemeral_message(
channel_id: str, user_id: str, text: str, thread_ts: str | None = None
) -> bool:
return False
async def fake_post_slack_thread_reply(channel_id: str, thread_ts: str, message: str) -> bool:
thread_called["channel_id"] = channel_id
thread_called["thread_ts"] = thread_ts
thread_called["message"] = message
return True
monkeypatch.setattr(auth, "post_slack_ephemeral_message", fake_post_slack_ephemeral_message)
monkeypatch.setattr(auth, "post_slack_thread_reply", fake_post_slack_thread_reply)
monkeypatch.setattr(
auth,
"get_config",
lambda: {
"configurable": {
"slack_thread": {
"channel_id": "C123",
"thread_ts": "1.2",
"triggering_user_id": "U123",
}
}
},
)
asyncio.run(auth.leave_failure_comment("slack", "auth failed"))
assert thread_called == {"channel_id": "C123", "thread_ts": "1.2", "message": "auth failed"}