summaryrefslogtreecommitdiff
path: root/tests/unit/modules/test_vyos_system.py
diff options
context:
space:
mode:
authoromnom62 <omnom62@outlook.com>2026-07-06 14:54:12 +1000
committerJohn Estabrook <jestabro@vyos.io>2026-08-21 14:02:19 -0500
commit45dc95873fd906c582fbbd5e6ca3838caf867399 (patch)
tree71b3e53e0080da60abf9fd2381705971dfe4d507 /tests/unit/modules/test_vyos_system.py
parent7a6b5e4f3a7a021cfa75faa7bf833741dfc09cff (diff)
downloadrest.vyos-45dc95873fd906c582fbbd5e6ca3838caf867399.tar.gz
rest.vyos-45dc95873fd906c582fbbd5e6ca3838caf867399.zip
T8989: wave4 vyos_command, dict_op refactorT8989_wave4
* T8989: vyos_command module * T8989: vyos_command module UAT and SIT * T8989: vyos_command changelog * T8989: vyos_command linter * T8989: vyos_config module * T8989: vyos_config module changelog * T8989: Wave 4 vyos_config module with integration and unit tests * T8323: vyos_system module * T8332: vyos_system SIT and UAT * T8323: vyos_vlan module * T8323: vyos_vlan module * T8323: vyos_vlan module SIT and UAT * T8323: vyos_system module * T8989: Wave 4 vyos_vlan reworked with dict_op engine * T8989: Fix dict_op single-value string list handling, add vyos_system integration tests * T8989: logging_global refactor * T8989: migrate ntp_global, logging_global, firewall_global to dict_op engine * T8989: vyos_nat module for REST API collection * T8989: vyos_nat module for REST API collection, linter fixes * T8989: vyos_ha module for REST API collection * T8989: vyos_ha module for REST API collection * T8989: vyos_ha module sanity and linter fixes * T8989: vyos_ha module sanity and linter fixes * T8989: vyos_ha module linter fixes * T8989: vyos.rest AI comment fixes * T8323: vyos_nat AI comment fixes * T8989 ai fixes * T8989: vyos_bgp_address_family dict_op * T8989: vyos_bgp_address_family vyos_bgp_global dict_op * T8989: dict_op refactor for firewall_*, nat, user * T8989: dict_op refactor for firewall_*, nat, user * T8989: dict_op refactor for ntp_global, ha * T8989: snmp_server dict_op refactor * T8989: snmp_server dict_op refactor * T8989: route_map dict_op refactor
Diffstat (limited to 'tests/unit/modules/test_vyos_system.py')
-rw-r--r--tests/unit/modules/test_vyos_system.py93
1 files changed, 93 insertions, 0 deletions
diff --git a/tests/unit/modules/test_vyos_system.py b/tests/unit/modules/test_vyos_system.py
new file mode 100644
index 0000000..9345b57
--- /dev/null
+++ b/tests/unit/modules/test_vyos_system.py
@@ -0,0 +1,93 @@
+# -*- coding: utf-8 -*-
+from __future__ import absolute_import, division, print_function
+
+
+__metaclass__ = type
+
+import unittest
+
+from ansible_collections.vyos.rest.plugins.module_utils.vyos import (
+ dict_op,
+ owned_config,
+)
+from ansible_collections.vyos.rest.plugins.modules.vyos_system import (
+ _BASE,
+ ARGUMENT_SPEC,
+)
+
+from .base import load_fixture
+
+
+class TestOwnedConfig(unittest.TestCase):
+
+ def setUp(self):
+ self.fixture = load_fixture("system_running.json")
+
+ def test_filters_to_owned_keys(self):
+ result = owned_config(self.fixture, ARGUMENT_SPEC)
+ self.assertIn("host-name", result)
+ self.assertIn("domain-name", result)
+ self.assertIn("name-server", result)
+
+ def test_excludes_non_owned_keys(self):
+ result = owned_config(self.fixture, ARGUMENT_SPEC)
+ self.assertNotIn("config-management", result)
+ self.assertNotIn("console", result)
+ self.assertNotIn("login", result)
+ self.assertNotIn("syslog", result)
+
+
+class TestDictOp(unittest.TestCase):
+
+ def _have(self):
+ return {
+ "host-name": "vyos150",
+ "domain-name": "lab.example.com",
+ "name-server": ["8.8.8.8", "8.8.4.4"],
+ }
+
+ def test_set_idempotent(self):
+ want = {
+ "host_name": "vyos150",
+ "domain_name": "lab.example.com",
+ "name_server": ["8.8.8.8", "8.8.4.4"],
+ }
+ cmds = dict_op(want, self._have(), _BASE, op="set")
+ self.assertEqual(cmds, [])
+
+ def test_set_new_value(self):
+ want = {"domain_name": "new.example.com"}
+ cmds = dict_op(want, self._have(), _BASE, op="set")
+ self.assertIn(("set", ["system", "domain-name", "new.example.com"]), cmds)
+
+ def test_set_new_nameserver(self):
+ want = {"name_server": ["8.8.8.8", "8.8.4.4", "1.1.1.1"]}
+ cmds = dict_op(want, self._have(), _BASE, op="set")
+ self.assertIn(("set", ["system", "name-server", "1.1.1.1"]), cmds)
+ self.assertNotIn(("set", ["system", "name-server", "8.8.8.8"]), cmds)
+
+ def test_delete_scalar(self):
+ want = {"domain_name": "lab.example.com"}
+ cmds = dict_op(want, self._have(), _BASE, op="delete")
+ self.assertIn(("delete", ["system", "domain-name"]), cmds)
+
+ def test_delete_list_item(self):
+ want = {"name_server": ["8.8.8.8"]}
+ cmds = dict_op(want, self._have(), _BASE, op="delete")
+ self.assertIn(("delete", ["system", "name-server", "8.8.8.8"]), cmds)
+ self.assertNotIn(("delete", ["system", "name-server", "8.8.4.4"]), cmds)
+
+ def test_delete_nonexistent(self):
+ want = {"domain_name": "other.com"}
+ have = {"host-name": "vyos150"}
+ cmds = dict_op(want, have, _BASE, op="delete")
+ self.assertEqual(cmds, [])
+
+ def test_set_missing_key(self):
+ want = {"host_name": "vyos150"}
+ cmds = dict_op(want, {}, _BASE, op="set")
+ self.assertIn(("set", ["system", "host-name", "vyos150"]), cmds)
+
+
+if __name__ == "__main__":
+ unittest.main()