mirror of
https://github.com/hansjone/netx.git
synced 2026-10-08 22:20:58 +08:00
54 lines
2 KiB
Python
54 lines
2 KiB
Python
from __future__ import annotations
|
|
|
|
import unittest
|
|
from unittest.mock import MagicMock
|
|
|
|
from netx_api.cli_resolve import infer_device_type_vendor
|
|
from netx_api.models import CliConnectProfile, UmeInventoryNE
|
|
|
|
|
|
class CliResolveTests(unittest.TestCase):
|
|
def test_infer_zte_ne_type(self) -> None:
|
|
profile = CliConnectProfile(device_type_default="zte_zxros", vendor_default="ZTE")
|
|
dt, vendor = infer_device_type_vendor("ZXCTN 6180H", profile)
|
|
self.assertEqual(dt, "zte_zxros")
|
|
self.assertEqual(vendor, "ZTE")
|
|
|
|
def test_resolve_ume_target(self) -> None:
|
|
from netx_api.cli_resolve import resolve_cli_target
|
|
|
|
db = MagicMock()
|
|
inv = UmeInventoryNE(ne_id="ume-1", ip_address="10.0.0.1", ne_type="ZXCTN", user_label="NE-A")
|
|
profile = CliConnectProfile(
|
|
id="p1",
|
|
name="default",
|
|
is_default=True,
|
|
username="ca-oper",
|
|
password_enc="",
|
|
device_type_default="zte_zxros",
|
|
vendor_default="ZTE",
|
|
hop_enabled=True,
|
|
hop_vendor="bastion",
|
|
hop_host="10.34.145.27",
|
|
hop_username="ZTE-FIVIE",
|
|
hop_password_enc="enc",
|
|
hop_command_template="{hop_user}@{target_user}@{target_ip}",
|
|
)
|
|
db.get.side_effect = lambda model, key: {
|
|
(UmeInventoryNE, "ume-1"): inv,
|
|
(type(None), "ume-1"): None,
|
|
}.get((model, key))
|
|
db.query.return_value.filter.return_value.order_by.return_value.first.return_value = profile
|
|
|
|
with unittest.mock.patch("netx_api.cli_resolve.decrypt_secret", return_value="vault-pass"):
|
|
creds, device = resolve_cli_target(db, ume_ne_id="ume-1")
|
|
|
|
self.assertEqual(creds["ip_address"], "10.0.0.1")
|
|
self.assertEqual(creds["username"], "ca-oper")
|
|
self.assertEqual(creds["hop_host"], "10.34.145.27")
|
|
self.assertEqual(device["source"], "ume")
|
|
self.assertEqual(device["ume_ne_id"], "ume-1")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|