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

42 lines
1.3 KiB
Python

import re
import unittest
from core.device_id import is_valid_oaid, oaid_from_seed_material
class DeviceIdTests(unittest.TestCase):
def test_oaid_from_seed_material_is_stable_uppercase_sha256_shape(self):
oaid = oaid_from_seed_material(
[
"ANDROID_0123456789abcdef",
"ANDROID_fedcba9876543210",
"ANDROID_0011223344556677",
"DFP" + "A" * 61,
]
)
self.assertEqual(
oaid,
"4450249A4464DEA6C2C6C32811552E6F98B536AE6BD2996911EFA00AB572D228",
)
self.assertTrue(is_valid_oaid(oaid))
self.assertRegex(oaid, re.compile(r"^[0-9A-F]{64}$"))
def test_oaid_from_seed_material_changes_when_seed_changes(self):
left = oaid_from_seed_material(["ANDROID_0123456789abcdef", "seed-a"])
right = oaid_from_seed_material(["ANDROID_0123456789abcdef", "seed-b"])
self.assertNotEqual(left, right)
self.assertTrue(is_valid_oaid(left))
self.assertTrue(is_valid_oaid(right))
def test_is_valid_oaid_rejects_empty_lowercase_and_wrong_length(self):
self.assertFalse(is_valid_oaid(""))
self.assertFalse(is_valid_oaid("a" * 64))
self.assertFalse(is_valid_oaid("A" * 63))
self.assertFalse(is_valid_oaid("G" * 64))
if __name__ == "__main__":
unittest.main()