test: 全面迁移 pytest 并加入格式门禁
This commit is contained in:
@@ -1,4 +1,3 @@
|
||||
import unittest
|
||||
from types import SimpleNamespace
|
||||
from unittest.mock import Mock
|
||||
|
||||
@@ -6,61 +5,68 @@ from core.douyu.login import DouyuLogin
|
||||
from core.douyu.login_api_wgapi import WgapiLoginAPI
|
||||
|
||||
|
||||
class MobileBindSkipTests(unittest.TestCase):
|
||||
def setUp(self):
|
||||
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.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": 130014,
|
||||
"msg": "需要进行手机号绑定",
|
||||
"data": {"mobileBind": {"uniqueKey": "one-time-key"}},
|
||||
},
|
||||
{
|
||||
'error': 0,
|
||||
'data': {'url': '//www.douyu.com/api/passport/login?code=callback-code'},
|
||||
"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',
|
||||
"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',
|
||||
assert next_step == "mobile_bind_skip"
|
||||
assert (
|
||||
login_url == "https://www.douyu.com/api/passport/login?code=callback-code"
|
||||
)
|
||||
self.assertEqual(self.login._request_json.call_count, 2)
|
||||
assert 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',
|
||||
})
|
||||
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'}},
|
||||
"error": 130014,
|
||||
"data": {"remoteLogin": {"code": "remote-code"}},
|
||||
}
|
||||
|
||||
next_step, remote_code = self.login._second_login(
|
||||
'gt', 'challenge', 'validate', 'validate|jordan', 'code-token',
|
||||
"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()
|
||||
assert (next_step, remote_code) == ("remote_email", "remote-code")
|
||||
assert self.login._request_json.call_count == 1
|
||||
|
||||
Reference in New Issue
Block a user