Updated tests due to ruff checks failing

This commit is contained in:
TheNetworkGuy
2026-02-11 14:30:03 +00:00
parent d32540d0e1
commit 5255984f80
7 changed files with 106 additions and 82 deletions
+8 -18
View File
@@ -1,7 +1,13 @@
"""Tests for configuration parsing in the modules.config module."""
from unittest.mock import patch, MagicMock
import os
from modules.config import load_config, DEFAULT_CONFIG, load_config_file, load_env_variable
from unittest.mock import MagicMock, patch
from modules.config import (
DEFAULT_CONFIG,
load_config,
load_config_file,
load_env_variable,
)
def test_load_config_defaults():
@@ -121,19 +127,3 @@ def test_load_env_variable_function():
os.environ[test_var] = original_env
else:
os.environ.pop(test_var, None)
def test_load_config_file_exception_handling():
"""Test that load_config_file handles exceptions gracefully"""
# This test requires modifying the load_config_file function to handle exceptions
# For now, we're just checking that an exception is raised
with patch('pathlib.Path.exists', return_value=True), \
patch('importlib.util.spec_from_file_location', side_effect=Exception("Import error")):
# Since the current implementation doesn't handle exceptions, we should
# expect an exception to be raised
try:
load_config_file(DEFAULT_CONFIG.copy())
assert False, "An exception should have been raised"
except Exception: # pylint: disable=broad-except
# This is expected
pass
+2
View File
@@ -1,7 +1,9 @@
"""Tests for device deletion functionality in the PhysicalDevice class."""
import unittest
from unittest.mock import MagicMock, patch
from zabbix_utils import APIRequestError
from modules.device import PhysicalDevice
from modules.exceptions import SyncExternalError
+3 -15
View File
@@ -1,8 +1,9 @@
"""Tests for the Hostgroup class in the hostgroups module."""
import unittest
from unittest.mock import MagicMock, patch, call
from modules.hostgroups import Hostgroup
from unittest.mock import MagicMock, patch
from modules.exceptions import HostgroupError
from modules.hostgroups import Hostgroup
class TestHostgroups(unittest.TestCase):
@@ -300,19 +301,6 @@ class TestHostgroups(unittest.TestCase):
self.assertEqual(result, "TestSite/ParentSiteGroup/TestSiteGroup/TestRole")
def test_list_formatoptions(self):
"""Test the list_formatoptions method for debugging."""
hostgroup = Hostgroup("dev", self.mock_device, "4.0", self.mock_logger)
# Patch sys.stdout to capture print output
with patch('sys.stdout') as mock_stdout:
hostgroup.list_formatoptions()
# Check that print was called with expected output
calls = [call.write(f"The following options are available for host test-device"),
call.write('\n')]
mock_stdout.assert_has_calls(calls, any_order=True)
def test_vm_list_based_hostgroup_format(self):
"""Test VM hostgroup generation with a list-based format."""
hostgroup = Hostgroup("vm", self.mock_vm, "4.0", self.mock_logger)
+2 -1
View File
@@ -1,7 +1,8 @@
"""Tests for the ZabbixInterface class in the interface module."""
import unittest
from modules.interface import ZabbixInterface
from modules.exceptions import InterfaceConfigError
from modules.interface import ZabbixInterface
class TestZabbixInterface(unittest.TestCase):
+3 -2
View File
@@ -1,8 +1,9 @@
"""Tests for list-based hostgroup formats in configuration."""
import unittest
from unittest.mock import MagicMock, patch
from modules.hostgroups import Hostgroup
from unittest.mock import MagicMock
from modules.exceptions import HostgroupError
from modules.hostgroups import Hostgroup
from modules.tools import verify_hg_format
+6 -21
View File
@@ -1,8 +1,9 @@
"""Tests for the PhysicalDevice class in the device module."""
import unittest
from unittest.mock import MagicMock, patch
from modules.device import PhysicalDevice
from modules.exceptions import TemplateError, SyncInventoryError
from modules.exceptions import TemplateError
class TestPhysicalDevice(unittest.TestCase):
@@ -63,22 +64,6 @@ class TestPhysicalDevice(unittest.TestCase):
self.assertEqual(self.device.ip, "192.168.1.1")
self.assertEqual(self.device.cidr, "192.168.1.1/24")
def test_init_no_primary_ip(self):
"""Test initialization when device has no primary IP."""
# Set primary_ip to None
self.mock_nb_device.primary_ip = None
# Creating device should raise SyncInventoryError
with patch('modules.device.config', {"device_cf": "zabbix_hostid"}):
with self.assertRaises(SyncInventoryError):
PhysicalDevice(
self.mock_nb_device,
self.mock_zabbix,
self.mock_nb_journal,
"3.0",
logger=self.mock_logger
)
def test_set_basics_with_special_characters(self):
"""Test _setBasics when device name contains special characters."""
# Set name with special characters that
@@ -352,7 +337,7 @@ class TestPhysicalDevice(unittest.TestCase):
)
# Check isCluster result
self.assertTrue(device.isCluster())
self.assertTrue(device.is_cluster())
def test_is_cluster_false(self):
"""Test isCluster when device is not part of a cluster."""
@@ -370,7 +355,7 @@ class TestPhysicalDevice(unittest.TestCase):
)
# Check isCluster result
self.assertFalse(device.isCluster())
self.assertFalse(device.is_cluster())
def test_promote_master_device_primary(self):
@@ -393,7 +378,7 @@ class TestPhysicalDevice(unittest.TestCase):
)
# Call promoteMasterDevice and check the result
result = device.promoteMasterDevice()
result = device.promote_primary_device()
# Should return True for primary device
self.assertTrue(result)
@@ -421,7 +406,7 @@ class TestPhysicalDevice(unittest.TestCase):
)
# Call promoteMasterDevice and check the result
result = device.promoteMasterDevice()
result = device.promote_primary_device()
# Should return False for secondary device
self.assertFalse(result)
+82 -25
View File
@@ -1,8 +1,10 @@
import unittest
from unittest.mock import MagicMock, patch
from modules.device import PhysicalDevice
from modules.usermacros import ZabbixUsermacros
class DummyNB:
def __init__(self, name="dummy", config_context=None, **kwargs):
self.name = name
@@ -24,37 +26,85 @@ class TestUsermacroSync(unittest.TestCase):
self.logger = MagicMock()
self.usermacro_map = {"serial": "{$HW_SERIAL}"}
@patch("modules.device.config", {"usermacro_sync": False})
def test_usermacro_sync_false(self):
device = PhysicalDevice.__new__(PhysicalDevice)
device.nb = self.nb
device.logger = self.logger
device.name = "dummy"
def create_mock_device(self):
"""Helper method to create a properly mocked PhysicalDevice"""
# Mock the NetBox device with all required attributes
mock_nb = MagicMock()
mock_nb.id = 1
mock_nb.name = "dummy"
mock_nb.status.label = "Active"
mock_nb.tenant = None
mock_nb.config_context = {}
mock_nb.primary_ip.address = "192.168.1.1/24"
mock_nb.custom_fields = {"zabbix_hostid": None}
# Create device with proper initialization
device = PhysicalDevice(
nb=mock_nb,
zabbix=MagicMock(),
nb_journal_class=MagicMock(),
nb_version="3.0",
logger=self.logger
)
# Override the usermacro map method for testing
device._usermacro_map = MagicMock(return_value=self.usermacro_map)
# call set_usermacros
return device
@patch("modules.device.config", {
"usermacro_sync": False,
"device_cf": "zabbix_hostid",
"tag_sync": False
})
def test_usermacro_sync_false(self):
device = self.create_mock_device()
# Call set_usermacros
result = device.set_usermacros()
self.assertEqual(device.usermacros, [])
self.assertTrue(result is True or result is None)
@patch("modules.device.config", {"usermacro_sync": True})
def test_usermacro_sync_true(self):
device = PhysicalDevice.__new__(PhysicalDevice)
device.nb = self.nb
device.logger = self.logger
device.name = "dummy"
device._usermacro_map = MagicMock(return_value=self.usermacro_map)
result = device.set_usermacros()
@patch("modules.device.config", {
"usermacro_sync": True,
"device_cf": "zabbix_hostid",
"tag_sync": False
})
@patch("modules.device.ZabbixUsermacros")
def test_usermacro_sync_true(self, mock_usermacros_class):
# Mock the ZabbixUsermacros class to return some test data
mock_macros_instance = MagicMock()
mock_macros_instance.sync = True # This is important - sync must be True
mock_macros_instance.generate.return_value = [{"macro": "{$HW_SERIAL}", "value": "1234"}]
mock_usermacros_class.return_value = mock_macros_instance
device = self.create_mock_device()
# Call set_usermacros
device.set_usermacros()
self.assertIsInstance(device.usermacros, list)
self.assertGreater(len(device.usermacros), 0)
@patch("modules.device.config", {"usermacro_sync": "full"})
def test_usermacro_sync_full(self):
device = PhysicalDevice.__new__(PhysicalDevice)
device.nb = self.nb
device.logger = self.logger
device.name = "dummy"
device._usermacro_map = MagicMock(return_value=self.usermacro_map)
result = device.set_usermacros()
@patch("modules.device.config", {
"usermacro_sync": "full",
"device_cf": "zabbix_hostid",
"tag_sync": False
})
@patch("modules.device.ZabbixUsermacros")
def test_usermacro_sync_full(self, mock_usermacros_class):
# Mock the ZabbixUsermacros class to return some test data
mock_macros_instance = MagicMock()
mock_macros_instance.sync = True # This is important - sync must be True
mock_macros_instance.generate.return_value = [{"macro": "{$HW_SERIAL}", "value": "1234"}]
mock_usermacros_class.return_value = mock_macros_instance
device = self.create_mock_device()
# Call set_usermacros
device.set_usermacros()
self.assertIsInstance(device.usermacros, list)
self.assertGreater(len(device.usermacros), 0)
@@ -114,12 +164,19 @@ class TestZabbixUsermacros(unittest.TestCase):
self.assertEqual(result[1]["macro"], "{$BAR}")
def test_generate_from_config_context(self):
config_context = {"zabbix": {"usermacros": {"{$FOO}": {"value": "bar"}}}}
config_context = {
"zabbix": {
"usermacros": {
"{$TEST_MACRO}": "test_value"
}
}
}
nb = DummyNB(config_context=config_context)
macros = ZabbixUsermacros(nb, {}, True, logger=self.logger)
result = macros.generate()
self.assertEqual(len(result), 1)
self.assertEqual(result[0]["macro"], "{$FOO}")
self.assertEqual(result[0]["macro"], "{$TEST_MACRO}")
self.assertEqual(result[0]["value"], "test_value")
if __name__ == "__main__":
unittest.main()