51 lines
2.0 KiB
Python
51 lines
2.0 KiB
Python
from __future__ import annotations
|
|
|
|
import importlib.util
|
|
import sys
|
|
import unittest
|
|
from pathlib import Path
|
|
|
|
|
|
REPO_ROOT = Path(__file__).resolve().parents[3]
|
|
CLI_PATH = REPO_ROOT / "pkgs" / "helpers" / "cli.py"
|
|
|
|
spec = importlib.util.spec_from_file_location("nodeiwest_cli", CLI_PATH)
|
|
cli = importlib.util.module_from_spec(spec)
|
|
assert spec.loader is not None
|
|
sys.modules[spec.name] = cli
|
|
spec.loader.exec_module(cli)
|
|
|
|
|
|
class HelperCliTests(unittest.TestCase):
|
|
def test_disk_from_device_supports_sd_and_nvme(self) -> None:
|
|
self.assertEqual(cli.disk_from_device("/dev/sda2"), "/dev/sda")
|
|
self.assertEqual(cli.disk_from_device("/dev/nvme0n1p2"), "/dev/nvme0n1")
|
|
|
|
def test_lookup_colmena_target_host_reads_existing_inventory(self) -> None:
|
|
flake_text = (REPO_ROOT / "flake.nix").read_text()
|
|
self.assertEqual(cli.lookup_colmena_target_host(flake_text, "vps1"), "100.101.167.118")
|
|
|
|
def test_parse_existing_vps1_configuration(self) -> None:
|
|
configuration = cli.parse_existing_configuration(REPO_ROOT / "hosts" / "vps1" / "configuration.nix")
|
|
self.assertEqual(configuration.host_name, "vps1")
|
|
self.assertEqual(configuration.boot_mode, "uefi")
|
|
self.assertTrue(configuration.tailscale_openbao)
|
|
self.assertEqual(configuration.state_version, "25.05")
|
|
self.assertTrue(configuration.user_ca_public_keys)
|
|
|
|
def test_parse_existing_vps1_disko(self) -> None:
|
|
disko = cli.parse_existing_disko(REPO_ROOT / "hosts" / "vps1" / "disko.nix")
|
|
self.assertEqual(disko.disk_device, "/dev/sda")
|
|
self.assertEqual(disko.boot_mode, "uefi")
|
|
self.assertEqual(disko.swap_size, "4GiB")
|
|
|
|
def test_render_bios_disko_uses_bios_partition(self) -> None:
|
|
rendered = cli.render_disko(boot_mode="bios", disk_device="/dev/vda", swap_size="8GiB")
|
|
self.assertIn('type = "EF02";', rendered)
|
|
self.assertIn('device = lib.mkDefault "/dev/vda";', rendered)
|
|
self.assertIn('size = "8GiB";', rendered)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|