mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
* Move L2VPN and L2VPNTermination models from ipam to vpn * Move L2VPN resources from ipam to vpn * Extend migration to update content types * Misc cleanup
80 lines
2.9 KiB
Python
80 lines
2.9 KiB
Python
from django.core.exceptions import ValidationError
|
|
from django.test import TestCase
|
|
|
|
from dcim.models import Interface, Device, DeviceRole, DeviceType, Manufacturer, Site
|
|
from ipam.models import VLAN
|
|
from vpn.models import *
|
|
|
|
|
|
class TestL2VPNTermination(TestCase):
|
|
|
|
@classmethod
|
|
def setUpTestData(cls):
|
|
|
|
site = Site.objects.create(name='Site 1')
|
|
manufacturer = Manufacturer.objects.create(name='Manufacturer 1')
|
|
device_type = DeviceType.objects.create(model='Device Type 1', manufacturer=manufacturer)
|
|
role = DeviceRole.objects.create(name='Switch')
|
|
device = Device.objects.create(
|
|
name='Device 1',
|
|
site=site,
|
|
device_type=device_type,
|
|
role=role,
|
|
status='active'
|
|
)
|
|
|
|
interfaces = (
|
|
Interface(name='Interface 1', device=device, type='1000baset'),
|
|
Interface(name='Interface 2', device=device, type='1000baset'),
|
|
Interface(name='Interface 3', device=device, type='1000baset'),
|
|
Interface(name='Interface 4', device=device, type='1000baset'),
|
|
Interface(name='Interface 5', device=device, type='1000baset'),
|
|
)
|
|
|
|
Interface.objects.bulk_create(interfaces)
|
|
|
|
vlans = (
|
|
VLAN(name='VLAN 1', vid=651),
|
|
VLAN(name='VLAN 2', vid=652),
|
|
VLAN(name='VLAN 3', vid=653),
|
|
VLAN(name='VLAN 4', vid=654),
|
|
VLAN(name='VLAN 5', vid=655),
|
|
VLAN(name='VLAN 6', vid=656),
|
|
VLAN(name='VLAN 7', vid=657)
|
|
)
|
|
|
|
VLAN.objects.bulk_create(vlans)
|
|
|
|
l2vpns = (
|
|
L2VPN(name='L2VPN 1', slug='l2vpn-1', type='vxlan', identifier=650001),
|
|
L2VPN(name='L2VPN 2', slug='l2vpn-2', type='vpws', identifier=650002),
|
|
L2VPN(name='L2VPN 3', slug='l2vpn-3', type='vpls'), # No RD
|
|
)
|
|
L2VPN.objects.bulk_create(l2vpns)
|
|
|
|
l2vpnterminations = (
|
|
L2VPNTermination(l2vpn=l2vpns[0], assigned_object=vlans[0]),
|
|
L2VPNTermination(l2vpn=l2vpns[0], assigned_object=vlans[1]),
|
|
L2VPNTermination(l2vpn=l2vpns[0], assigned_object=vlans[2])
|
|
)
|
|
|
|
L2VPNTermination.objects.bulk_create(l2vpnterminations)
|
|
|
|
def test_duplicate_interface_terminations(self):
|
|
device = Device.objects.first()
|
|
interface = Interface.objects.filter(device=device).first()
|
|
l2vpn = L2VPN.objects.first()
|
|
|
|
L2VPNTermination.objects.create(l2vpn=l2vpn, assigned_object=interface)
|
|
duplicate = L2VPNTermination(l2vpn=l2vpn, assigned_object=interface)
|
|
|
|
self.assertRaises(ValidationError, duplicate.clean)
|
|
|
|
def test_duplicate_vlan_terminations(self):
|
|
vlan = Interface.objects.first()
|
|
l2vpn = L2VPN.objects.first()
|
|
|
|
L2VPNTermination.objects.create(l2vpn=l2vpn, assigned_object=vlan)
|
|
duplicate = L2VPNTermination(l2vpn=l2vpn, assigned_object=vlan)
|
|
self.assertRaises(ValidationError, duplicate.clean)
|