diff --git a/test/services/test_netbox.py b/test/services/test_netbox.py index 97c26df7404f0cdf17089571382b4bf8014ba093..b8145e293f416994e45d6937c5e001080e8cdfe2 100644 --- a/test/services/test_netbox.py +++ b/test/services/test_netbox.py @@ -6,6 +6,8 @@ import json import uuid from os import PathLike from unittest.mock import patch +import pytest +from pynetbox.core.response import Record from gso.services.netbox_client import NetBoxClient from gso.products.product_blocks.site import SiteTier @@ -23,49 +25,67 @@ def _load_fixture(filename): return json.load(f) -def _get_mock_device(): - return _load_fixture("device.json") +@pytest.fixture(scope="module") +def device(): + values = {"id": 1, "name": "test123"} + return Record(values, None, None) -def _get_mock_device_type(): - return _load_fixture("device_type.json") +@pytest.fixture(scope="module") +def device_type(): + values = {"id": 1, "name": "test123"} + return Record(values, None, None) -def _get_mock_device_role(): - return _load_fixture("device_role.json") +@pytest.fixture(scope="module") +def device_role(): + values = {"id": 1, "name": "test123"} + return Record(values, None, None) -def _get_mock_site(): - return _load_fixture("site.json") +@pytest.fixture(scope="module") +def site(): + values = {"id": 1, "name": "test123"} + return Record(values, None, None) -def _get_mock_device_bay(): - return _load_fixture("device_bay.json") +@pytest.fixture(scope="module") +def device_bay(): + values = {"id": 1, "name": "test123"} + return Record(values, None, None) -def test_create_device(data_config_filename: PathLike): +@pytest.fixture(scope="module") +def card_type(): + values = {"id": 1, "name": "test_card_type"} + return Record(values, None, None) + + +@patch("gso.services.netbox_client.pynetbox.api") +def test_create_device(mock_api, + device, + device_type, + device_role, + site, + device_bay, + card_type, + data_config_filename: PathLike): device_name = "mx1.lab.geant.net" + device.name = device_name site_tier = SiteTier.TIER1 - mock_device = _get_mock_device() - mock_device["name"] = device_name - mock_device_role = _get_mock_device_role() - mock_device_type = _get_mock_device_type() - mock_site = _get_mock_site() - mock_device_bay = _get_mock_device_bay() - # Define mock calls - with patch('gso.services.netbox_client.pynetbox.api') as mock_api: - mock_api.return_value.dcim.device_types.get.return_value = mock_device_type - mock_api.return_value.dcim.device_roles.get.return_value = mock_device_role - mock_api.return_value.dcim.sites.get.return_value = mock_site - mock_api.return_value.dcim.devices.create.return_value = mock_device - mock_api.return_value.dcim.module_bays.filter.return_value = mock_device_bay - mock_api.return_value.dcim.module_types.get.return_value = {"id": 1, "name": "eth-0/0/1"} - mock_api.return_value.dcim.module_types.create.return_value = {"id": 1, "name": "eth-0/0/1"} - - result = NetBoxClient().create_device(device_name, site_tier) - assert result is not None + mock_api.return_value.dcim.device_types.get.return_value = device_type + mock_api.return_value.dcim.device_roles.get.return_value = device_role + mock_api.return_value.dcim.sites.get.return_value = site + mock_api.return_value.dcim.devices.create.return_value = device + mock_api.return_value.dcim.module_bays.filter.return_value = [device_bay] + mock_api.return_value.dcim.module_types.get.return_value = card_type + mock_api.return_value.dcim.module_types.create.return_value = card_type + + new_device = NetBoxClient().create_device(device_name, site_tier) + assert new_device is not None + assert new_device.name == device_name @patch("gso.services.netbox_client.Router.from_subscription")