diff options
| author | omnom62 <omnom62@outlook.com> | 2026-07-06 14:54:12 +1000 |
|---|---|---|
| committer | John Estabrook <jestabro@vyos.io> | 2026-08-21 14:02:19 -0500 |
| commit | 45dc95873fd906c582fbbd5e6ca3838caf867399 (patch) | |
| tree | 71b3e53e0080da60abf9fd2381705971dfe4d507 /tests/unit/modules/test_vyos_system.py | |
| parent | 7a6b5e4f3a7a021cfa75faa7bf833741dfc09cff (diff) | |
| download | rest.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.py | 93 |
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() |
