|
|
@@ -1,5 +1,7 @@
|
|
|
import datetime
|
|
|
|
|
|
+from django.test import override_settings
|
|
|
+from django.urls import reverse
|
|
|
from netaddr import IPNetwork
|
|
|
|
|
|
from dcim.models import Device, DeviceRole, DeviceType, Manufacturer, Site
|
|
|
@@ -222,6 +224,21 @@ class AggregateTestCase(ViewTestCases.PrimaryObjectViewTestCase):
|
|
|
'description': 'New description',
|
|
|
}
|
|
|
|
|
|
+ @override_settings(EXEMPT_VIEW_PERMISSIONS=['*'])
|
|
|
+ def test_aggregate_prefixes(self):
|
|
|
+ rir = RIR.objects.first()
|
|
|
+ aggregate = Aggregate.objects.create(prefix=IPNetwork('192.168.0.0/16'), rir=rir)
|
|
|
+ prefixes = (
|
|
|
+ Prefix(prefix=IPNetwork('192.168.1.0/24')),
|
|
|
+ Prefix(prefix=IPNetwork('192.168.2.0/24')),
|
|
|
+ Prefix(prefix=IPNetwork('192.168.3.0/24')),
|
|
|
+ )
|
|
|
+ Prefix.objects.bulk_create(prefixes)
|
|
|
+ self.assertEqual(aggregate.get_child_prefixes().count(), 3)
|
|
|
+
|
|
|
+ url = reverse('ipam:aggregate_prefixes', kwargs={'pk': aggregate.pk})
|
|
|
+ self.assertHttpStatus(self.client.get(url), 200)
|
|
|
+
|
|
|
|
|
|
class RoleTestCase(ViewTestCases.OrganizationalObjectViewTestCase):
|
|
|
model = Role
|
|
|
@@ -319,6 +336,48 @@ class PrefixTestCase(ViewTestCases.PrimaryObjectViewTestCase):
|
|
|
'description': 'New description',
|
|
|
}
|
|
|
|
|
|
+ @override_settings(EXEMPT_VIEW_PERMISSIONS=['*'])
|
|
|
+ def test_prefix_prefixes(self):
|
|
|
+ prefixes = (
|
|
|
+ Prefix(prefix=IPNetwork('192.168.0.0/16')),
|
|
|
+ Prefix(prefix=IPNetwork('192.168.1.0/24')),
|
|
|
+ Prefix(prefix=IPNetwork('192.168.2.0/24')),
|
|
|
+ Prefix(prefix=IPNetwork('192.168.3.0/24')),
|
|
|
+ )
|
|
|
+ Prefix.objects.bulk_create(prefixes)
|
|
|
+ self.assertEqual(prefixes[0].get_child_prefixes().count(), 3)
|
|
|
+
|
|
|
+ url = reverse('ipam:prefix_prefixes', kwargs={'pk': prefixes[0].pk})
|
|
|
+ self.assertHttpStatus(self.client.get(url), 200)
|
|
|
+
|
|
|
+ @override_settings(EXEMPT_VIEW_PERMISSIONS=['*'])
|
|
|
+ def test_prefix_ipranges(self):
|
|
|
+ prefix = Prefix.objects.create(prefix=IPNetwork('192.168.0.0/16'))
|
|
|
+ ip_ranges = (
|
|
|
+ IPRange(start_address='192.168.0.1/24', end_address='192.168.0.100/24', size=99),
|
|
|
+ IPRange(start_address='192.168.1.1/24', end_address='192.168.1.100/24', size=99),
|
|
|
+ IPRange(start_address='192.168.2.1/24', end_address='192.168.2.100/24', size=99),
|
|
|
+ )
|
|
|
+ IPRange.objects.bulk_create(ip_ranges)
|
|
|
+ self.assertEqual(prefix.get_child_ranges().count(), 3)
|
|
|
+
|
|
|
+ url = reverse('ipam:prefix_ipranges', kwargs={'pk': prefix.pk})
|
|
|
+ self.assertHttpStatus(self.client.get(url), 200)
|
|
|
+
|
|
|
+ @override_settings(EXEMPT_VIEW_PERMISSIONS=['*'])
|
|
|
+ def test_prefix_ipaddresses(self):
|
|
|
+ prefix = Prefix.objects.create(prefix=IPNetwork('192.168.0.0/16'))
|
|
|
+ ip_addresses = (
|
|
|
+ IPAddress(address=IPNetwork('192.168.0.1/16')),
|
|
|
+ IPAddress(address=IPNetwork('192.168.0.2/16')),
|
|
|
+ IPAddress(address=IPNetwork('192.168.0.3/16')),
|
|
|
+ )
|
|
|
+ IPAddress.objects.bulk_create(ip_addresses)
|
|
|
+ self.assertEqual(prefix.get_child_ips().count(), 3)
|
|
|
+
|
|
|
+ url = reverse('ipam:prefix_ipaddresses', kwargs={'pk': prefix.pk})
|
|
|
+ self.assertHttpStatus(self.client.get(url), 200)
|
|
|
+
|
|
|
|
|
|
class IPRangeTestCase(ViewTestCases.PrimaryObjectViewTestCase):
|
|
|
model = IPRange
|
|
|
@@ -377,6 +436,24 @@ class IPRangeTestCase(ViewTestCases.PrimaryObjectViewTestCase):
|
|
|
'description': 'New description',
|
|
|
}
|
|
|
|
|
|
+ @override_settings(EXEMPT_VIEW_PERMISSIONS=['*'])
|
|
|
+ def test_iprange_ipaddresses(self):
|
|
|
+ iprange = IPRange.objects.create(
|
|
|
+ start_address=IPNetwork('192.168.0.1/24'),
|
|
|
+ end_address=IPNetwork('192.168.0.100/24'),
|
|
|
+ size=99
|
|
|
+ )
|
|
|
+ ip_addresses = (
|
|
|
+ IPAddress(address=IPNetwork('192.168.0.1/24')),
|
|
|
+ IPAddress(address=IPNetwork('192.168.0.2/24')),
|
|
|
+ IPAddress(address=IPNetwork('192.168.0.3/24')),
|
|
|
+ )
|
|
|
+ IPAddress.objects.bulk_create(ip_addresses)
|
|
|
+ self.assertEqual(iprange.get_child_ips().count(), 3)
|
|
|
+
|
|
|
+ url = reverse('ipam:iprange_ipaddresses', kwargs={'pk': iprange.pk})
|
|
|
+ self.assertHttpStatus(self.client.get(url), 200)
|
|
|
+
|
|
|
|
|
|
class IPAddressTestCase(ViewTestCases.PrimaryObjectViewTestCase):
|
|
|
model = IPAddress
|