75 lines
2.7 KiB
Python
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()
|