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