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

75 lines
2.7 KiB
Python

import unittest
from urllib.parse import parse_qs
from core.device_profile import DeviceProfileGenerator
from core.dfp_forms import (
GDFP_REPORT_FORM_ORDER,
UNIFIED_CHECK_REPAIR_FORM_ORDER,
UNIFIED_FETCH_FORM_ORDER,
build_gdfp_report_request,
build_unified_check_repair_request,
build_unified_fetch_request,
)
class DfpFormsTests(unittest.TestCase):
def test_unified_fetch_preserves_form_order(self):
profile = DeviceProfileGenerator(seed=1234).new_profile()
request = build_unified_fetch_request(
profile,
counter=1,
unix_time=1783749817,
session_seed=0x5D7E742B,
ts_millis="1783749817000",
epoch_seconds=1783749817,
)
self.assertEqual(request.form_order, UNIFIED_FETCH_FORM_ORDER)
self.assertEqual(request.form["did"], profile.did)
self.assertEqual(request.form["didTag"], "-1")
self.assertEqual(request.form["rdid"], profile.rdid)
self.assertIn("sign", request.form)
def test_gdfp_report_request_body_order(self):
profile = DeviceProfileGenerator(seed=1234).new_profile()
request = build_gdfp_report_request(
profile,
counter=2,
unix_time=1783749817,
session_seed=0x5D7E742B,
ts_millis="1783749817000",
epoch_seconds=1783749817,
)
self.assertEqual(request.form_order, GDFP_REPORT_FORM_ORDER)
self.assertTrue(request.body.startswith("productName=NEBULA&ts=1783749817000&deviceInfo="))
parsed = parse_qs(request.body)
self.assertEqual(parsed["rdid"], [profile.rdid])
self.assertEqual(parsed["didtag"], ["-1"])
def test_unified_check_repair_preserves_form_order(self):
profile = DeviceProfileGenerator(seed=1234).new_profile()
profile.cdid_tag = 2
request = build_unified_check_repair_request(
profile,
counter=3,
unix_time=1783749817,
session_seed=0x5D7E742B,
ts_millis="1783749817000",
last_did_ts="1783749800000",
)
parsed = parse_qs(request.body)
self.assertEqual(request.form_order, UNIFIED_CHECK_REPAIR_FORM_ORDER)
self.assertEqual(list(request.form), UNIFIED_CHECK_REPAIR_FORM_ORDER)
self.assertEqual(parsed["did"], [profile.did])
self.assertEqual(parsed["didTag"], ["2"])
self.assertEqual(parsed["from"], ["1"])
self.assertEqual(parsed["lastDidTs"], ["1783749800000"])
self.assertEqual(parsed["productName"], ["NEBULA"])
self.assertEqual(len(parsed["sign"][0]), 64)
if __name__ == "__main__":
unittest.main()