Files
computer-playbook/tests/unit/python/cli/administration/recover/test_remote.py
T

55 lines
1.8 KiB
Python

"""Unit tests for cli.administration.recover.remote (host + device sources)."""
from __future__ import annotations
import sys
import unittest
from cli.administration.recover import remote
class SplitHostTest(unittest.TestCase):
def test_splits_at_first_colon(self):
self.assertEqual(
remote.split_host("user@host:/dev/sdb1:usb"), ("user@host", "/dev/sdb1:usb")
)
class RerootTest(unittest.TestCase):
def test_keeps_relative_segments_drops_absolute_appends_root(self):
self.assertEqual(
remote._reroot(
"/dev/sdb1:usb:20260710153000:/old", "/dev/sdb1", "/tmp/new"
),
"/dev/sdb1:usb:20260710153000:/tmp/new",
)
class CommandsTest(unittest.TestCase):
def test_block_device_uses_ssh_then_pull(self):
steps, root = remote.commands(
"user@host:/dev/sdb1:usb", service_backup=True, passphrase_stdin=False
)
self.assertEqual(root, remote.LOCAL_ROOT)
self.assertEqual(steps[0][:2], ["ssh", "user@host"])
self.assertIn(remote.REMOTE_ROOT, steps[0][2])
self.assertEqual(steps[1][0], "rsync")
self.assertIn(f"user@host:{remote.REMOTE_ROOT}/", steps[1])
def test_image_pulls_then_recovers_locally(self):
steps, root = remote.commands(
"host:/backup/usb.img", service_backup=True, passphrase_stdin=True
)
self.assertEqual(root, remote.LOCAL_ROOT)
self.assertEqual(
steps[0], ["rsync", "-a", "host:/backup/usb.img", remote.IMAGE]
)
self.assertEqual(steps[1][0], sys.executable)
self.assertIn(remote.IMAGE, steps[1])
self.assertIn(remote.LOCAL_ROOT, steps[1])
self.assertIn("--passphrase-stdin", steps[1])
if __name__ == "__main__":
unittest.main()