Blueforce-Linux/tests/test_identity.py
2026-09-17 13:22:26 +03:00

43 lines
1.5 KiB
Python

import os
import tempfile
import unittest
from pathlib import Path
from bfos.identity import identity_for, read_dealer_id, validate_dealer_id
from bfos.preferences import load_preferences, save_dealer
class IdentityContractTests(unittest.TestCase):
def test_only_eight_digits_are_valid(self):
self.assertTrue(validate_dealer_id("12345678"))
for value in ("1234567", "123456789", "1234abcd", ""):
self.assertFalse(validate_dealer_id(value))
def test_derived_identity_is_deterministic(self):
self.assertEqual(
identity_for("12345678"),
{
"dealer_id": "12345678",
"username": "bf-12345678",
"hostname": "bf-12345678",
"device_id": "BF-12345678",
"active_user": "bf-12345678",
},
)
def test_preferences_use_write_once_dealer_file(self):
with tempfile.TemporaryDirectory() as directory:
path = Path(directory) / "dealer-id"
os.environ["BF_DEALER_ID_FILE"] = str(path)
try:
self.assertEqual(save_dealer("12345678")["username"], "bf-12345678")
self.assertEqual(read_dealer_id(path), "12345678")
with self.assertRaises(PermissionError):
save_dealer("87654321")
self.assertEqual(load_preferences()["active_user"], "bf-12345678")
finally:
os.environ.pop("BF_DEALER_ID_FILE", None)
if __name__ == "__main__":
unittest.main()