diff --git a/test/services/test_netbox.py b/test/services/test_netbox.py new file mode 100644 index 0000000000000000000000000000000000000000..eab8edace6b1c12f51e7921acda70a15bcd6a7dd --- /dev/null +++ b/test/services/test_netbox.py @@ -0,0 +1,62 @@ +""" +Unit tests for testing the netbox client +""" +from os import PathLike +import responses + +from gso.services.netbox_client import NetBoxClient + +BASE_URL = "https://127.0.0.1:8000" + + +def _create_device(id: int, name: str) -> dict: + device = {"id": id, "name": name} + return device + + +def _create_interface(id: int, name: str) -> dict: + return {"id": id, "name": name} + + +def _create_list_interfaces(num_iface: int) -> list: + list_iface = list() + for i in range(num_iface): + name = f"et-0/0/{i}" + id = i + 1 + iface = _create_interface(id, name) + list_iface.append(iface) + return list_iface + + +@responses.activate +def test_create_device(data_config_filename: PathLike): + device_name = "mx1.lab.office.geant.net" + device_id = 10 + # device_manufacturer = "Nokia" + device_site = "GEANT" + # device_role = "Router" + + # Create a mock device + device = _create_device(device_id, device_name) + + # Define response + endpoint = f"{BASE_URL}/api/dcim/devices/?limit=0" + + responses.add(responses.POST, endpoint, json=device, status=200) + + result = NetBoxClient().create_device(device_name, device_site) + assert result is not None + + +@responses.activate +def test_get_all_interfaces(data_config_filename: PathLike): + num_iface = 3 + list_iface = _create_list_interfaces(num_iface) + endpoint = f"{BASE_URL}/api/dcim/devices/?limit=0" + + responses.add(responses.GET, endpoint, json=list_iface, status=200) + + result = NetBoxClient().get_all_devices() + + assert result is not None + assert len(result) == num_iface