summaryrefslogtreecommitdiff
path: root/tests/unit/modules/test_vyos_vlan.py
diff options
context:
space:
mode:
authorJohn Estabrook <jestabro@vyos.io>2026-08-21 14:06:28 -0500
committerGitHub <noreply@github.com>2026-08-21 14:06:28 -0500
commitff5224728484eb4f3bbf6ae52fe0b79f64959660 (patch)
tree71b3e53e0080da60abf9fd2381705971dfe4d507 /tests/unit/modules/test_vyos_vlan.py
parent7a6b5e4f3a7a021cfa75faa7bf833741dfc09cff (diff)
parent45dc95873fd906c582fbbd5e6ca3838caf867399 (diff)
downloadrest.vyos-ff5224728484eb4f3bbf6ae52fe0b79f64959660.tar.gz
rest.vyos-ff5224728484eb4f3bbf6ae52fe0b79f64959660.zip
Merge pull request #16 from vyos/T8989_wave4
T8989: wave4 vyos_command, dict_op refactor
Diffstat (limited to 'tests/unit/modules/test_vyos_vlan.py')
-rw-r--r--tests/unit/modules/test_vyos_vlan.py116
1 files changed, 116 insertions, 0 deletions
diff --git a/tests/unit/modules/test_vyos_vlan.py b/tests/unit/modules/test_vyos_vlan.py
new file mode 100644
index 0000000..58c1be1
--- /dev/null
+++ b/tests/unit/modules/test_vyos_vlan.py
@@ -0,0 +1,116 @@
+# -*- coding: utf-8 -*-
+from __future__ import absolute_import, division, print_function
+
+
+__metaclass__ = type
+
+import unittest
+
+from unittest.mock import MagicMock
+
+from ansible_collections.vyos.rest.plugins.modules.vyos_vlan import (
+ build_commands,
+ get_running_config,
+)
+
+from .base import load_fixture
+
+
+_BASE = ["interfaces", "ethernet"]
+
+
+class TestVyOSVlanGetRunning(unittest.TestCase):
+
+ def setUp(self):
+ self.mock_vyos = MagicMock()
+ self.fixture = load_fixture("vlan_running.json")
+ self.mock_vyos.get_config = MagicMock(return_value=self.fixture)
+
+ def test_parses_vlans(self):
+ result = get_running_config(self.mock_vyos)
+ vlan_ids = [v["vlan_id"] for v in result]
+ self.assertIn(10, vlan_ids)
+ self.assertIn(20, vlan_ids)
+
+ def test_parses_description(self):
+ result = get_running_config(self.mock_vyos)
+ v10 = next(v for v in result if v["vlan_id"] == 10)
+ self.assertEqual(v10["description"], "VLAN10")
+
+ def test_parses_address(self):
+ result = get_running_config(self.mock_vyos)
+ v10 = next(v for v in result if v["vlan_id"] == 10)
+ self.assertEqual(v10["address"], "192.168.10.1/24")
+
+ def test_parses_multiple_interfaces(self):
+ result = get_running_config(self.mock_vyos)
+ v10 = next(v for v in result if v["vlan_id"] == 10)
+ self.assertIn("eth1", v10["interfaces"])
+ self.assertIn("eth2", v10["interfaces"])
+
+ def test_empty_config(self):
+ self.mock_vyos.get_config = MagicMock(return_value={})
+ result = get_running_config(self.mock_vyos)
+ self.assertEqual(result, [])
+
+
+class TestVyOSVlanBuildCommands(unittest.TestCase):
+
+ def _have(self):
+ return [
+ {
+ "vlan_id": 10,
+ "interfaces": ["eth1"],
+ "description": "VLAN10",
+ "address": "192.168.10.1/24",
+ },
+ {"vlan_id": 20, "interfaces": ["eth1"], "description": "VLAN20"},
+ ]
+
+ def test_present_new_vlan(self):
+ config = [{"vlan_id": 30, "description": "VLAN30", "interfaces": ["eth1"]}]
+ cmds = build_commands(config, [], "present")
+ self.assertIn(
+ ("set", _BASE + ["eth1", "vif", "30", "description", "VLAN30"]),
+ cmds,
+ )
+
+ def test_present_idempotent(self):
+ config = [
+ {
+ "vlan_id": 10,
+ "description": "VLAN10",
+ "address": "192.168.10.1/24",
+ "interfaces": ["eth1"],
+ },
+ {"vlan_id": 20, "description": "VLAN20", "interfaces": ["eth1"]},
+ ]
+ cmds = build_commands(config, self._have(), "present")
+ self.assertEqual(cmds, [])
+
+ def test_present_update_description(self):
+ config = [{"vlan_id": 10, "description": "VLAN10-new", "interfaces": ["eth1"]}]
+ cmds = build_commands(config, self._have(), "present")
+ self.assertIn(
+ ("set", _BASE + ["eth1", "vif", "10", "description", "VLAN10-new"]),
+ cmds,
+ )
+
+ def test_absent_existing(self):
+ config = [{"vlan_id": 10, "interfaces": ["eth1"]}]
+ cmds = build_commands(config, self._have(), "absent")
+ self.assertIn(("delete", _BASE + ["eth1", "vif", "10"]), cmds)
+
+ def test_absent_nonexistent(self):
+ config = [{"vlan_id": 99, "interfaces": ["eth1"]}]
+ cmds = build_commands(config, self._have(), "absent")
+ self.assertEqual(cmds, [])
+
+ def test_present_bare_vif(self):
+ config = [{"vlan_id": 30, "interfaces": ["eth1"]}]
+ cmds = build_commands(config, [], "present")
+ self.assertIn(("set", _BASE + ["eth1", "vif", "30"]), cmds)
+
+
+if __name__ == "__main__":
+ unittest.main()