ksjsb/tests/test_weapon_kas.py
2026-07-30 20:25:56 +08:00

54 lines
1.6 KiB
Python

from __future__ import annotations
import unittest
from core.weapon_kas import WeaponProofProvider, generate_weapon_kas
KAW = (
"MDJ3ll0yLjVpYO7iiytgvlbggFZA+kzX1QW7XXr0RScGn+UaN3oe8k/8OMm5qNs5QMOz"
"XRUsclqPgblszASefBRIZ8n+fvhbUPpcNIEluR/tdXsbSVkdMHyjYPWVAYRZqAjRCr/AqM"
"9BVr6A25kTIy2Q90Q/XaCQdkDCzEinliF1w7nxO00EBAt5t6dg8V2WHF4ku2pSwEmKcJsR"
"606dC0ZJhKgGdMmK2ls+Ti6sybfii/wvtiXHkrnC2Z0ES1PnoYBhwpsA"
)
VECTORS = (
(
"/rest/nebula/user/mobile/checker",
"26374264f51d236ceb6e6d6c80fddcca5466131e637f7167",
"0013da23b4d7b0d9e608ea4b9e1c8ad228",
),
(
"/rest/nebula/user/requestMobileCode",
"a6b7c2e4759da3ec6aeeedecb8aefa45d3e6939ee3fff1e7",
"0040db26b7dbb188e35fe419c91ada8022",
),
(
"/rest/nebula/user/login/mobileVerifyCode",
"e8f98caa3bd3eda226a0a3a21f648b4789a8ddd0adb1bfa9",
"00408e7fe6d7b188b05ae11ecc4bdf8371",
),
("/f/a/p", "", "0046df75e487b7d9b65ab749981a8c8f71"),
)
class WeaponKasTests(unittest.TestCase):
def test_captured_mode_2_vectors(self) -> None:
for path, sig3, expected in VECTORS:
with self.subTest(path=path):
self.assertEqual(generate_weapon_kas(path + sig3 + KAW), expected)
def test_provider_binds_final_url_sig3_and_kaw(self) -> None:
path, sig3, expected = VECTORS[0]
provider = WeaponProofProvider(KAW)
headers = provider(
f"https://az1-api.ksapisrv.com{path}?did=ANDROID_TEST&__NS_sig3={sig3}"
)
self.assertEqual(headers, {"kaw": KAW, "kas": expected})
if __name__ == "__main__":
unittest.main()