mirror of
				https://github.com/netbox-community/netbox.git
				synced 2024-05-10 07:54:54 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			66 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import netaddr
 | |
| from django.core.exceptions import ValidationError
 | |
| from django.test import TestCase, override_settings
 | |
| 
 | |
| from ipam.constants import IPADDRESS_ROLE_VIP
 | |
| from ipam.models import IPAddress, Prefix, VRF
 | |
| 
 | |
| 
 | |
| class TestPrefix(TestCase):
 | |
| 
 | |
|     @override_settings(ENFORCE_GLOBAL_UNIQUE=False)
 | |
|     def test_duplicate_global(self):
 | |
|         Prefix.objects.create(prefix=netaddr.IPNetwork('192.0.2.0/24'))
 | |
|         duplicate_prefix = Prefix(prefix=netaddr.IPNetwork('192.0.2.0/24'))
 | |
|         self.assertIsNone(duplicate_prefix.clean())
 | |
| 
 | |
|     @override_settings(ENFORCE_GLOBAL_UNIQUE=True)
 | |
|     def test_duplicate_global_unique(self):
 | |
|         Prefix.objects.create(prefix=netaddr.IPNetwork('192.0.2.0/24'))
 | |
|         duplicate_prefix = Prefix(prefix=netaddr.IPNetwork('192.0.2.0/24'))
 | |
|         self.assertRaises(ValidationError, duplicate_prefix.clean)
 | |
| 
 | |
|     def test_duplicate_vrf(self):
 | |
|         vrf = VRF.objects.create(name='Test', rd='1:1', enforce_unique=False)
 | |
|         Prefix.objects.create(vrf=vrf, prefix=netaddr.IPNetwork('192.0.2.0/24'))
 | |
|         duplicate_prefix = Prefix(vrf=vrf, prefix=netaddr.IPNetwork('192.0.2.0/24'))
 | |
|         self.assertIsNone(duplicate_prefix.clean())
 | |
| 
 | |
|     def test_duplicate_vrf_unique(self):
 | |
|         vrf = VRF.objects.create(name='Test', rd='1:1', enforce_unique=True)
 | |
|         Prefix.objects.create(vrf=vrf, prefix=netaddr.IPNetwork('192.0.2.0/24'))
 | |
|         duplicate_prefix = Prefix(vrf=vrf, prefix=netaddr.IPNetwork('192.0.2.0/24'))
 | |
|         self.assertRaises(ValidationError, duplicate_prefix.clean)
 | |
| 
 | |
| 
 | |
| class TestIPAddress(TestCase):
 | |
| 
 | |
|     @override_settings(ENFORCE_GLOBAL_UNIQUE=False)
 | |
|     def test_duplicate_global(self):
 | |
|         IPAddress.objects.create(address=netaddr.IPNetwork('192.0.2.1/24'))
 | |
|         duplicate_ip = IPAddress(address=netaddr.IPNetwork('192.0.2.1/24'))
 | |
|         self.assertIsNone(duplicate_ip.clean())
 | |
| 
 | |
|     @override_settings(ENFORCE_GLOBAL_UNIQUE=True)
 | |
|     def test_duplicate_global_unique(self):
 | |
|         IPAddress.objects.create(address=netaddr.IPNetwork('192.0.2.1/24'))
 | |
|         duplicate_ip = IPAddress(address=netaddr.IPNetwork('192.0.2.1/24'))
 | |
|         self.assertRaises(ValidationError, duplicate_ip.clean)
 | |
| 
 | |
|     def test_duplicate_vrf(self):
 | |
|         vrf = VRF.objects.create(name='Test', rd='1:1', enforce_unique=False)
 | |
|         IPAddress.objects.create(vrf=vrf, address=netaddr.IPNetwork('192.0.2.1/24'))
 | |
|         duplicate_ip = IPAddress(vrf=vrf, address=netaddr.IPNetwork('192.0.2.1/24'))
 | |
|         self.assertIsNone(duplicate_ip.clean())
 | |
| 
 | |
|     def test_duplicate_vrf_unique(self):
 | |
|         vrf = VRF.objects.create(name='Test', rd='1:1', enforce_unique=True)
 | |
|         IPAddress.objects.create(vrf=vrf, address=netaddr.IPNetwork('192.0.2.1/24'))
 | |
|         duplicate_ip = IPAddress(vrf=vrf, address=netaddr.IPNetwork('192.0.2.1/24'))
 | |
|         self.assertRaises(ValidationError, duplicate_ip.clean)
 | |
| 
 | |
|     @override_settings(ENFORCE_GLOBAL_UNIQUE=True)
 | |
|     def test_duplicate_nonunique_role(self):
 | |
|         IPAddress.objects.create(address=netaddr.IPNetwork('192.0.2.1/24'), role=IPADDRESS_ROLE_VIP)
 | |
|         IPAddress.objects.create(address=netaddr.IPNetwork('192.0.2.1/24'), role=IPADDRESS_ROLE_VIP)
 |