"""Deleting a host interface: netcf removes a bridge's members with the bridge, so they are defined again on their own (as virsh iface-unbridge).""" from unittest.mock import MagicMock from django.test import SimpleTestCase from lxml import etree from vrtManager.interface import wvmInterface ADDRESS = "" BOND = "" def delete(xml): conn = wvmInterface.__new__(wvmInterface) conn.iface = MagicMock() conn.iface.XMLDesc.return_value = xml conn.wvm = MagicMock() conn.delete_iface() conn.iface.undefine.assert_called_once_with() return [etree.fromstring(call.args[0]) for call in conn.wvm.interfaceDefineXML.call_args_list] class DeleteInterfaceTestCase(SimpleTestCase): def test_the_only_member_takes_the_bridge_start_mode_and_addresses(self): (bond,) = delete(f"{ADDRESS}{BOND}") self.assertEqual(bond.get("name"), "bond0") self.assertEqual(bond.xpath("bond/@mode"), ["active-backup"]) self.assertEqual(bond.xpath("bond/interface/@name"), ["eth1"]) self.assertEqual(bond.xpath("start/@mode"), ["onboot"]) self.assertEqual(bond.xpath("protocol/ip/@address"), ["192.0.2.10"]) def test_several_members_take_the_start_mode_but_no_address(self): members = delete( f"{ADDRESS}" "" ) self.assertEqual([m.get("name") for m in members], ["eth1", "eth2"]) for member in members: self.assertEqual(member.xpath("start/@mode"), ["onboot"]) self.assertEqual(member.xpath("protocol"), []) def test_an_interface_that_is_not_a_bridge_is_only_undefined(self): self.assertEqual(delete(f"{ADDRESS}"), [])