From dbc820afe7744feeddab95441b36531fb5f24a0a Mon Sep 17 00:00:00 2001
From: Hakan Calim <hakan.calim@fau.de>
Date: Mon, 16 Oct 2023 23:15:16 +0200
Subject: [PATCH] NAT-286: method create_device works fine

---
 test/services/test_netbox.py | 78 ++++++++++++++++++++++--------------
 1 file changed, 49 insertions(+), 29 deletions(-)

diff --git a/test/services/test_netbox.py b/test/services/test_netbox.py
index 97c26df7..b8145e29 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")
-- 
GitLab