Files
live-hub-py/tests/test_douyu_mobile_bind_skip.py
T

73 lines
2.3 KiB
Python

from types import SimpleNamespace
from unittest.mock import Mock
from core.douyu.login import DouyuLogin
from core.douyu.login_api_wgapi import WgapiLoginAPI
class TestMobileBindSkip:
def setup_method(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",
)
assert next_step == "mobile_bind_skip"
assert (
login_url == "https://www.douyu.com/api/passport/login?code=callback-code"
)
assert self.login._request_json.call_count == 2
skip_call = self.login._request_json.call_args_list[1]
assert skip_call.args[:3] == (
"post",
"https://passport.douyu.com/wgapi/member/passport/login",
"跳过手机号绑定接口",
)
assert 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",
)
assert (next_step, remote_code) == ("remote_email", "remote-code")
assert self.login._request_json.call_count == 1