Files
librenet-scanner/tests/test_v03.py
T
2026-08-23 09:52:32 +02:00

63 lines
2.8 KiB
Python

import tempfile
import unittest
from pathlib import Path
from unittest.mock import patch
from librenet_scanner.models import Host
from librenet_scanner.network import NetworkInterface, display_target, target_address_count, target_is_on_interface, validate_target
from librenet_scanner.privileged_helper import command_for
from librenet_scanner.storage import HistoryStore
class TargetRangeTests(unittest.TestCase):
def test_human_range_is_normalized_for_nmap(self):
target = validate_target("192.168.10.1 - 192.168.10.254")
self.assertEqual(target, "192.168.10.1-254")
self.assertEqual(display_target(target), "192.168.10.1 - 192.168.10.254")
self.assertEqual(target_address_count(target), 254)
def test_range_must_stay_in_same_24(self):
with self.assertRaises(ValueError):
validate_target("192.168.10.250 - 192.168.11.2")
def test_range_is_local_to_interface(self):
iface = NetworkInterface("enp42s0", "192.168.10.1", 24, "192.168.10.0/24")
self.assertTrue(target_is_on_interface("192.168.10.1-254", iface))
self.assertFalse(target_is_on_interface("192.168.11.1-254", iface))
class MetadataTests(unittest.TestCase):
def test_favorite_group_note_roundtrip(self):
with tempfile.TemporaryDirectory() as tmp:
store = HistoryStore(Path(tmp) / "db.sqlite3")
host = Host("192.168.10.20", hostname="pve01", mac="AA:BB:CC:DD:EE:FF")
store.save_host_metadata(host, favorite=True, group_name="Infrastructure", note="Cluster principal")
meta = store.host_metadata(host)
self.assertTrue(meta["favorite"])
self.assertEqual(meta["group_name"], "Infrastructure")
self.assertEqual(meta["note"], "Cluster principal")
self.assertEqual(store.known_groups(), ["Infrastructure"])
def test_metadata_follows_mac_after_ip_change(self):
with tempfile.TemporaryDirectory() as tmp:
store = HistoryStore(Path(tmp) / "db.sqlite3")
old = Host("192.168.10.20", mac="AA:BB:CC:DD:EE:FF")
store.save_host_metadata(old, favorite=True)
moved = Host("192.168.10.99", mac="AA:BB:CC:DD:EE:FF")
self.assertTrue(store.host_metadata(moved)["favorite"])
class V03PrivilegedHelperTests(unittest.TestCase):
def test_privileged_discovery_is_fixed(self):
with patch("librenet_scanner.privileged_helper._trusted_binary", return_value="/usr/bin/nmap"):
cmd = command_for("nmap-discover", ["192.168.10.1-254"])
self.assertEqual(cmd, ["/usr/bin/nmap", "-sn", "-n", "-T4", "--max-retries", "1", "-oX", "-", "192.168.10.1-254"])
def test_privileged_discovery_rejects_option_injection(self):
with self.assertRaises(ValueError):
command_for("nmap-discover", ["--script=evil"])
if __name__ == "__main__":
unittest.main()