Start updating tests

This commit is contained in:
jeremystretch 2022-05-03 16:54:09 -04:00
parent f0b722b0a5
commit e129ae50f0

View File

@ -1,4 +1,3 @@
from django.contrib.contenttypes.models import ContentType
from django.test import TestCase
from circuits.models import *
@ -33,40 +32,30 @@ class CablePathTestCase(TestCase):
circuit_type = CircuitType.objects.create(name='Circuit Type', slug='circuit-type')
cls.circuit = Circuit.objects.create(provider=provider, type=circuit_type, cid='Circuit 1')
def assertPathExists(self, origin, destination, path=None, is_active=None, msg=None):
def assertPathExists(self, nodes, is_active=None):
"""
Assert that a CablePath from origin to destination with a specific intermediate path exists.
:param origin: Originating endpoint
:param destination: Terminating endpoint, or None
:param path: Sequence of objects comprising the intermediate path (optional)
:param nodes: Iterable of steps, with each step being either a single node or a list of nodes
:param is_active: Boolean indicating whether the end-to-end path is complete and active (optional)
:param msg: Custom failure message (optional)
:return: The matching CablePath (if any)
"""
path = []
for step in nodes:
if type(step) is list:
path.append([object_to_path_node(node) for node in step])
else:
path.append([object_to_path_node(step)])
kwargs = {
'origin_type': ContentType.objects.get_for_model(origin),
'origin_id': origin.pk,
'path': path
}
if destination is not None:
kwargs['destination_type'] = ContentType.objects.get_for_model(destination)
kwargs['destination_id'] = destination.pk
else:
kwargs['destination_type__isnull'] = True
kwargs['destination_id__isnull'] = True
if path is not None:
kwargs['path'] = [object_to_path_node(obj) for obj in path]
if is_active is not None:
kwargs['is_active'] = is_active
if msg is None:
if destination is not None:
msg = f"Missing path from {origin} to {destination}"
else:
msg = f"Missing partial path originating from {origin}"
cablepath = CablePath.objects.filter(**kwargs).first()
self.assertIsNotNone(cablepath, msg=msg)
self.assertIsNotNone(cablepath, msg='CablePath not found')
return cablepath
@ -101,18 +90,20 @@ class CablePathTestCase(TestCase):
interface2 = Interface.objects.create(device=self.device, name='Interface 2')
# Create cable 1
cable1 = Cable(termination_a=interface1, termination_b=interface2)
cable1 = Cable(
terminations=[
CableTermination(cable_end='A', termination=interface1),
CableTermination(cable_end='B', termination=interface2),
]
)
cable1.save()
path1 = self.assertPathExists(
origin=interface1,
destination=interface2,
path=(cable1,),
(interface1, cable1, interface2),
is_active=True
)
path2 = self.assertPathExists(
origin=interface2,
destination=interface1,
path=(cable1,),
(interface2, cable1, interface1),
is_active=True
)
self.assertEqual(CablePath.objects.count(), 2)
@ -135,18 +126,20 @@ class CablePathTestCase(TestCase):
consoleserverport1 = ConsoleServerPort.objects.create(device=self.device, name='Console Server Port 1')
# Create cable 1
cable1 = Cable(termination_a=consoleport1, termination_b=consoleserverport1)
cable1 = Cable(
terminations=[
CableTermination(cable_end='A', termination=consoleport1),
CableTermination(cable_end='B', termination=consoleserverport1),
]
)
cable1.save()
path1 = self.assertPathExists(
origin=consoleport1,
destination=consoleserverport1,
path=(cable1,),
(consoleport1, cable1, consoleserverport1),
is_active=True
)
path2 = self.assertPathExists(
origin=consoleserverport1,
destination=consoleport1,
path=(cable1,),
(consoleserverport1, cable1, consoleport1),
is_active=True
)
self.assertEqual(CablePath.objects.count(), 2)
@ -169,18 +162,20 @@ class CablePathTestCase(TestCase):
poweroutlet1 = PowerOutlet.objects.create(device=self.device, name='Power Outlet 1')
# Create cable 1
cable1 = Cable(termination_a=powerport1, termination_b=poweroutlet1)
cable1 = Cable(
terminations=[
CableTermination(cable_end='A', termination=powerport1),
CableTermination(cable_end='B', termination=poweroutlet1),
]
)
cable1.save()
path1 = self.assertPathExists(
origin=powerport1,
destination=poweroutlet1,
path=(cable1,),
(powerport1, cable1, poweroutlet1),
is_active=True
)
path2 = self.assertPathExists(
origin=poweroutlet1,
destination=powerport1,
path=(cable1,),
(poweroutlet1, cable1, powerport1),
is_active=True
)
self.assertEqual(CablePath.objects.count(), 2)
@ -203,18 +198,20 @@ class CablePathTestCase(TestCase):
powerfeed1 = PowerFeed.objects.create(power_panel=self.powerpanel, name='Power Feed 1')
# Create cable 1
cable1 = Cable(termination_a=powerport1, termination_b=powerfeed1)
cable1 = Cable(
terminations=[
CableTermination(cable_end='A', termination=powerport1),
CableTermination(cable_end='B', termination=powerfeed1),
]
)
cable1.save()
path1 = self.assertPathExists(
origin=powerport1,
destination=powerfeed1,
path=(cable1,),
(powerport1, cable1, powerfeed1),
is_active=True
)
path2 = self.assertPathExists(
origin=powerfeed1,
destination=powerport1,
path=(cable1,),
(powerfeed1, cable1, powerport1),
is_active=True
)
self.assertEqual(CablePath.objects.count(), 2)
@ -229,6 +226,51 @@ class CablePathTestCase(TestCase):
# Check that all CablePaths have been deleted
self.assertEqual(CablePath.objects.count(), 0)
def test_120_multi_term_to_multi_term(self):
"""
[IF1] --C1-- [IF3]
[IF2] [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')
# Create cable 1
cable1 = Cable(
terminations=[
CableTermination(cable_end='A', termination=interface1),
CableTermination(cable_end='A', termination=interface2),
CableTermination(cable_end='B', termination=interface3),
CableTermination(cable_end='B', termination=interface4),
]
)
cable1.save()
path1 = self.assertPathExists(
((interface1, interface2), cable1, (interface3, interface4)),
is_active=True
)
path2 = self.assertPathExists(
((interface3, interface4), cable1, (interface1, interface2)),
is_active=True
)
self.assertEqual(CablePath.objects.count(), 2)
interface1.refresh_from_db()
interface2.refresh_from_db()
interface3.refresh_from_db()
interface4.refresh_from_db()
self.assertPathIsSet(interface1, path1)
self.assertPathIsSet(interface2, path1)
self.assertPathIsSet(interface3, path2)
self.assertPathIsSet(interface4, path2)
# Delete cable 1
cable1.delete()
# Check that all CablePaths have been deleted
self.assertEqual(CablePath.objects.count(), 0)
def test_201_single_path_via_pass_through(self):
"""
[IF1] --C1-- [FP1] [RP1] --C2-- [IF2]