Files
dy/backend/tests/test_credential_responsiveness.py
T
2026-09-01 15:31:05 +08:00

64 lines
2.0 KiB
Python

import threading
import unittest
from types import SimpleNamespace
from unittest.mock import patch
from rpa_engine.credential import credential_egress_mismatch, validate_im_session
class CredentialResponsivenessTests(unittest.IsolatedAsyncioTestCase):
def test_legacy_egress_marker_comparison_is_diagnostic(self):
legacy = '{"cookies": []}'
self.assertFalse(credential_egress_mismatch(legacy, ""))
self.assertTrue(credential_egress_mismatch(legacy, "47.96.154.74"))
def test_stamped_egress_marker_comparison(self):
stamped = (
'{"cookies": [], '
'"credential_egress_public_ip": "47.96.154.74"}'
)
self.assertFalse(credential_egress_mismatch(stamped, "47.96.154.74"))
self.assertTrue(credential_egress_mismatch(stamped, "116.62.23.103"))
self.assertTrue(credential_egress_mismatch(stamped, ""))
async def test_uid_lookup_does_not_block_event_loop(self):
event_loop_thread_id = threading.get_ident()
lookup_thread_ids = []
def get_uid():
lookup_thread_ids.append(threading.get_ident())
return 123456
session = SimpleNamespace(
my_uid=0,
can_direct_im=lambda: True,
)
auth = SimpleNamespace(
get_uid=get_uid,
is_sign_ready=lambda: True,
)
with patch(
"rpa_engine.credential.DouyinAuth.from_im_session",
return_value=auth,
):
result = await validate_im_session(
session,
_bypass_global_limit=True,
)
self.assertTrue(result[0])
self.assertEqual(len(lookup_thread_ids), 1)
self.assertNotEqual(
lookup_thread_ids[0],
event_loop_thread_id,
"the synchronous UID lookup ran on the event-loop thread",
)
self.assertEqual(session.my_uid, 123456)
if __name__ == "__main__":
unittest.main()