Skip to content
Snippets Groups Projects
Commit dbc820af authored by Hakan Calim's avatar Hakan Calim
Browse files

NAT-286: method create_device works fine

parent 54198aff
No related branches found
No related tags found
1 merge request!89Feature/nat 286 create unit tests for netbox client
...@@ -6,6 +6,8 @@ import json ...@@ -6,6 +6,8 @@ import json
import uuid import uuid
from os import PathLike from os import PathLike
from unittest.mock import patch from unittest.mock import patch
import pytest
from pynetbox.core.response import Record
from gso.services.netbox_client import NetBoxClient from gso.services.netbox_client import NetBoxClient
from gso.products.product_blocks.site import SiteTier from gso.products.product_blocks.site import SiteTier
...@@ -23,49 +25,67 @@ def _load_fixture(filename): ...@@ -23,49 +25,67 @@ def _load_fixture(filename):
return json.load(f) return json.load(f)
def _get_mock_device(): @pytest.fixture(scope="module")
return _load_fixture("device.json") def device():
values = {"id": 1, "name": "test123"}
return Record(values, None, None)
def _get_mock_device_type(): @pytest.fixture(scope="module")
return _load_fixture("device_type.json") def device_type():
values = {"id": 1, "name": "test123"}
return Record(values, None, None)
def _get_mock_device_role(): @pytest.fixture(scope="module")
return _load_fixture("device_role.json") def device_role():
values = {"id": 1, "name": "test123"}
return Record(values, None, None)
def _get_mock_site(): @pytest.fixture(scope="module")
return _load_fixture("site.json") def site():
values = {"id": 1, "name": "test123"}
return Record(values, None, None)
def _get_mock_device_bay(): @pytest.fixture(scope="module")
return _load_fixture("device_bay.json") 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 = "mx1.lab.geant.net"
device.name = device_name
site_tier = SiteTier.TIER1 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 # Define mock calls
with patch('gso.services.netbox_client.pynetbox.api') as mock_api: mock_api.return_value.dcim.device_types.get.return_value = device_type
mock_api.return_value.dcim.device_types.get.return_value = mock_device_type mock_api.return_value.dcim.device_roles.get.return_value = device_role
mock_api.return_value.dcim.device_roles.get.return_value = mock_device_role mock_api.return_value.dcim.sites.get.return_value = site
mock_api.return_value.dcim.sites.get.return_value = mock_site mock_api.return_value.dcim.devices.create.return_value = device
mock_api.return_value.dcim.devices.create.return_value = mock_device mock_api.return_value.dcim.module_bays.filter.return_value = [device_bay]
mock_api.return_value.dcim.module_bays.filter.return_value = mock_device_bay mock_api.return_value.dcim.module_types.get.return_value = card_type
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 = card_type
mock_api.return_value.dcim.module_types.create.return_value = {"id": 1, "name": "eth-0/0/1"}
new_device = NetBoxClient().create_device(device_name, site_tier)
result = NetBoxClient().create_device(device_name, site_tier) assert new_device is not None
assert result is not None assert new_device.name == device_name
@patch("gso.services.netbox_client.Router.from_subscription") @patch("gso.services.netbox_client.Router.from_subscription")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment