summaryrefslogtreecommitdiff
path: root/tests/unit
diff options
context:
space:
mode:
authoromnom62 <omnom62@outlook.com>2026-07-02 16:48:48 +1000
committerJohn Estabrook <jestabro@vyos.io>2026-08-21 10:18:35 -0500
commit2d0804cc31aa2b0aa24bbd553f80ea84c9830fa7 (patch)
tree95b106b1f46fae397f5921f972464ac16cecbf5c /tests/unit
parent2282a8361d8f0b0a3f22bfd403fdabf498316b80 (diff)
downloadrest.vyos-2d0804cc31aa2b0aa24bbd553f80ea84c9830fa7.tar.gz
rest.vyos-2d0804cc31aa2b0aa24bbd553f80ea84c9830fa7.zip
T8989: Add vyos_facts integration and unit tests with fixtures
Diffstat (limited to 'tests/unit')
-rw-r--r--tests/unit/fixtures/facts_interfaces.json11
-rw-r--r--tests/unit/fixtures/facts_system.json28
-rw-r--r--tests/unit/modules/test_vyos_facts.py97
3 files changed, 136 insertions, 0 deletions
diff --git a/tests/unit/fixtures/facts_interfaces.json b/tests/unit/fixtures/facts_interfaces.json
new file mode 100644
index 0000000..b58e17f
--- /dev/null
+++ b/tests/unit/fixtures/facts_interfaces.json
@@ -0,0 +1,11 @@
+{
+ "ethernet": {
+ "eth0": { "address": "dhcp", "hw-id": "52:54:00:65:5a:24" },
+ "eth1": {
+ "description": "uplink",
+ "hw-id": "52:54:00:96:42:93",
+ "mtu": "1500"
+ },
+ "eth2": { "hw-id": "52:54:00:75:31:fa" }
+ }
+}
diff --git a/tests/unit/fixtures/facts_system.json b/tests/unit/fixtures/facts_system.json
new file mode 100644
index 0000000..68091ed
--- /dev/null
+++ b/tests/unit/fixtures/facts_system.json
@@ -0,0 +1,28 @@
+{
+ "host-name": "vyos-test",
+ "login": {
+ "user": {
+ "vyos": {
+ "authentication": {
+ "encrypted-password": "$6$abc123"
+ }
+ },
+ "alice": {
+ "full-name": "Alice Smith",
+ "authentication": {
+ "encrypted-password": "$6$def456",
+ "public-keys": {
+ "alice-key": {
+ "key": "AAAAB3...",
+ "type": "ssh-rsa"
+ }
+ }
+ }
+ }
+ }
+ },
+ "syslog": {
+ "local": {},
+ "console": {}
+ }
+}
diff --git a/tests/unit/modules/test_vyos_facts.py b/tests/unit/modules/test_vyos_facts.py
new file mode 100644
index 0000000..3fcf82e
--- /dev/null
+++ b/tests/unit/modules/test_vyos_facts.py
@@ -0,0 +1,97 @@
+# -*- coding: utf-8 -*-
+from __future__ import absolute_import, division, print_function
+
+
+__metaclass__ = type
+
+import json
+import os
+import unittest
+
+from unittest.mock import MagicMock
+
+from ansible_collections.vyos.rest.plugins.modules.vyos_facts import (
+ gather_bgp,
+ gather_hostname,
+ gather_interfaces,
+ gather_logging,
+ gather_users,
+)
+
+
+def load_fixture(filename):
+ fixtures_dir = os.path.join(os.path.dirname(__file__), "..", "fixtures")
+ with open(os.path.join(fixtures_dir, filename)) as f:
+ return json.load(f)
+
+
+class TestVyOSFactsGather(unittest.TestCase):
+
+ def setUp(self):
+ self.mock_vyos = MagicMock()
+ self.system_fixture = load_fixture("facts_system.json")
+ self.interfaces_fixture = load_fixture("facts_interfaces.json")
+
+ def test_gather_hostname(self):
+ self.mock_vyos.get_config = MagicMock(return_value=self.system_fixture)
+ result = gather_hostname(self.mock_vyos)
+ self.assertEqual(result, "vyos-test")
+
+ def test_gather_hostname_empty(self):
+ self.mock_vyos.get_config = MagicMock(return_value={})
+ result = gather_hostname(self.mock_vyos)
+ self.assertEqual(result, "")
+
+ def test_gather_interfaces(self):
+ self.mock_vyos.get_config = MagicMock(return_value=self.interfaces_fixture)
+ result = gather_interfaces(self.mock_vyos)
+ self.assertIn("ethernet", result)
+ self.assertIn("eth0", result["ethernet"])
+ self.assertIn("eth1", result["ethernet"])
+ self.assertEqual(result["ethernet"]["eth1"]["description"], "uplink")
+
+ def test_gather_users(self):
+ self.mock_vyos.get_config = MagicMock(
+ return_value=self.system_fixture["login"],
+ )
+ result = gather_users(self.mock_vyos)
+ names = [u["name"] for u in result]
+ self.assertIn("vyos", names)
+ self.assertIn("alice", names)
+ alice = next(u for u in result if u["name"] == "alice")
+ self.assertEqual(alice["full_name"], "Alice Smith")
+ self.assertIn("alice-key", alice["public_keys"])
+
+ def test_gather_users_empty(self):
+ self.mock_vyos.get_config = MagicMock(return_value={})
+ result = gather_users(self.mock_vyos)
+ self.assertEqual(result, [])
+
+ def test_gather_users_none(self):
+ self.mock_vyos.get_config = MagicMock(return_value=None)
+ result = gather_users(self.mock_vyos)
+ self.assertEqual(result, [])
+
+ def test_gather_bgp(self):
+ data = {"system-as": "65000", "parameters": {"router-id": "192.0.1.1"}}
+ self.mock_vyos.get_config = MagicMock(return_value=data)
+ result = gather_bgp(self.mock_vyos)
+ self.assertEqual(result["system-as"], "65000")
+ self.assertEqual(result["parameters"]["router-id"], "192.0.1.1")
+
+ def test_gather_bgp_empty(self):
+ self.mock_vyos.get_config = MagicMock(return_value={})
+ result = gather_bgp(self.mock_vyos)
+ self.assertEqual(result, {})
+
+ def test_gather_logging(self):
+ self.mock_vyos.get_config = MagicMock(
+ return_value=self.system_fixture["syslog"],
+ )
+ result = gather_logging(self.mock_vyos)
+ self.assertIn("local", result)
+ self.assertIn("console", result)
+
+
+if __name__ == "__main__":
+ unittest.main()