支持跳过斗鱼手机号绑定并优化标签筛选

This commit is contained in:
yml2213
2026-08-07 22:07:39 +08:00
parent 535fcbb257
commit a67d144b78
4 changed files with 163 additions and 10 deletions
+66
View File
@@ -0,0 +1,66 @@
import unittest
from types import SimpleNamespace
from unittest.mock import Mock
from core.douyu.login import DouyuLogin
from core.douyu.login_api_wgapi import WgapiLoginAPI
class MobileBindSkipTests(unittest.TestCase):
def setUp(self):
self.login = DouyuLogin.__new__(DouyuLogin)
self.login.api = WgapiLoginAPI()
self.login.account = SimpleNamespace(username='test-user', password='test-password')
self.login._request_json = Mock()
def test_second_login_skips_mobile_bind_with_unique_key(self):
self.login._request_json.side_effect = [
{
'error': 130014,
'msg': '需要进行手机号绑定',
'data': {'mobileBind': {'uniqueKey': 'one-time-key'}},
},
{
'error': 0,
'data': {'url': '//www.douyu.com/api/passport/login?code=callback-code'},
},
]
next_step, login_url = self.login._second_login(
'gt', 'challenge', 'validate', 'validate|jordan', 'code-token',
)
self.assertEqual(next_step, 'mobile_bind_skip')
self.assertEqual(
login_url,
'https://www.douyu.com/api/passport/login?code=callback-code',
)
self.assertEqual(self.login._request_json.call_count, 2)
skip_call = self.login._request_json.call_args_list[1]
self.assertEqual(skip_call.args[:3], (
'post',
'https://passport.douyu.com/wgapi/member/passport/login',
'跳过手机号绑定接口',
))
self.assertEqual(skip_call.kwargs['data'], {
'type': '3',
'uniqueKey': 'one-time-key',
'biz_type': '1',
})
def test_second_login_preserves_remote_email_flow_without_unique_key(self):
self.login._request_json.return_value = {
'error': 130014,
'data': {'remoteLogin': {'code': 'remote-code'}},
}
next_step, remote_code = self.login._second_login(
'gt', 'challenge', 'validate', 'validate|jordan', 'code-token',
)
self.assertEqual((next_step, remote_code), ('remote_email', 'remote-code'))
self.assertEqual(self.login._request_json.call_count, 1)
if __name__ == '__main__':
unittest.main()