43 lines
1.5 KiB
Python
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()
|