51 lines
2.0 KiB
Python
51 lines
2.0 KiB
Python
from pathlib import Path
|
|
import unittest
|
|
|
|
from librenet_scanner.identity import os_family
|
|
from librenet_scanner.models import Host
|
|
from librenet_scanner.visual_identity import OS_ICON_FILES, os_icon_key_for_host
|
|
|
|
|
|
class V0415OsIconsTests(unittest.TestCase):
|
|
def test_windows_still_supported(self):
|
|
self.assertEqual(os_icon_key_for_host(Host(ip="192.0.2.10", os_name="Microsoft Windows 11")), "windows")
|
|
|
|
def test_apple_platforms(self):
|
|
for value in (
|
|
"Apple macOS 14.5",
|
|
"Apple Mac OS X 10.15.7",
|
|
"Darwin 23.5.0",
|
|
"iPhone OS 17.6",
|
|
"iPadOS 18.0",
|
|
"Apple iOS 17.6",
|
|
"Apple TV tvOS 17",
|
|
):
|
|
with self.subTest(value=value):
|
|
self.assertEqual(os_icon_key_for_host(Host(ip="192.0.2.11", os_name=value)), "apple")
|
|
|
|
def test_android_wins_over_linux(self):
|
|
self.assertEqual(
|
|
os_icon_key_for_host(Host(ip="192.0.2.12", os_name="Linux 5.10 (Android 14)")),
|
|
"android",
|
|
)
|
|
|
|
def test_identity_families_match_visual_families(self):
|
|
self.assertEqual(os_family("Android 14 (Linux 5.10)"), "android")
|
|
self.assertEqual(os_family("Apple macOS 15"), "apple")
|
|
self.assertEqual(os_family("Windows 11"), "windows")
|
|
self.assertNotEqual(os_icon_key_for_host(Host(ip="192.0.2.13", os_name="Cisco IOS 15.2")), "apple")
|
|
self.assertEqual(os_family("Cisco IOS XE 17.9"), "iosxe")
|
|
|
|
def test_assets_are_packaged_sources(self):
|
|
root = Path(__file__).resolve().parents[1]
|
|
for key in ("apple", "android", "windows", "linux", "bsd"):
|
|
filename = OS_ICON_FILES[key]
|
|
icon = root / "assets" / "icons" / filename
|
|
self.assertTrue(icon.is_file(), f"missing {filename}")
|
|
self.assertGreater(icon.stat().st_size, 200)
|
|
self.assertIn("Font Awesome", (root / "THIRD_PARTY_ASSETS.md").read_text())
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|