#4034 - Create tests for addresses

This commit is contained in:
Dan Sheppard 2020-01-29 12:52:48 -06:00
parent 084a68f6d1
commit 22228b58f1

View File

@ -1,12 +1,20 @@
from django.test import TestCase from django.test import TestCase
from ipam.choices import IPAddressRoleChoices, PrefixStatusChoices from ipam.choices import IPAddressStatusChoices, PrefixStatusChoices
from ipam.models import Aggregate, IPAddress, Prefix, RIR, VLAN, VLANGroup, VRF from ipam.models import Aggregate, IPAddress, Prefix, RIR, VLAN, VLANGroup, VRF
import netaddr import netaddr
class PrefixOrderingTestCase(TestCase): class PrefixOrderingTestCase(TestCase):
vrfs = None
def setUp(self):
vrfa = VRF(name="VRF A")
vrfb = VRF(name="VRF B")
vrfc = VRF(name="VRF C")
VRF.objects.bulk_create([vrfa, vrfb, vrfc])
self.vrfs = (vrfa, vrfb, vrfc)
def _create_prefix(self, prefixes): def _create_prefix(self, prefixes):
prefixobjects = [] prefixobjects = []
@ -86,10 +94,7 @@ class PrefixOrderingTestCase(TestCase):
def test_prefix_vrf_ordering(self): def test_prefix_vrf_ordering(self):
# Setup VRFs # Setup VRFs
vrfa = VRF(name='VRF A') vrfa, vrfb, vrfc = self.vrfs
vrfb = VRF(name='VRF B')
vrfs = [vrfa, vrfb]
VRF.objects.bulk_create(vrfs)
# Setup Prefixes # Setup Prefixes
prefixes = ( prefixes = (
@ -139,10 +144,8 @@ class PrefixOrderingTestCase(TestCase):
self._compare_prefix(Prefix.objects.all(), prefixes) self._compare_prefix(Prefix.objects.all(), prefixes)
def test_prefix_complex_ordering(self): def test_prefix_complex_ordering(self):
# Setup VRF's # Setup VRFs
vrf = VRF(name='VRF A') vrfa, vrfb, vrfc = self.vrfs
vrfs = [vrf]
VRF.objects.bulk_create(vrfs)
# Setup Prefixes # Setup Prefixes
prefixes = [ prefixes = [
@ -150,14 +153,159 @@ class PrefixOrderingTestCase(TestCase):
(PrefixStatusChoices.STATUS_CONTAINER, None, netaddr.IPNetwork('10.0.0.0/16')), (PrefixStatusChoices.STATUS_CONTAINER, None, netaddr.IPNetwork('10.0.0.0/16')),
(PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.1.0.0/16')), (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.1.0.0/16')),
(PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.0.0/16')), (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.0.0/16')),
(PrefixStatusChoices.STATUS_ACTIVE, vrf, netaddr.IPNetwork('10.0.0.0/24')), (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.0.0/24')),
(PrefixStatusChoices.STATUS_CONTAINER, vrf, netaddr.IPNetwork('10.0.1.0/24')), (PrefixStatusChoices.STATUS_CONTAINER, vrfa, netaddr.IPNetwork('10.0.1.0/24')),
(PrefixStatusChoices.STATUS_ACTIVE, vrf, netaddr.IPNetwork('10.0.1.0/25')), (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.1.0/25')),
(PrefixStatusChoices.STATUS_ACTIVE, vrf, netaddr.IPNetwork('10.1.0.0/24')), (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.0.0/24')),
(PrefixStatusChoices.STATUS_ACTIVE, vrf, netaddr.IPNetwork('10.1.1.0/24')) (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.1.0/24'))
] ]
Prefix.objects.bulk_create(self._create_prefix(prefixes)) Prefix.objects.bulk_create(self._create_prefix(prefixes))
# Test # Test
qsprefixes, compprefixes = self._compare_complex(Prefix.objects.all(), prefixes) qsprefixes, compprefixes = self._compare_complex(Prefix.objects.all(), prefixes)
self.assertEquals(qsprefixes, compprefixes) self.assertEquals(qsprefixes, compprefixes)
class IPAddressOrderingTestCase(TestCase):
vrfs = None
def setUp(self):
vrfa = VRF(name="VRF A")
vrfb = VRF(name="VRF B")
vrfc = VRF(name="VRF C")
VRF.objects.bulk_create([vrfa, vrfb, vrfc])
self.vrfs = (vrfa, vrfb, vrfc)
def _create_address(self, addresses):
addressobjects = []
for addr in addresses:
status, vrf, address = addr
family = 4
if not netaddr.valid_ipv4(address):
family = 6
addressobj = IPAddress(address=address, vrf=vrf, status=status, family=family)
addressobjects.append(addressobj)
return addressobjects
def _compare_address(self, queryset, addresses):
for i, obj in enumerate(queryset):
status, vrf, address = addresses[i]
self.assertEqual((obj.vrf, obj.address), (vrf, address))
def _compare_complex(self, queryset, addresses):
qsaddress, regaddress = [], []
for i, obj in enumerate(queryset):
qsaddress.append(obj.address)
for addr in addresses:
regaddress.append(addr[2])
return (qsaddress, regaddress)
def test_address_ordering(self):
# Setup Addresses
addresses = (
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.0.0.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.0.1.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.0.2.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.0.3.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.0.4.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.1.0.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.1.1.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.1.2.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.1.3.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.1.4.0/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.2.0.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.2.1.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.2.2.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.2.3.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.2.4.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.16.0.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.16.1.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.16.2.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.16.3.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.16.4.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.17.0.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.17.1.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.17.2.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.17.3.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.17.4.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.0.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.1.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.2.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.3.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.4.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.5.1/24'))
)
IPAddress.objects.bulk_create(self._create_address(addresses))
# Test
self._compare_address(IPAddress.objects.all(), addresses)
def test_address_vrf_ordering(self):
# Setup VRFs
vrfa, vrfb, vrfc = self.vrfs
# Setup Addresses
addresses = (
(IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.0.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.1.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.2.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.3.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.4.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.0.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.1.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.2.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.3.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.4.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.2.0.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.2.1.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.2.2.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.2.3.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.2.4.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.16.0.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.16.1.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.16.2.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.16.3.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.16.4.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.17.0.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.17.1.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.17.2.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.17.3.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.17.4.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.0.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.1.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.2.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.3.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.4.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.5.1/24')),
)
IPAddress.objects.bulk_create(self._create_address(addresses))
# Test
self._compare_address(IPAddress.objects.all(), addresses)
def test_address_complex_ordering(self):
# Setup VRFs
vrfa, vrfb, vrfc = self.vrfs
# Setup addresses
addresses = [
(IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.0.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.1.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.1.1/25')),
(IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.0.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.1.1/24')),
(IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.0.1/24')),
]
IPAddress.objects.bulk_create(self._create_address(addresses))
# Test
qsaddresses, compaddresses = self._compare_complex(IPAddress.objects.all(), addresses)
self.assertEquals(qsaddresses, compaddresses)