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()