summaryrefslogtreecommitdiff
path: root/tests/unit
diff options
context:
space:
mode:
authorGaige B Paulsen <gaige@cluetrust.com>2025-01-26 15:00:56 -0500
committerGitHub <noreply@github.com>2025-01-27 06:00:56 +1000
commit0a0ab13f84e3930e203a412ae08c127b282ab675 (patch)
treeb52db22cfa3fc0994c0d3a2ccf20e34b32203e55 /tests/unit
parentfda50fe09d21b365264c6213bc5883201c460a29 (diff)
downloadvyos.vyos-0a0ab13f84e3930e203a412ae08c127b282ab675.tar.gz
vyos.vyos-0a0ab13f84e3930e203a412ae08c127b282ab675.zip
T7006: update to fix interface tests (#374)
* T7008: update to fix interface tests * T7006: fix: tests for interfaces * T7006: further work on interfaces * test: attempt to fix codecov on branch * test: unwind cli_config loops for 1.4 * fix: vif handling in replace,override,delete * fix: vif handling and docs
Diffstat (limited to 'tests/unit')
-rw-r--r--tests/unit/modules/network/vyos/fixtures/vyos_interfaces_config_vif.cfg14
-rw-r--r--tests/unit/modules/network/vyos/test_vyos_interfaces.py236
2 files changed, 247 insertions, 3 deletions
diff --git a/tests/unit/modules/network/vyos/fixtures/vyos_interfaces_config_vif.cfg b/tests/unit/modules/network/vyos/fixtures/vyos_interfaces_config_vif.cfg
new file mode 100644
index 00000000..b1b6b4c2
--- /dev/null
+++ b/tests/unit/modules/network/vyos/fixtures/vyos_interfaces_config_vif.cfg
@@ -0,0 +1,14 @@
+set interfaces ethernet eth0 address 'dhcp'
+set interfaces ethernet eth0 hw-id '08:00:27:7c:85:05'
+set interfaces ethernet eth1 description 'test-interface'
+set interfaces ethernet eth1 vif 200
+set interfaces ethernet eth1 vif 200 description 'VIF eth1.200'
+set interfaces ethernet eth1 vif 201
+set interfaces ethernet eth1 vif 201 description 'VIF eth1.201'
+set interfaces ethernet eth1 vif 201 disable
+set interfaces ethernet eth2 hw-id '08:00:27:04:85:99'
+set interfaces ethernet eth3 hw-id '08:00:27:1c:82:d1'
+set interfaces ethernet eth3 disable
+set interfaces ethernet eth3 description 'Ethernet 3'
+set interfaces wireguard wg02 description 'wire guard int 2'
+set interfaces loopback 'lo'
diff --git a/tests/unit/modules/network/vyos/test_vyos_interfaces.py b/tests/unit/modules/network/vyos/test_vyos_interfaces.py
index 14e49c36..8549d768 100644
--- a/tests/unit/modules/network/vyos/test_vyos_interfaces.py
+++ b/tests/unit/modules/network/vyos/test_vyos_interfaces.py
@@ -59,6 +59,8 @@ class TestVyosFirewallInterfacesModule(TestVyosModule):
"facts.interfaces.interfaces.InterfacesFacts.get_device_data",
)
self.execute_show_command = self.mock_execute_show_command.start()
+ # define the default fixture for the vyos_interfaces module
+ self.fixture_path = "vyos_interfaces_config.cfg"
def tearDown(self):
super(TestVyosFirewallInterfacesModule, self).tearDown()
@@ -70,7 +72,7 @@ class TestVyosFirewallInterfacesModule(TestVyosModule):
def load_fixtures(self, commands=None, filename=None):
def load_from_file(*args, **kwargs):
- return load_fixture("vyos_interfaces_config.cfg")
+ return load_fixture(self.fixture_path)
self.execute_show_command.side_effect = load_from_file
@@ -93,6 +95,52 @@ class TestVyosFirewallInterfacesModule(TestVyosModule):
]
self.execute_module(changed=True, commands=commands)
+ def test_vyos_interfaces_merged_retain_vif(self):
+ # we have a vif in eth1 at this point, so that should be retained
+ self.fixture_path = "vyos_interfaces_config_vif.cfg"
+ set_module_args(
+ dict(
+ config=[
+ dict(name="bond1", description="Bond - 1", enabled=True),
+ dict(name="vtun1", description="vtun - 1", enabled=True),
+ dict(name="wg01", description="wg - 1", enabled=True),
+ ],
+ state="merged",
+ ),
+ )
+
+ commands = [
+ "set interfaces bonding bond1 description 'Bond - 1'",
+ "set interfaces openvpn vtun1 description 'vtun - 1'",
+ "set interfaces wireguard wg01 description 'wg - 1'",
+ ]
+ self.execute_module(changed=True, commands=commands)
+
+ def test_vyos_interfaces_merged_additional_vif(self):
+ # we have a vif in eth1 at this point, so that should be retained
+ self.fixture_path = "vyos_interfaces_config_vif.cfg"
+ set_module_args(
+ dict(
+ config=[
+ dict(
+ name="eth1",
+ vifs=[
+ dict(
+ vlan_id=105,
+ description="vlan 105",
+ ),
+ ],
+ ),
+ ],
+ state="merged",
+ ),
+ )
+
+ commands = [
+ "set interfaces ethernet eth1 vif 105 description 'vlan 105'",
+ ]
+ self.execute_module(changed=True, commands=commands)
+
def test_vyos_interfaces_merged_idempotent(self):
set_module_args(
dict(
@@ -159,6 +207,102 @@ class TestVyosFirewallInterfacesModule(TestVyosModule):
]
self.execute_module(changed=True, commands=commands)
+ def test_vyos_interfaces_replaced_remove_vif(self):
+ # we have a vif in eth1 at this point, so that should be removed
+ self.fixture_path = "vyos_interfaces_config_vif.cfg"
+ set_module_args(
+ dict(
+ config=[
+ dict(
+ name="eth4",
+ description="Ethernet 4",
+ enabled=True,
+ speed="auto",
+ duplex="auto",
+ ),
+ dict(name="eth1", description="Configured by Ansible"),
+ ],
+ state="replaced",
+ ),
+ )
+
+ commands = [
+ "delete interfaces ethernet eth1 vif 200",
+ "delete interfaces ethernet eth1 vif 201",
+ "set interfaces ethernet eth1 description 'Configured by Ansible'",
+ "set interfaces ethernet eth4 description 'Ethernet 4'",
+ "set interfaces ethernet eth4 duplex 'auto'",
+ "set interfaces ethernet eth4 speed 'auto'",
+ ]
+ self.execute_module(changed=True, commands=commands)
+
+ def test_vyos_interfaces_merged_enable_vif(self):
+ # merge in enabling vif
+ self.fixture_path = "vyos_interfaces_config_vif.cfg"
+ set_module_args(
+ dict(
+ config=[
+ dict(
+ name="eth1",
+ vifs=[
+ dict(
+ vlan_id=201,
+ enabled=True,
+ ),
+ ],
+ ),
+ ],
+ state="merged",
+ ),
+ )
+
+ commands = [
+ "delete interfaces ethernet eth1 vif 201 disable",
+ ]
+ self.execute_module(changed=True, commands=commands)
+
+ def test_vyos_interfaces_replaced_retain_vif(self):
+ # we have a vif in eth1 at this point, so that should be removed
+ self.fixture_path = "vyos_interfaces_config_vif.cfg"
+ set_module_args(
+ dict(
+ config=[
+ dict(
+ name="eth4",
+ description="Ethernet 4",
+ enabled=True,
+ speed="auto",
+ duplex="auto",
+ ),
+ dict(
+ name="eth1",
+ description="Configured by Ansible",
+ vifs=[
+ dict(
+ vlan_id=200,
+ ),
+ dict(
+ vlan_id=201,
+ description="VIF eth1.201",
+ enabled=True,
+ ),
+ ],
+ ),
+ ],
+ state="replaced",
+ ),
+ )
+
+ commands = [
+ "delete interfaces ethernet eth1 vif 200 description",
+ "delete interfaces ethernet eth1 vif 201 disable",
+ "set interfaces ethernet eth1 description 'Configured by Ansible'",
+ "set interfaces ethernet eth4 description 'Ethernet 4'",
+ "set interfaces ethernet eth4 duplex 'auto'",
+ "set interfaces ethernet eth4 speed 'auto'",
+ ]
+ self.execute_module(changed=True, commands=commands)
+
def test_vyos_interfaces_overridden_newinterface(self):
set_module_args(
dict(
@@ -187,6 +331,38 @@ class TestVyosFirewallInterfacesModule(TestVyosModule):
]
self.execute_module(changed=True, commands=commands)
+ def test_vyos_overridden_remove_vif(self):
+ # we have a vif in eth1 at this point, so that should be removed
+ self.fixture_path = "vyos_interfaces_config_vif.cfg"
+ set_module_args(
+ dict(
+ config=[
+ dict(
+ name="eth4",
+ description="Ethernet 4",
+ enabled=True,
+ speed="auto",
+ duplex="auto",
+ ),
+ dict(name="eth1", description="Configured by Ansible"),
+ ],
+ state="overridden",
+ ),
+ )
+
+ commands = [
+ "set interfaces ethernet eth1 description 'Configured by Ansible'",
+ "set interfaces ethernet eth4 description 'Ethernet 4'",
+ "set interfaces ethernet eth4 duplex 'auto'",
+ "set interfaces ethernet eth4 speed 'auto'",
+ "delete interfaces wireguard wg02 description",
+ "delete interfaces ethernet eth3 description",
+ "delete interfaces ethernet eth3 disable",
+ "delete interfaces ethernet eth1 vif 200",
+ "delete interfaces ethernet eth1 vif 201",
+ ]
+ self.execute_module(changed=True, commands=commands)
+
def test_vyos_interfaces_idempotent_disable(self):
set_module_args(
dict(
@@ -198,7 +374,7 @@ class TestVyosFirewallInterfacesModule(TestVyosModule):
),
],
state="merged",
- )
+ ),
)
commands = []
@@ -215,8 +391,62 @@ class TestVyosFirewallInterfacesModule(TestVyosModule):
),
],
state="replaced",
- )
+ ),
)
commands = []
self.execute_module(changed=False, commands=commands)
+
+ def test_vyos_interfaces_deleted_remove_vif(self):
+ # we have a vif in eth1 at this point, so that should be removed
+ self.fixture_path = "vyos_interfaces_config_vif.cfg"
+ set_module_args(
+ dict(
+ config=[
+ dict(name="eth1"),
+ ],
+ state="deleted",
+ ),
+ )
+
+ commands = [
+ "delete interfaces ethernet eth1 vif 200",
+ "delete interfaces ethernet eth1 vif 201",
+ "delete interfaces ethernet eth1 description",
+ ]
+ self.execute_module(changed=True, commands=commands)
+
+ def test_vyos_interfaces_deleted_remove_all(self):
+ # we have a vif in eth1 at this point, so that should be removed
+ set_module_args(
+ dict(
+ config=[],
+ state="deleted",
+ ),
+ )
+
+ commands = [
+ "delete interfaces ethernet eth1 description",
+ "delete interfaces ethernet eth3 description",
+ "delete interfaces ethernet eth3 disable",
+ "delete interfaces wireguard wg02 description",
+ ]
+ self.execute_module(changed=True, commands=commands)
+
+ def test_vyos_interfaces_replaced_bad_name(self):
+ set_module_args(
+ dict(
+ config=[
+ dict(
+ name="int4",
+ description="Ethernet 4",
+ enabled=True,
+ speed="auto",
+ duplex="auto",
+ ),
+ ],
+ state="replaced",
+ ),
+ )
+
+ self.execute_module(failed=True)