Add tests for PortMapping changes
Some checks failed
CI / build (20.x, 3.12) (push) Has been cancelled
CI / build (20.x, 3.13) (push) Has been cancelled

This commit is contained in:
Jeremy Stretch 2025-12-04 11:31:51 -05:00
parent 619728a048
commit 107c1f25c8

View File

@ -839,3 +839,205 @@ class CablePathTests(CablePathTestCase):
is_active=True
)
self.assertEqual(CablePath.objects.count(), 4)
def test_304_add_port_mapping_between_connected_ports(self):
"""
[IF1] --C1-- [FP1] [RP1] --C2-- [IF2]
"""
interface1 = Interface.objects.create(device=self.device, name='Interface 1')
interface2 = Interface.objects.create(device=self.device, name='Interface 2')
frontport1 = FrontPort.objects.create(device=self.device, name='Front Port 1')
rearport1 = RearPort.objects.create(device=self.device, name='Rear Port 1')
cable1 = Cable(
a_terminations=[interface1],
b_terminations=[frontport1]
)
cable1.save()
cable2 = Cable(
a_terminations=[interface2],
b_terminations=[rearport1]
)
cable2.save()
# Check for incomplete paths
self.assertPathExists(
(interface1, cable1, frontport1),
is_complete=False,
is_active=True
)
self.assertPathExists(
(interface2, cable2, rearport1),
is_complete=False,
is_active=True
)
# Create a PortMapping between frontport1 and rearport1
PortMapping.objects.create(
device=self.device,
front_port=frontport1,
front_port_position=1,
rear_port=rearport1,
rear_port_position=1,
)
# Check that paths are now complete
self.assertPathExists(
(interface1, cable1, frontport1, rearport1, cable2, interface2),
is_complete=True,
is_active=True
)
self.assertPathExists(
(interface2, cable2, rearport1, frontport1, cable1, interface1),
is_complete=True,
is_active=True
)
def test_305_delete_port_mapping_between_connected_ports(self):
"""
[IF1] --C1-- [FP1] [RP1] --C2-- [IF2]
"""
interface1 = Interface.objects.create(device=self.device, name='Interface 1')
interface2 = Interface.objects.create(device=self.device, name='Interface 2')
frontport1 = FrontPort.objects.create(device=self.device, name='Front Port 1')
rearport1 = RearPort.objects.create(device=self.device, name='Rear Port 1')
cable1 = Cable(
a_terminations=[interface1],
b_terminations=[frontport1]
)
cable1.save()
cable2 = Cable(
a_terminations=[interface2],
b_terminations=[rearport1]
)
cable2.save()
portmapping1 = PortMapping.objects.create(
device=self.device,
front_port=frontport1,
front_port_position=1,
rear_port=rearport1,
rear_port_position=1,
)
# Check for complete paths
self.assertPathExists(
(interface1, cable1, frontport1, rearport1, cable2, interface2),
is_complete=True,
is_active=True
)
self.assertPathExists(
(interface2, cable2, rearport1, frontport1, cable1, interface1),
is_complete=True,
is_active=True
)
# Delete the PortMapping between frontport1 and rearport1
portmapping1.delete()
# Check that paths are no longer complete
self.assertPathExists(
(interface1, cable1, frontport1),
is_complete=False,
is_active=True
)
self.assertPathExists(
(interface2, cable2, rearport1),
is_complete=False,
is_active=True
)
def test_306_change_port_mapping_between_connected_ports(self):
"""
[IF1] --C1-- [FP1] [RP1] --C3-- [IF3]
[IF2] --C2-- [FP2] [RP3] --C4-- [IF4]
"""
interface1 = Interface.objects.create(device=self.device, name='Interface 1')
interface2 = Interface.objects.create(device=self.device, name='Interface 2')
interface3 = Interface.objects.create(device=self.device, name='Interface 3')
interface4 = Interface.objects.create(device=self.device, name='Interface 4')
frontport1 = FrontPort.objects.create(device=self.device, name='Front Port 1')
frontport2 = FrontPort.objects.create(device=self.device, name='Front Port 2')
rearport1 = RearPort.objects.create(device=self.device, name='Rear Port 1')
rearport2 = RearPort.objects.create(device=self.device, name='Rear Port 2')
cable1 = Cable(
a_terminations=[interface1],
b_terminations=[frontport1]
)
cable1.save()
cable2 = Cable(
a_terminations=[interface2],
b_terminations=[frontport2]
)
cable2.save()
cable3 = Cable(
a_terminations=[interface3],
b_terminations=[rearport1]
)
cable3.save()
cable4 = Cable(
a_terminations=[interface4],
b_terminations=[rearport2]
)
cable4.save()
portmapping1 = PortMapping.objects.create(
device=self.device,
front_port=frontport1,
front_port_position=1,
rear_port=rearport1,
rear_port_position=1,
)
# Verify expected initial paths
self.assertPathExists(
(interface1, cable1, frontport1, rearport1, cable3, interface3),
is_complete=True,
is_active=True
)
self.assertPathExists(
(interface3, cable3, rearport1, frontport1, cable1, interface1),
is_complete=True,
is_active=True
)
# Delete and replace the PortMapping to connect interface1 to interface4
portmapping1.delete()
portmapping2 = PortMapping.objects.create(
device=self.device,
front_port=frontport1,
front_port_position=1,
rear_port=rearport2,
rear_port_position=1,
)
# Verify expected new paths
self.assertPathExists(
(interface1, cable1, frontport1, rearport2, cable4, interface4),
is_complete=True,
is_active=True
)
self.assertPathExists(
(interface4, cable4, rearport2, frontport1, cable1, interface1),
is_complete=True,
is_active=True
)
# Delete and replace the PortMapping to connect interface2 to interface4
portmapping2.delete()
PortMapping.objects.create(
device=self.device,
front_port=frontport2,
front_port_position=1,
rear_port=rearport2,
rear_port_position=1,
)
# Verify expected new paths
self.assertPathExists(
(interface2, cable2, frontport2, rearport2, cable4, interface4),
is_complete=True,
is_active=True
)
self.assertPathExists(
(interface4, cable4, rearport2, frontport2, cable2, interface2),
is_complete=True,
is_active=True
)