|
@@ -3,7 +3,7 @@ from django.test import TestCase
|
|
|
from dcim.models import Device, DeviceRole, DeviceType, Interface, Location, Manufacturer, Rack, Region, Site, SiteGroup
|
|
from dcim.models import Device, DeviceRole, DeviceType, Interface, Location, Manufacturer, Rack, Region, Site, SiteGroup
|
|
|
from ipam.choices import *
|
|
from ipam.choices import *
|
|
|
from ipam.filtersets import *
|
|
from ipam.filtersets import *
|
|
|
-from ipam.models import Aggregate, IPAddress, Prefix, RIR, Role, RouteTarget, Service, VLAN, VLANGroup, VRF
|
|
|
|
|
|
|
+from ipam.models import *
|
|
|
from utilities.testing import ChangeLoggedFilterSetTests
|
|
from utilities.testing import ChangeLoggedFilterSetTests
|
|
|
from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualMachine, VMInterface
|
|
from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualMachine, VMInterface
|
|
|
from tenancy.models import Tenant, TenantGroup
|
|
from tenancy.models import Tenant, TenantGroup
|
|
@@ -524,6 +524,97 @@ class PrefixTestCase(TestCase, ChangeLoggedFilterSetTests):
|
|
|
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
|
|
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+class IPRangeTestCase(TestCase, ChangeLoggedFilterSetTests):
|
|
|
|
|
+ queryset = IPRange.objects.all()
|
|
|
|
|
+ filterset = IPRangeFilterSet
|
|
|
|
|
+
|
|
|
|
|
+ @classmethod
|
|
|
|
|
+ def setUpTestData(cls):
|
|
|
|
|
+
|
|
|
|
|
+ vrfs = (
|
|
|
|
|
+ VRF(name='VRF 1', rd='65000:100'),
|
|
|
|
|
+ VRF(name='VRF 2', rd='65000:200'),
|
|
|
|
|
+ VRF(name='VRF 3', rd='65000:300'),
|
|
|
|
|
+ )
|
|
|
|
|
+ VRF.objects.bulk_create(vrfs)
|
|
|
|
|
+
|
|
|
|
|
+ roles = (
|
|
|
|
|
+ Role(name='Role 1', slug='role-1'),
|
|
|
|
|
+ Role(name='Role 2', slug='role-2'),
|
|
|
|
|
+ Role(name='Role 3', slug='role-3'),
|
|
|
|
|
+ )
|
|
|
|
|
+ Role.objects.bulk_create(roles)
|
|
|
|
|
+
|
|
|
|
|
+ tenant_groups = (
|
|
|
|
|
+ TenantGroup(name='Tenant group 1', slug='tenant-group-1'),
|
|
|
|
|
+ TenantGroup(name='Tenant group 2', slug='tenant-group-2'),
|
|
|
|
|
+ TenantGroup(name='Tenant group 3', slug='tenant-group-3'),
|
|
|
|
|
+ )
|
|
|
|
|
+ for tenantgroup in tenant_groups:
|
|
|
|
|
+ tenantgroup.save()
|
|
|
|
|
+
|
|
|
|
|
+ tenants = (
|
|
|
|
|
+ Tenant(name='Tenant 1', slug='tenant-1', group=tenant_groups[0]),
|
|
|
|
|
+ Tenant(name='Tenant 2', slug='tenant-2', group=tenant_groups[1]),
|
|
|
|
|
+ Tenant(name='Tenant 3', slug='tenant-3', group=tenant_groups[2]),
|
|
|
|
|
+ )
|
|
|
|
|
+ Tenant.objects.bulk_create(tenants)
|
|
|
|
|
+
|
|
|
|
|
+ ip_ranges = (
|
|
|
|
|
+ IPRange(start_address='10.0.1.100/24', end_address='10.0.1.199/24', size=100, vrf=None, tenant=None, role=None, status=IPRangeStatusChoices.STATUS_ACTIVE),
|
|
|
|
|
+ IPRange(start_address='10.0.2.100/24', end_address='10.0.2.199/24', size=100, vrf=vrfs[0], tenant=tenants[0], role=roles[0], status=IPRangeStatusChoices.STATUS_ACTIVE),
|
|
|
|
|
+ IPRange(start_address='10.0.3.100/24', end_address='10.0.3.199/24', size=100, vrf=vrfs[1], tenant=tenants[1], role=roles[1], status=IPRangeStatusChoices.STATUS_DEPRECATED),
|
|
|
|
|
+ IPRange(start_address='10.0.4.100/24', end_address='10.0.4.199/24', size=100, vrf=vrfs[2], tenant=tenants[2], role=roles[2], status=IPRangeStatusChoices.STATUS_RESERVED),
|
|
|
|
|
+ IPRange(start_address='2001:db8:0:1::1/64', end_address='2001:db8:0:1::100/64', size=100, vrf=None, tenant=None, role=None, status=IPRangeStatusChoices.STATUS_ACTIVE),
|
|
|
|
|
+ IPRange(start_address='2001:db8:0:2::1/64', end_address='2001:db8:0:2::100/64', size=100, vrf=vrfs[0], tenant=tenants[0], role=roles[0], status=IPRangeStatusChoices.STATUS_ACTIVE),
|
|
|
|
|
+ IPRange(start_address='2001:db8:0:3::1/64', end_address='2001:db8:0:3::100/64', size=100, vrf=vrfs[1], tenant=tenants[1], role=roles[1], status=IPRangeStatusChoices.STATUS_DEPRECATED),
|
|
|
|
|
+ IPRange(start_address='2001:db8:0:4::1/64', end_address='2001:db8:0:4::100/64', size=100, vrf=vrfs[2], tenant=tenants[2], role=roles[2], status=IPRangeStatusChoices.STATUS_RESERVED),
|
|
|
|
|
+ )
|
|
|
|
|
+ IPRange.objects.bulk_create(ip_ranges)
|
|
|
|
|
+
|
|
|
|
|
+ def test_family(self):
|
|
|
|
|
+ params = {'family': '6'}
|
|
|
|
|
+ self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
|
|
|
|
|
+
|
|
|
|
|
+ def test_contains(self):
|
|
|
|
|
+ params = {'contains': '10.0.1.150/24'}
|
|
|
|
|
+ self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1)
|
|
|
|
|
+ params = {'contains': '2001:db8:0:1::50/64'}
|
|
|
|
|
+ self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1)
|
|
|
|
|
+
|
|
|
|
|
+ def test_vrf(self):
|
|
|
|
|
+ vrfs = VRF.objects.all()[:2]
|
|
|
|
|
+ params = {'vrf_id': [vrfs[0].pk, vrfs[1].pk]}
|
|
|
|
|
+ self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
|
|
|
|
|
+ params = {'vrf': [vrfs[0].rd, vrfs[1].rd]}
|
|
|
|
|
+ self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
|
|
|
|
|
+
|
|
|
|
|
+ def test_role(self):
|
|
|
|
|
+ roles = Role.objects.all()[:2]
|
|
|
|
|
+ params = {'role_id': [roles[0].pk, roles[1].pk]}
|
|
|
|
|
+ self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
|
|
|
|
|
+ params = {'role': [roles[0].slug, roles[1].slug]}
|
|
|
|
|
+ self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
|
|
|
|
|
+
|
|
|
|
|
+ def test_status(self):
|
|
|
|
|
+ params = {'status': [PrefixStatusChoices.STATUS_DEPRECATED, PrefixStatusChoices.STATUS_RESERVED]}
|
|
|
|
|
+ self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
|
|
|
|
|
+
|
|
|
|
|
+ def test_tenant(self):
|
|
|
|
|
+ tenants = Tenant.objects.all()[:2]
|
|
|
|
|
+ params = {'tenant_id': [tenants[0].pk, tenants[1].pk]}
|
|
|
|
|
+ self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
|
|
|
|
|
+ params = {'tenant': [tenants[0].slug, tenants[1].slug]}
|
|
|
|
|
+ self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
|
|
|
|
|
+
|
|
|
|
|
+ def test_tenant_group(self):
|
|
|
|
|
+ tenant_groups = TenantGroup.objects.all()[:2]
|
|
|
|
|
+ params = {'tenant_group_id': [tenant_groups[0].pk, tenant_groups[1].pk]}
|
|
|
|
|
+ self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
|
|
|
|
|
+ params = {'tenant_group': [tenant_groups[0].slug, tenant_groups[1].slug]}
|
|
|
|
|
+ self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
class IPAddressTestCase(TestCase, ChangeLoggedFilterSetTests):
|
|
class IPAddressTestCase(TestCase, ChangeLoggedFilterSetTests):
|
|
|
queryset = IPAddress.objects.all()
|
|
queryset = IPAddress.objects.all()
|
|
|
filterset = IPAddressFilterSet
|
|
filterset = IPAddressFilterSet
|