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
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")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment