清理虎牙登录旧数据依赖并统一动态环境
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
"""虎牙 App 密码登录及相关组件测试。"""
|
||||
|
||||
import json
|
||||
import os
|
||||
import struct
|
||||
from unittest.mock import MagicMock, patch
|
||||
@@ -11,14 +12,14 @@ from sqlalchemy.orm import sessionmaker
|
||||
from core.huya import (
|
||||
HuyaAppLoginError,
|
||||
)
|
||||
from core.huya.app_login import (
|
||||
DEFAULT_GOLDEN_DEV,
|
||||
login_cred_with_flow,
|
||||
wup_password_login_raw,
|
||||
)
|
||||
from core.huya.app_login import login_cred_with_flow, wup_password_login_raw
|
||||
from core.huya.cert_forge import build_p1, decrypt_cert, forge_cert, parse_p1
|
||||
from core.huya.device_fingerprint import account_state_dir, reset_account_state
|
||||
from core.huya.device_profile import generate_profile, get_profile
|
||||
from core.huya.device_profile import (
|
||||
canonical_account_key,
|
||||
generate_profile,
|
||||
get_profile,
|
||||
)
|
||||
from core.huya.dfp_register import DfpRegistrationError
|
||||
from core.huya.envelope_forge import Envelope
|
||||
from core.huya.login import HuyaLoginResult
|
||||
@@ -91,6 +92,16 @@ class TestHuyaAppLogin:
|
||||
wup_b64 = env.wup_b64()
|
||||
assert len(wup_b64) > 0
|
||||
|
||||
def test_envelope_metadata_is_fresh(self):
|
||||
env = Envelope.load()
|
||||
old = bytes(env.raw[env.meta_json_span[0] : env.meta_json_span[1]])
|
||||
new_trace = "a" * 16 + "-12345-" + "9" * 20
|
||||
env.patch_session(7654321).patch_meta(7654321, new_trace)
|
||||
current = bytes(env.raw[env.meta_json_span[0] : env.meta_json_span[1]])
|
||||
assert current != old
|
||||
assert b'"session":7654321' in current
|
||||
assert (b'"traceId":"' + new_trace.encode() + b'"') in current
|
||||
|
||||
def test_device_profile_generation(self):
|
||||
p1 = generate_profile()
|
||||
assert p1["os"] == "android"
|
||||
@@ -99,12 +110,34 @@ class TestHuyaAppLogin:
|
||||
assert p1["hdid"] == "ed0db8334cadd236c00cadf7e11ab5a5"
|
||||
# 画像不再承载 safedeviceid:该令牌由 dfp_register 注册链每次登录前签发
|
||||
assert "safedeviceid" not in p1
|
||||
assert "safedeviceid" not in DEFAULT_GOLDEN_DEV
|
||||
|
||||
p2 = get_profile("test_user_account_123")
|
||||
p3 = get_profile("test_user_account_123")
|
||||
assert p2["fingerprint"] == p3["fingerprint"]
|
||||
|
||||
def test_huya_id_aliases_share_one_profile_key(self, tmp_path, monkeypatch):
|
||||
profile_db = tmp_path / "profiles.json"
|
||||
monkeypatch.setattr("core.huya.device_profile.PRIMARY_PROFILE_DB", profile_db)
|
||||
monkeypatch.setattr(
|
||||
"core.huya.device_profile.FALLBACK_PROFILE_DB", tmp_path / "missing.json"
|
||||
)
|
||||
assert canonical_account_key(" hy_300023887 ") == "300023887"
|
||||
first = get_profile("300023887")
|
||||
second = get_profile("hy_300023887")
|
||||
assert first["fingerprint"] == second["fingerprint"]
|
||||
assert list(json.loads(profile_db.read_text())) == ["300023887"]
|
||||
|
||||
def test_legacy_evidence_profile_is_not_loaded_by_default(
|
||||
self, tmp_path, monkeypatch
|
||||
):
|
||||
primary = tmp_path / "profiles.json"
|
||||
legacy = tmp_path / "legacy.json"
|
||||
legacy.write_text(json.dumps({"old": {"fingerprint": "f" * 40}}))
|
||||
monkeypatch.setattr("core.huya.device_profile.PRIMARY_PROFILE_DB", primary)
|
||||
monkeypatch.setattr("core.huya.device_profile.FALLBACK_PROFILE_DB", legacy)
|
||||
profile = get_profile("old")
|
||||
assert profile["fingerprint"] != "f" * 40
|
||||
|
||||
def test_force_new_device_clears_hydevice_state(self, tmp_path, monkeypatch):
|
||||
monkeypatch.setattr(
|
||||
"core.huya.device_fingerprint.FP_STATE_ROOT", tmp_path / "fp"
|
||||
@@ -184,7 +217,9 @@ class TestHuyaAppLogin:
|
||||
assert captured["args"][2] == new_action
|
||||
assert captured["args"][7]["device_id"] == new_device_id
|
||||
# 画像默认值里的旧 device_id 被注册结果覆盖,而非沿用
|
||||
assert captured["args"][7]["device_id"] != DEFAULT_GOLDEN_DEV["device_id"]
|
||||
assert captured["args"][7]["device_id"] != (
|
||||
"7c5387e0539c023c31c4ff0e807e7256117385ee"
|
||||
)
|
||||
|
||||
def test_wup_login_registration_failure_is_explicit(self):
|
||||
"""注册失败必须抛错终止,禁止静默回退旧链(不发任何登录请求)。"""
|
||||
|
||||
Reference in New Issue
Block a user