first commit
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
import json
|
||||
import tempfile
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
from unittest.mock import patch
|
||||
|
||||
from librenet_scanner.online_vendor import (
|
||||
PROVIDER_MACLOOKUP,
|
||||
PROVIDER_MACVENDORS,
|
||||
is_locally_administered,
|
||||
lookup_online_vendor,
|
||||
normalize_mac,
|
||||
)
|
||||
from librenet_scanner.storage import HistoryStore
|
||||
from librenet_scanner.parsers import parse_arp_scan
|
||||
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
|
||||
|
||||
class OnlineVendor047Tests(unittest.TestCase):
|
||||
def test_arp_scan_locally_administered_is_not_mistaken_for_vendor(self):
|
||||
hosts = parse_arp_scan("192.168.10.250\ta6:2b:b0:a5:49:a7\t(Unknown: locally administered) (DUP: 2)")
|
||||
self.assertEqual(len(hosts), 1)
|
||||
self.assertEqual(hosts[0].vendor, "")
|
||||
|
||||
def test_mac_normalization_and_laa_detection(self):
|
||||
self.assertEqual(normalize_mac("a6:2b:b0:a5:49:a7"), "A6:2B:B0:A5:49:A7")
|
||||
self.assertTrue(is_locally_administered("a6:2b:b0:a5:49:a7"))
|
||||
self.assertFalse(is_locally_administered("00:11:22:33:44:55"))
|
||||
|
||||
def test_maclookup_response_supports_modern_assignment_metadata(self):
|
||||
payload = {
|
||||
"success": True,
|
||||
"found": True,
|
||||
"company": "TP-Link Corporation Limited",
|
||||
"blockType": "MA-M",
|
||||
"isRand": False,
|
||||
"isPrivate": False,
|
||||
}
|
||||
with patch("librenet_scanner.online_vendor._request", return_value=json.dumps(payload).encode()):
|
||||
result = lookup_online_vendor("00:11:22:33:44:55", PROVIDER_MACLOOKUP)
|
||||
self.assertTrue(result.found)
|
||||
self.assertEqual(result.vendor, "TP-Link Corporation Limited")
|
||||
self.assertEqual(result.block_type, "MA-M")
|
||||
|
||||
def test_macvendors_plain_text_response(self):
|
||||
with patch("librenet_scanner.online_vendor._request", return_value=b"TP-Link Technologies Co., Ltd.\n"):
|
||||
result = lookup_online_vendor("00:11:22:33:44:55", PROVIDER_MACVENDORS)
|
||||
self.assertEqual(result.vendor, "TP-Link Technologies Co., Ltd.")
|
||||
self.assertTrue(result.found)
|
||||
|
||||
def test_online_cache_roundtrip(self):
|
||||
with tempfile.TemporaryDirectory() as tmp:
|
||||
store = HistoryStore(Path(tmp) / "history.sqlite3")
|
||||
store.save_online_vendor_cache(
|
||||
"00:11:22:33:44:55",
|
||||
PROVIDER_MACLOOKUP,
|
||||
vendor="Example Vendor",
|
||||
found=True,
|
||||
block_type="MA-L",
|
||||
)
|
||||
cached = store.online_vendor_cache("00-11-22-33-44-55", PROVIDER_MACLOOKUP)
|
||||
self.assertIsNotNone(cached)
|
||||
self.assertEqual(cached["vendor"], "Example Vendor")
|
||||
self.assertTrue(cached["from_cache"])
|
||||
|
||||
def test_ui_exposes_opt_in_privacy_setting_and_manual_lookup(self):
|
||||
ui = (ROOT / "src/librenet_scanner/ui.py").read_text()
|
||||
self.assertIn('privacy/onlineMacLookupEnabled', ui)
|
||||
self.assertIn('Interroger automatiquement une base en ligne', ui)
|
||||
self.assertIn('L\'option est désactivée par défaut', ui)
|
||||
self.assertIn('Rechercher en ligne', ui)
|
||||
self.assertIn('_start_automatic_online_vendor_lookup()', ui)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user