mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-07 03:15:56 +00:00
55 lines
1.8 KiB
Python
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()
|