2
0
Эх сурвалжийг харах

#4034 - Create tests for addresses

Dan Sheppard 6 жил өмнө
parent
commit
22228b58f1

+ 162 - 14
netbox/ipam/tests/test_ordering.py

@@ -1,12 +1,20 @@
 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
 
 import netaddr
 
 
 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):
         prefixobjects = []
@@ -86,10 +94,7 @@ class PrefixOrderingTestCase(TestCase):
 
     def test_prefix_vrf_ordering(self):
         # Setup VRFs
-        vrfa = VRF(name='VRF A')
-        vrfb = VRF(name='VRF B')
-        vrfs = [vrfa, vrfb]
-        VRF.objects.bulk_create(vrfs)
+        vrfa, vrfb, vrfc = self.vrfs
 
         # Setup Prefixes
         prefixes = (
@@ -139,10 +144,8 @@ class PrefixOrderingTestCase(TestCase):
         self._compare_prefix(Prefix.objects.all(), prefixes)
 
     def test_prefix_complex_ordering(self):
-        # Setup VRF's
-        vrf = VRF(name='VRF A')
-        vrfs = [vrf]
-        VRF.objects.bulk_create(vrfs)
+        # Setup VRFs
+        vrfa, vrfb, vrfc = self.vrfs
 
         # Setup Prefixes
         prefixes = [
@@ -150,14 +153,159 @@ class PrefixOrderingTestCase(TestCase):
             (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('192.168.0.0/16')),
-            (PrefixStatusChoices.STATUS_ACTIVE, vrf, netaddr.IPNetwork('10.0.0.0/24')),
-            (PrefixStatusChoices.STATUS_CONTAINER, vrf, netaddr.IPNetwork('10.0.1.0/24')),
-            (PrefixStatusChoices.STATUS_ACTIVE, vrf, netaddr.IPNetwork('10.0.1.0/25')),
-            (PrefixStatusChoices.STATUS_ACTIVE, vrf, 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.0.0.0/24')),
+            (PrefixStatusChoices.STATUS_CONTAINER, vrfa, netaddr.IPNetwork('10.0.1.0/24')),
+            (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.1.0/25')),
+            (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.0.0/24')),
+            (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.1.0/24'))
         ]
         Prefix.objects.bulk_create(self._create_prefix(prefixes))
 
         # Test
         qsprefixes, compprefixes = self._compare_complex(Prefix.objects.all(), prefixes)
         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)