Files
apex.ermnvldmr.com/tests/test_identity.py
T

40 lines
1.6 KiB
Python

# tests/test_identity.py
import os, tempfile, unittest
from engine.identity import resolve
class TestIdentity(unittest.TestCase):
def _envfile(self, text):
d = tempfile.mkdtemp()
with open(os.path.join(d, "node.env"), "w") as f:
f.write(text)
return d
def test_explicit_host_and_fqdn(self):
repo = self._envfile("APEX_NODE_FQDN=node1.dc1.example.com\n"
"APEX_NODE_HOST=node1.example.com\n"
"APEX_SUBNET=10.0.0.0/24\n")
n, warns = resolve("build-laptop", repo) # hostname ignored when node.env has FQDN
self.assertEqual((n.name, n.host, n.fqdn, n.subnet),
("node1", "node1.example.com", "node1.dc1.example.com", "10.0.0.0/24"))
self.assertEqual(warns, [])
def test_host_defaults_to_fqdn(self):
repo = self._envfile("APEX_NODE_FQDN=n1.example.com\nAPEX_SUBNET=10.0.0.0/24\n")
n, warns = resolve("ignored", repo)
self.assertEqual((n.name, n.host, n.fqdn), ("n1", "n1.example.com", "n1.example.com"))
self.assertEqual(warns, [])
def test_fqdn_falls_back_to_hostname(self):
repo = self._envfile("APEX_SUBNET=10.0.0.0/24\n")
n, warns = resolve("box.local", repo)
self.assertEqual((n.name, n.host, n.fqdn), ("box", "box.local", "box.local"))
self.assertTrue(any("APEX_NODE_FQDN" in w for w in warns))
def test_missing_subnet_is_error(self):
repo = self._envfile("APEX_NODE_FQDN=n1.example.com\n")
with self.assertRaises(SystemExit):
resolve("n1.example.com", repo)
if __name__ == "__main__":
unittest.main()