This commit is contained in:
Your Name
2026-08-26 17:18:09 +08:00
parent 327a0bc42f
commit 4ac6990efe
20 changed files with 1336 additions and 130 deletions
@@ -114,6 +114,39 @@ def _build_service(delay_seconds: int = 60):
class ReplyQueueIntegrationTests(unittest.IsolatedAsyncioTestCase):
async def test_kick_response_takes_account_offline_immediately(self):
callback = AsyncMock()
service, _, _ = _build_service()
service.on_session_invalid = callback
with unittest.mock.patch(
"rpa_engine.douyin_im.service.system_logger.record", Mock()
):
await service._note_session_invalid(
"抖音安全网关返回 decision=KICK,当前登录态已失效"
)
self.assertFalse(service._running)
self.assertTrue(service._session_invalid_fired)
callback.assert_awaited_once()
self.assertIn("decision=KICK", callback.await_args.args[0])
async def test_invalid_request_still_requires_two_consecutive_failures(self):
callback = AsyncMock()
service, _, _ = _build_service()
service.on_session_invalid = callback
with unittest.mock.patch(
"rpa_engine.douyin_im.service.system_logger.record", Mock()
):
await service._note_session_invalid("INVALID_REQUEST")
self.assertTrue(service._running)
callback.assert_not_awaited()
await service._note_session_invalid("INVALID_REQUEST")
self.assertFalse(service._running)
callback.assert_awaited_once()
async def test_same_message_from_ws_and_poll_is_queued_once(self):
service, match_reply, _ = _build_service()
message = {