|
|
@@ -5,18 +5,19 @@ from django.urls import reverse
|
|
|
|
|
|
from dcim.choices import *
|
|
|
from dcim.constants import *
|
|
|
-from dcim.models import (
|
|
|
- Cable, ConsolePortTemplate, ConsoleServerPortTemplate, Device, DeviceBayTemplate, DeviceRole, DeviceType,
|
|
|
- FrontPortTemplate, Interface, InterfaceTemplate, InventoryItem, Manufacturer, Platform, PowerPortTemplate,
|
|
|
- PowerOutletTemplate, Rack, RackGroup, RackReservation, RackRole, RearPortTemplate, Site, Region, VirtualChassis,
|
|
|
-)
|
|
|
+from dcim.models import *
|
|
|
from utilities.testing import create_test_user
|
|
|
|
|
|
|
|
|
class RegionTestCase(TestCase):
|
|
|
|
|
|
def setUp(self):
|
|
|
- user = create_test_user(permissions=['dcim.view_region'])
|
|
|
+ user = create_test_user(
|
|
|
+ permissions=[
|
|
|
+ 'dcim.view_region',
|
|
|
+ 'dcim.add_region',
|
|
|
+ ]
|
|
|
+ )
|
|
|
self.client = Client()
|
|
|
self.client.force_login(user)
|
|
|
|
|
|
@@ -31,11 +32,30 @@ class RegionTestCase(TestCase):
|
|
|
response = self.client.get(url)
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
|
|
+ def test_region_import(self):
|
|
|
+
|
|
|
+ csv_data = (
|
|
|
+ "name,slug",
|
|
|
+ "Region 4,region-4",
|
|
|
+ "Region 5,region-5",
|
|
|
+ "Region 6,region-6",
|
|
|
+ )
|
|
|
+
|
|
|
+ response = self.client.post(reverse('dcim:region_import'), {'csv': '\n'.join(csv_data)})
|
|
|
+
|
|
|
+ self.assertEqual(response.status_code, 200)
|
|
|
+ self.assertEqual(Region.objects.count(), 6)
|
|
|
+
|
|
|
|
|
|
class SiteTestCase(TestCase):
|
|
|
|
|
|
def setUp(self):
|
|
|
- user = create_test_user(permissions=['dcim.view_site'])
|
|
|
+ user = create_test_user(
|
|
|
+ permissions=[
|
|
|
+ 'dcim.view_site',
|
|
|
+ 'dcim.add_site',
|
|
|
+ ]
|
|
|
+ )
|
|
|
self.client = Client()
|
|
|
self.client.force_login(user)
|
|
|
|
|
|
@@ -64,11 +84,30 @@ class SiteTestCase(TestCase):
|
|
|
response = self.client.get(site.get_absolute_url())
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
|
|
+ def test_site_import(self):
|
|
|
+
|
|
|
+ csv_data = (
|
|
|
+ "name,slug",
|
|
|
+ "Site 4,site-4",
|
|
|
+ "Site 5,site-5",
|
|
|
+ "Site 6,site-6",
|
|
|
+ )
|
|
|
+
|
|
|
+ response = self.client.post(reverse('dcim:site_import'), {'csv': '\n'.join(csv_data)})
|
|
|
+
|
|
|
+ self.assertEqual(response.status_code, 200)
|
|
|
+ self.assertEqual(Site.objects.count(), 6)
|
|
|
+
|
|
|
|
|
|
class RackGroupTestCase(TestCase):
|
|
|
|
|
|
def setUp(self):
|
|
|
- user = create_test_user(permissions=['dcim.view_rackgroup'])
|
|
|
+ user = create_test_user(
|
|
|
+ permissions=[
|
|
|
+ 'dcim.view_rackgroup',
|
|
|
+ 'dcim.add_rackgroup',
|
|
|
+ ]
|
|
|
+ )
|
|
|
self.client = Client()
|
|
|
self.client.force_login(user)
|
|
|
|
|
|
@@ -88,11 +127,30 @@ class RackGroupTestCase(TestCase):
|
|
|
response = self.client.get(url)
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
|
|
+ def test_rackgroup_import(self):
|
|
|
+
|
|
|
+ csv_data = (
|
|
|
+ "site,name,slug",
|
|
|
+ "Site 1,Rack Group 4,rack-group-4",
|
|
|
+ "Site 1,Rack Group 5,rack-group-5",
|
|
|
+ "Site 1,Rack Group 6,rack-group-6",
|
|
|
+ )
|
|
|
+
|
|
|
+ response = self.client.post(reverse('dcim:rackgroup_import'), {'csv': '\n'.join(csv_data)})
|
|
|
+
|
|
|
+ self.assertEqual(response.status_code, 200)
|
|
|
+ self.assertEqual(RackGroup.objects.count(), 6)
|
|
|
+
|
|
|
|
|
|
class RackRoleTestCase(TestCase):
|
|
|
|
|
|
def setUp(self):
|
|
|
- user = create_test_user(permissions=['dcim.view_rackrole'])
|
|
|
+ user = create_test_user(
|
|
|
+ permissions=[
|
|
|
+ 'dcim.view_rackrole',
|
|
|
+ 'dcim.add_rackrole',
|
|
|
+ ]
|
|
|
+ )
|
|
|
self.client = Client()
|
|
|
self.client.force_login(user)
|
|
|
|
|
|
@@ -109,6 +167,20 @@ class RackRoleTestCase(TestCase):
|
|
|
response = self.client.get(url)
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
|
|
+ def test_rackrole_import(self):
|
|
|
+
|
|
|
+ csv_data = (
|
|
|
+ "name,slug,color",
|
|
|
+ "Rack Role 4,rack-role-4,ff0000",
|
|
|
+ "Rack Role 5,rack-role-5,00ff00",
|
|
|
+ "Rack Role 6,rack-role-6,0000ff",
|
|
|
+ )
|
|
|
+
|
|
|
+ response = self.client.post(reverse('dcim:rackrole_import'), {'csv': '\n'.join(csv_data)})
|
|
|
+
|
|
|
+ self.assertEqual(response.status_code, 200)
|
|
|
+ self.assertEqual(RackRole.objects.count(), 6)
|
|
|
+
|
|
|
|
|
|
class RackReservationTestCase(TestCase):
|
|
|
|
|
|
@@ -140,7 +212,12 @@ class RackReservationTestCase(TestCase):
|
|
|
class RackTestCase(TestCase):
|
|
|
|
|
|
def setUp(self):
|
|
|
- user = create_test_user(permissions=['dcim.view_rack'])
|
|
|
+ user = create_test_user(
|
|
|
+ permissions=[
|
|
|
+ 'dcim.view_rack',
|
|
|
+ 'dcim.add_rack',
|
|
|
+ ]
|
|
|
+ )
|
|
|
self.client = Client()
|
|
|
self.client.force_login(user)
|
|
|
|
|
|
@@ -169,11 +246,30 @@ class RackTestCase(TestCase):
|
|
|
response = self.client.get(rack.get_absolute_url())
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
|
|
+ def test_rack_import(self):
|
|
|
+
|
|
|
+ csv_data = (
|
|
|
+ "site,name,width,u_height",
|
|
|
+ "Site 1,Rack 4,19,42",
|
|
|
+ "Site 1,Rack 5,19,42",
|
|
|
+ "Site 1,Rack 6,19,42",
|
|
|
+ )
|
|
|
+
|
|
|
+ response = self.client.post(reverse('dcim:rack_import'), {'csv': '\n'.join(csv_data)})
|
|
|
+
|
|
|
+ self.assertEqual(response.status_code, 200)
|
|
|
+ self.assertEqual(Rack.objects.count(), 6)
|
|
|
+
|
|
|
|
|
|
class ManufacturerTypeTestCase(TestCase):
|
|
|
|
|
|
def setUp(self):
|
|
|
- user = create_test_user(permissions=['dcim.view_manufacturer'])
|
|
|
+ user = create_test_user(
|
|
|
+ permissions=[
|
|
|
+ 'dcim.view_manufacturer',
|
|
|
+ 'dcim.add_manufacturer',
|
|
|
+ ]
|
|
|
+ )
|
|
|
self.client = Client()
|
|
|
self.client.force_login(user)
|
|
|
|
|
|
@@ -190,6 +286,20 @@ class ManufacturerTypeTestCase(TestCase):
|
|
|
response = self.client.get(url)
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
|
|
+ def test_manufacturer_import(self):
|
|
|
+
|
|
|
+ csv_data = (
|
|
|
+ "name,slug",
|
|
|
+ "Manufacturer 4,manufacturer-4",
|
|
|
+ "Manufacturer 5,manufacturer-5",
|
|
|
+ "Manufacturer 6,manufacturer-6",
|
|
|
+ )
|
|
|
+
|
|
|
+ response = self.client.post(reverse('dcim:manufacturer_import'), {'csv': '\n'.join(csv_data)})
|
|
|
+
|
|
|
+ self.assertEqual(response.status_code, 200)
|
|
|
+ self.assertEqual(Manufacturer.objects.count(), 6)
|
|
|
+
|
|
|
|
|
|
class DeviceTypeTestCase(TestCase):
|
|
|
|
|
|
@@ -369,7 +479,12 @@ device-bays:
|
|
|
class DeviceRoleTestCase(TestCase):
|
|
|
|
|
|
def setUp(self):
|
|
|
- user = create_test_user(permissions=['dcim.view_devicerole'])
|
|
|
+ user = create_test_user(
|
|
|
+ permissions=[
|
|
|
+ 'dcim.view_devicerole',
|
|
|
+ 'dcim.add_devicerole',
|
|
|
+ ]
|
|
|
+ )
|
|
|
self.client = Client()
|
|
|
self.client.force_login(user)
|
|
|
|
|
|
@@ -386,11 +501,30 @@ class DeviceRoleTestCase(TestCase):
|
|
|
response = self.client.get(url)
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
|
|
+ def test_devicerole_import(self):
|
|
|
+
|
|
|
+ csv_data = (
|
|
|
+ "name,slug,color",
|
|
|
+ "Device Role 4,device-role-4,ff0000",
|
|
|
+ "Device Role 5,device-role-5,00ff00",
|
|
|
+ "Device Role 6,device-role-6,0000ff",
|
|
|
+ )
|
|
|
+
|
|
|
+ response = self.client.post(reverse('dcim:devicerole_import'), {'csv': '\n'.join(csv_data)})
|
|
|
+
|
|
|
+ self.assertEqual(response.status_code, 200)
|
|
|
+ self.assertEqual(DeviceRole.objects.count(), 6)
|
|
|
+
|
|
|
|
|
|
class PlatformTestCase(TestCase):
|
|
|
|
|
|
def setUp(self):
|
|
|
- user = create_test_user(permissions=['dcim.view_platform'])
|
|
|
+ user = create_test_user(
|
|
|
+ permissions=[
|
|
|
+ 'dcim.view_platform',
|
|
|
+ 'dcim.add_platform',
|
|
|
+ ]
|
|
|
+ )
|
|
|
self.client = Client()
|
|
|
self.client.force_login(user)
|
|
|
|
|
|
@@ -407,11 +541,30 @@ class PlatformTestCase(TestCase):
|
|
|
response = self.client.get(url)
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
|
|
+ def test_platform_import(self):
|
|
|
+
|
|
|
+ csv_data = (
|
|
|
+ "name,slug",
|
|
|
+ "Platform 4,platform-4",
|
|
|
+ "Platform 5,platform-5",
|
|
|
+ "Platform 6,platform-6",
|
|
|
+ )
|
|
|
+
|
|
|
+ response = self.client.post(reverse('dcim:platform_import'), {'csv': '\n'.join(csv_data)})
|
|
|
+
|
|
|
+ self.assertEqual(response.status_code, 200)
|
|
|
+ self.assertEqual(Platform.objects.count(), 6)
|
|
|
+
|
|
|
|
|
|
class DeviceTestCase(TestCase):
|
|
|
|
|
|
def setUp(self):
|
|
|
- user = create_test_user(permissions=['dcim.view_device'])
|
|
|
+ user = create_test_user(
|
|
|
+ permissions=[
|
|
|
+ 'dcim.view_device',
|
|
|
+ 'dcim.add_device',
|
|
|
+ ]
|
|
|
+ )
|
|
|
self.client = Client()
|
|
|
self.client.force_login(user)
|
|
|
|
|
|
@@ -450,11 +603,486 @@ class DeviceTestCase(TestCase):
|
|
|
response = self.client.get(device.get_absolute_url())
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
|
|
+ def test_device_import(self):
|
|
|
+
|
|
|
+ csv_data = (
|
|
|
+ "device_role,manufacturer,model_name,status,site,name",
|
|
|
+ "Device Role 1,Manufacturer 1,Device Type 1,Active,Site 1,Device 4",
|
|
|
+ "Device Role 1,Manufacturer 1,Device Type 1,Active,Site 1,Device 5",
|
|
|
+ "Device Role 1,Manufacturer 1,Device Type 1,Active,Site 1,Device 6",
|
|
|
+ )
|
|
|
+
|
|
|
+ response = self.client.post(reverse('dcim:device_import'), {'csv': '\n'.join(csv_data)})
|
|
|
+
|
|
|
+ self.assertEqual(response.status_code, 200)
|
|
|
+ self.assertEqual(Device.objects.count(), 6)
|
|
|
+
|
|
|
+
|
|
|
+class ConsolePortTestCase(TestCase):
|
|
|
+
|
|
|
+ def setUp(self):
|
|
|
+ user = create_test_user(
|
|
|
+ permissions=[
|
|
|
+ 'dcim.view_consoleport',
|
|
|
+ 'dcim.add_consoleport',
|
|
|
+ ]
|
|
|
+ )
|
|
|
+ self.client = Client()
|
|
|
+ self.client.force_login(user)
|
|
|
+
|
|
|
+ site = Site(name='Site 1', slug='site-1')
|
|
|
+ site.save()
|
|
|
+
|
|
|
+ manufacturer = Manufacturer(name='Manufacturer 1', slug='manufacturer-1')
|
|
|
+ manufacturer.save()
|
|
|
+
|
|
|
+ devicetype = DeviceType(model='Device Type 1', manufacturer=manufacturer)
|
|
|
+ devicetype.save()
|
|
|
+
|
|
|
+ devicerole = DeviceRole(name='Device Role 1', slug='device-role-1')
|
|
|
+ devicerole.save()
|
|
|
+
|
|
|
+ device = Device(name='Device 1', site=site, device_type=devicetype, device_role=devicerole)
|
|
|
+ device.save()
|
|
|
+
|
|
|
+ ConsolePort.objects.bulk_create([
|
|
|
+ ConsolePort(device=device, name='Console Port 1'),
|
|
|
+ ConsolePort(device=device, name='Console Port 2'),
|
|
|
+ ConsolePort(device=device, name='Console Port 3'),
|
|
|
+ ])
|
|
|
+
|
|
|
+ def test_consoleport_list(self):
|
|
|
+
|
|
|
+ url = reverse('dcim:consoleport_list')
|
|
|
+
|
|
|
+ response = self.client.get(url)
|
|
|
+ self.assertEqual(response.status_code, 200)
|
|
|
+
|
|
|
+ def test_consoleport_import(self):
|
|
|
+
|
|
|
+ csv_data = (
|
|
|
+ "device,name",
|
|
|
+ "Device 1,Console Port 4",
|
|
|
+ "Device 1,Console Port 5",
|
|
|
+ "Device 1,Console Port 6",
|
|
|
+ )
|
|
|
+
|
|
|
+ response = self.client.post(reverse('dcim:consoleport_import'), {'csv': '\n'.join(csv_data)})
|
|
|
+
|
|
|
+ self.assertEqual(response.status_code, 200)
|
|
|
+ self.assertEqual(ConsolePort.objects.count(), 6)
|
|
|
+
|
|
|
+
|
|
|
+class ConsoleServerPortTestCase(TestCase):
|
|
|
+
|
|
|
+ def setUp(self):
|
|
|
+ user = create_test_user(
|
|
|
+ permissions=[
|
|
|
+ 'dcim.view_consoleserverport',
|
|
|
+ 'dcim.add_consoleserverport',
|
|
|
+ ]
|
|
|
+ )
|
|
|
+ self.client = Client()
|
|
|
+ self.client.force_login(user)
|
|
|
+
|
|
|
+ site = Site(name='Site 1', slug='site-1')
|
|
|
+ site.save()
|
|
|
+
|
|
|
+ manufacturer = Manufacturer(name='Manufacturer 1', slug='manufacturer-1')
|
|
|
+ manufacturer.save()
|
|
|
+
|
|
|
+ devicetype = DeviceType(model='Device Type 1', manufacturer=manufacturer)
|
|
|
+ devicetype.save()
|
|
|
+
|
|
|
+ devicerole = DeviceRole(name='Device Role 1', slug='device-role-1')
|
|
|
+ devicerole.save()
|
|
|
+
|
|
|
+ device = Device(name='Device 1', site=site, device_type=devicetype, device_role=devicerole)
|
|
|
+ device.save()
|
|
|
+
|
|
|
+ ConsoleServerPort.objects.bulk_create([
|
|
|
+ ConsoleServerPort(device=device, name='Console Server Port 1'),
|
|
|
+ ConsoleServerPort(device=device, name='Console Server Port 2'),
|
|
|
+ ConsoleServerPort(device=device, name='Console Server Port 3'),
|
|
|
+ ])
|
|
|
+
|
|
|
+ def test_consoleserverport_list(self):
|
|
|
+
|
|
|
+ url = reverse('dcim:consoleserverport_list')
|
|
|
+
|
|
|
+ response = self.client.get(url)
|
|
|
+ self.assertEqual(response.status_code, 200)
|
|
|
+
|
|
|
+ def test_consoleserverport_import(self):
|
|
|
+
|
|
|
+ csv_data = (
|
|
|
+ "device,name",
|
|
|
+ "Device 1,Console Server Port 4",
|
|
|
+ "Device 1,Console Server Port 5",
|
|
|
+ "Device 1,Console Server Port 6",
|
|
|
+ )
|
|
|
+
|
|
|
+ response = self.client.post(reverse('dcim:consoleserverport_import'), {'csv': '\n'.join(csv_data)})
|
|
|
+
|
|
|
+ self.assertEqual(response.status_code, 200)
|
|
|
+ self.assertEqual(ConsoleServerPort.objects.count(), 6)
|
|
|
+
|
|
|
+
|
|
|
+class PowerPortTestCase(TestCase):
|
|
|
+
|
|
|
+ def setUp(self):
|
|
|
+ user = create_test_user(
|
|
|
+ permissions=[
|
|
|
+ 'dcim.view_powerport',
|
|
|
+ 'dcim.add_powerport',
|
|
|
+ ]
|
|
|
+ )
|
|
|
+ self.client = Client()
|
|
|
+ self.client.force_login(user)
|
|
|
+
|
|
|
+ site = Site(name='Site 1', slug='site-1')
|
|
|
+ site.save()
|
|
|
+
|
|
|
+ manufacturer = Manufacturer(name='Manufacturer 1', slug='manufacturer-1')
|
|
|
+ manufacturer.save()
|
|
|
+
|
|
|
+ devicetype = DeviceType(model='Device Type 1', manufacturer=manufacturer)
|
|
|
+ devicetype.save()
|
|
|
+
|
|
|
+ devicerole = DeviceRole(name='Device Role 1', slug='device-role-1')
|
|
|
+ devicerole.save()
|
|
|
+
|
|
|
+ device = Device(name='Device 1', site=site, device_type=devicetype, device_role=devicerole)
|
|
|
+ device.save()
|
|
|
+
|
|
|
+ PowerPort.objects.bulk_create([
|
|
|
+ PowerPort(device=device, name='Power Port 1'),
|
|
|
+ PowerPort(device=device, name='Power Port 2'),
|
|
|
+ PowerPort(device=device, name='Power Port 3'),
|
|
|
+ ])
|
|
|
+
|
|
|
+ def test_powerport_list(self):
|
|
|
+
|
|
|
+ url = reverse('dcim:powerport_list')
|
|
|
+
|
|
|
+ response = self.client.get(url)
|
|
|
+ self.assertEqual(response.status_code, 200)
|
|
|
+
|
|
|
+ def test_powerport_import(self):
|
|
|
+
|
|
|
+ csv_data = (
|
|
|
+ "device,name",
|
|
|
+ "Device 1,Power Port 4",
|
|
|
+ "Device 1,Power Port 5",
|
|
|
+ "Device 1,Power Port 6",
|
|
|
+ )
|
|
|
+
|
|
|
+ response = self.client.post(reverse('dcim:powerport_import'), {'csv': '\n'.join(csv_data)})
|
|
|
+
|
|
|
+ self.assertEqual(response.status_code, 200)
|
|
|
+ self.assertEqual(PowerPort.objects.count(), 6)
|
|
|
+
|
|
|
+
|
|
|
+class PowerOutletTestCase(TestCase):
|
|
|
+
|
|
|
+ def setUp(self):
|
|
|
+ user = create_test_user(
|
|
|
+ permissions=[
|
|
|
+ 'dcim.view_poweroutlet',
|
|
|
+ 'dcim.add_poweroutlet',
|
|
|
+ ]
|
|
|
+ )
|
|
|
+ self.client = Client()
|
|
|
+ self.client.force_login(user)
|
|
|
+
|
|
|
+ site = Site(name='Site 1', slug='site-1')
|
|
|
+ site.save()
|
|
|
+
|
|
|
+ manufacturer = Manufacturer(name='Manufacturer 1', slug='manufacturer-1')
|
|
|
+ manufacturer.save()
|
|
|
+
|
|
|
+ devicetype = DeviceType(model='Device Type 1', manufacturer=manufacturer)
|
|
|
+ devicetype.save()
|
|
|
+
|
|
|
+ devicerole = DeviceRole(name='Device Role 1', slug='device-role-1')
|
|
|
+ devicerole.save()
|
|
|
+
|
|
|
+ device = Device(name='Device 1', site=site, device_type=devicetype, device_role=devicerole)
|
|
|
+ device.save()
|
|
|
+
|
|
|
+ PowerOutlet.objects.bulk_create([
|
|
|
+ PowerOutlet(device=device, name='Power Outlet 1'),
|
|
|
+ PowerOutlet(device=device, name='Power Outlet 2'),
|
|
|
+ PowerOutlet(device=device, name='Power Outlet 3'),
|
|
|
+ ])
|
|
|
+
|
|
|
+ def test_poweroutlet_list(self):
|
|
|
+
|
|
|
+ url = reverse('dcim:poweroutlet_list')
|
|
|
+
|
|
|
+ response = self.client.get(url)
|
|
|
+ self.assertEqual(response.status_code, 200)
|
|
|
+
|
|
|
+ def test_poweroutlet_import(self):
|
|
|
+
|
|
|
+ csv_data = (
|
|
|
+ "device,name",
|
|
|
+ "Device 1,Power Outlet 4",
|
|
|
+ "Device 1,Power Outlet 5",
|
|
|
+ "Device 1,Power Outlet 6",
|
|
|
+ )
|
|
|
+
|
|
|
+ response = self.client.post(reverse('dcim:poweroutlet_import'), {'csv': '\n'.join(csv_data)})
|
|
|
+
|
|
|
+ self.assertEqual(response.status_code, 200)
|
|
|
+ self.assertEqual(PowerOutlet.objects.count(), 6)
|
|
|
+
|
|
|
+
|
|
|
+class InterfaceTestCase(TestCase):
|
|
|
+
|
|
|
+ def setUp(self):
|
|
|
+ user = create_test_user(
|
|
|
+ permissions=[
|
|
|
+ 'dcim.view_interface',
|
|
|
+ 'dcim.add_interface',
|
|
|
+ ]
|
|
|
+ )
|
|
|
+ self.client = Client()
|
|
|
+ self.client.force_login(user)
|
|
|
+
|
|
|
+ site = Site(name='Site 1', slug='site-1')
|
|
|
+ site.save()
|
|
|
+
|
|
|
+ manufacturer = Manufacturer(name='Manufacturer 1', slug='manufacturer-1')
|
|
|
+ manufacturer.save()
|
|
|
+
|
|
|
+ devicetype = DeviceType(model='Device Type 1', manufacturer=manufacturer)
|
|
|
+ devicetype.save()
|
|
|
+
|
|
|
+ devicerole = DeviceRole(name='Device Role 1', slug='device-role-1')
|
|
|
+ devicerole.save()
|
|
|
+
|
|
|
+ device = Device(name='Device 1', site=site, device_type=devicetype, device_role=devicerole)
|
|
|
+ device.save()
|
|
|
+
|
|
|
+ Interface.objects.bulk_create([
|
|
|
+ Interface(device=device, name='Interface 1'),
|
|
|
+ Interface(device=device, name='Interface 2'),
|
|
|
+ Interface(device=device, name='Interface 3'),
|
|
|
+ ])
|
|
|
+
|
|
|
+ def test_interface_list(self):
|
|
|
+
|
|
|
+ url = reverse('dcim:interface_list')
|
|
|
+
|
|
|
+ response = self.client.get(url)
|
|
|
+ self.assertEqual(response.status_code, 200)
|
|
|
+
|
|
|
+ def test_interface_import(self):
|
|
|
+
|
|
|
+ csv_data = (
|
|
|
+ "device,name,type",
|
|
|
+ "Device 1,Interface 4,1000BASE-T (1GE)",
|
|
|
+ "Device 1,Interface 5,1000BASE-T (1GE)",
|
|
|
+ "Device 1,Interface 6,1000BASE-T (1GE)",
|
|
|
+ )
|
|
|
+
|
|
|
+ response = self.client.post(reverse('dcim:interface_import'), {'csv': '\n'.join(csv_data)})
|
|
|
+
|
|
|
+ self.assertEqual(response.status_code, 200)
|
|
|
+ self.assertEqual(Interface.objects.count(), 6)
|
|
|
+
|
|
|
+
|
|
|
+class FrontPortTestCase(TestCase):
|
|
|
+
|
|
|
+ def setUp(self):
|
|
|
+ user = create_test_user(
|
|
|
+ permissions=[
|
|
|
+ 'dcim.view_frontport',
|
|
|
+ 'dcim.add_frontport',
|
|
|
+ ]
|
|
|
+ )
|
|
|
+ self.client = Client()
|
|
|
+ self.client.force_login(user)
|
|
|
+
|
|
|
+ site = Site(name='Site 1', slug='site-1')
|
|
|
+ site.save()
|
|
|
+
|
|
|
+ manufacturer = Manufacturer(name='Manufacturer 1', slug='manufacturer-1')
|
|
|
+ manufacturer.save()
|
|
|
+
|
|
|
+ devicetype = DeviceType(model='Device Type 1', manufacturer=manufacturer)
|
|
|
+ devicetype.save()
|
|
|
+
|
|
|
+ devicerole = DeviceRole(name='Device Role 1', slug='device-role-1')
|
|
|
+ devicerole.save()
|
|
|
+
|
|
|
+ device = Device(name='Device 1', site=site, device_type=devicetype, device_role=devicerole)
|
|
|
+ device.save()
|
|
|
+
|
|
|
+ rearport1 = RearPort(device=device, name='Rear Port 1')
|
|
|
+ rearport1.save()
|
|
|
+ rearport2 = RearPort(device=device, name='Rear Port 2')
|
|
|
+ rearport2.save()
|
|
|
+ rearport3 = RearPort(device=device, name='Rear Port 3')
|
|
|
+ rearport3.save()
|
|
|
+
|
|
|
+ # RearPorts for CSV import test
|
|
|
+ RearPort(device=device, name='Rear Port 4').save()
|
|
|
+ RearPort(device=device, name='Rear Port 5').save()
|
|
|
+ RearPort(device=device, name='Rear Port 6').save()
|
|
|
+
|
|
|
+ FrontPort.objects.bulk_create([
|
|
|
+ FrontPort(device=device, name='Front Port 1', rear_port=rearport1),
|
|
|
+ FrontPort(device=device, name='Front Port 2', rear_port=rearport2),
|
|
|
+ FrontPort(device=device, name='Front Port 3', rear_port=rearport3),
|
|
|
+ ])
|
|
|
+
|
|
|
+ def test_frontport_list(self):
|
|
|
+
|
|
|
+ url = reverse('dcim:frontport_list')
|
|
|
+
|
|
|
+ response = self.client.get(url)
|
|
|
+ self.assertEqual(response.status_code, 200)
|
|
|
+
|
|
|
+ def test_frontport_import(self):
|
|
|
+
|
|
|
+ csv_data = (
|
|
|
+ "device,name,type,rear_port,rear_port_position",
|
|
|
+ "Device 1,Front Port 4,8P8C,Rear Port 4,1",
|
|
|
+ "Device 1,Front Port 5,8P8C,Rear Port 5,1",
|
|
|
+ "Device 1,Front Port 6,8P8C,Rear Port 6,1",
|
|
|
+ )
|
|
|
+
|
|
|
+ response = self.client.post(reverse('dcim:frontport_import'), {'csv': '\n'.join(csv_data)})
|
|
|
+
|
|
|
+ self.assertEqual(response.status_code, 200)
|
|
|
+ self.assertEqual(FrontPort.objects.count(), 6)
|
|
|
+
|
|
|
+
|
|
|
+class RearPortTestCase(TestCase):
|
|
|
+
|
|
|
+ def setUp(self):
|
|
|
+ user = create_test_user(
|
|
|
+ permissions=[
|
|
|
+ 'dcim.view_rearport',
|
|
|
+ 'dcim.add_rearport',
|
|
|
+ ]
|
|
|
+ )
|
|
|
+ self.client = Client()
|
|
|
+ self.client.force_login(user)
|
|
|
+
|
|
|
+ site = Site(name='Site 1', slug='site-1')
|
|
|
+ site.save()
|
|
|
+
|
|
|
+ manufacturer = Manufacturer(name='Manufacturer 1', slug='manufacturer-1')
|
|
|
+ manufacturer.save()
|
|
|
+
|
|
|
+ devicetype = DeviceType(model='Device Type 1', manufacturer=manufacturer)
|
|
|
+ devicetype.save()
|
|
|
+
|
|
|
+ devicerole = DeviceRole(name='Device Role 1', slug='device-role-1')
|
|
|
+ devicerole.save()
|
|
|
+
|
|
|
+ device = Device(name='Device 1', site=site, device_type=devicetype, device_role=devicerole)
|
|
|
+ device.save()
|
|
|
+
|
|
|
+ RearPort.objects.bulk_create([
|
|
|
+ RearPort(device=device, name='Rear Port 1'),
|
|
|
+ RearPort(device=device, name='Rear Port 2'),
|
|
|
+ RearPort(device=device, name='Rear Port 3'),
|
|
|
+ ])
|
|
|
+
|
|
|
+ def test_rearport_list(self):
|
|
|
+
|
|
|
+ url = reverse('dcim:rearport_list')
|
|
|
+
|
|
|
+ response = self.client.get(url)
|
|
|
+ self.assertEqual(response.status_code, 200)
|
|
|
+
|
|
|
+ def test_rearport_import(self):
|
|
|
+
|
|
|
+ csv_data = (
|
|
|
+ "device,name,type,positions",
|
|
|
+ "Device 1,Rear Port 4,8P8C,1",
|
|
|
+ "Device 1,Rear Port 5,8P8C,1",
|
|
|
+ "Device 1,Rear Port 6,8P8C,1",
|
|
|
+ )
|
|
|
+
|
|
|
+ response = self.client.post(reverse('dcim:rearport_import'), {'csv': '\n'.join(csv_data)})
|
|
|
+
|
|
|
+ self.assertEqual(response.status_code, 200)
|
|
|
+ self.assertEqual(RearPort.objects.count(), 6)
|
|
|
+
|
|
|
+
|
|
|
+class DeviceBayTestCase(TestCase):
|
|
|
+
|
|
|
+ def setUp(self):
|
|
|
+ user = create_test_user(
|
|
|
+ permissions=[
|
|
|
+ 'dcim.view_devicebay',
|
|
|
+ 'dcim.add_devicebay',
|
|
|
+ ]
|
|
|
+ )
|
|
|
+ self.client = Client()
|
|
|
+ self.client.force_login(user)
|
|
|
+
|
|
|
+ site = Site(name='Site 1', slug='site-1')
|
|
|
+ site.save()
|
|
|
+
|
|
|
+ manufacturer = Manufacturer(name='Manufacturer 1', slug='manufacturer-1')
|
|
|
+ manufacturer.save()
|
|
|
+
|
|
|
+ devicetype = DeviceType(
|
|
|
+ model='Device Type 1',
|
|
|
+ manufacturer=manufacturer,
|
|
|
+ subdevice_role=SubdeviceRoleChoices.ROLE_PARENT
|
|
|
+ )
|
|
|
+ devicetype.save()
|
|
|
+
|
|
|
+ devicerole = DeviceRole(name='Device Role 1', slug='device-role-1')
|
|
|
+ devicerole.save()
|
|
|
+
|
|
|
+ device = Device(name='Device 1', site=site, device_type=devicetype, device_role=devicerole)
|
|
|
+ device.save()
|
|
|
+
|
|
|
+ DeviceBay.objects.bulk_create([
|
|
|
+ DeviceBay(device=device, name='Device Bay 1'),
|
|
|
+ DeviceBay(device=device, name='Device Bay 2'),
|
|
|
+ DeviceBay(device=device, name='Device Bay 3'),
|
|
|
+ ])
|
|
|
+
|
|
|
+ def test_devicebay_list(self):
|
|
|
+
|
|
|
+ url = reverse('dcim:devicebay_list')
|
|
|
+
|
|
|
+ response = self.client.get(url)
|
|
|
+ self.assertEqual(response.status_code, 200)
|
|
|
+
|
|
|
+ def test_devicebay_import(self):
|
|
|
+
|
|
|
+ csv_data = (
|
|
|
+ "device,name",
|
|
|
+ "Device 1,Device Bay 4",
|
|
|
+ "Device 1,Device Bay 5",
|
|
|
+ "Device 1,Device Bay 6",
|
|
|
+ )
|
|
|
+
|
|
|
+ response = self.client.post(reverse('dcim:devicebay_import'), {'csv': '\n'.join(csv_data)})
|
|
|
+
|
|
|
+ self.assertEqual(response.status_code, 200)
|
|
|
+ self.assertEqual(DeviceBay.objects.count(), 6)
|
|
|
+
|
|
|
|
|
|
class InventoryItemTestCase(TestCase):
|
|
|
|
|
|
def setUp(self):
|
|
|
- user = create_test_user(permissions=['dcim.view_inventoryitem'])
|
|
|
+ user = create_test_user(
|
|
|
+ permissions=[
|
|
|
+ 'dcim.view_inventoryitem',
|
|
|
+ 'dcim.add_inventoryitem',
|
|
|
+ ]
|
|
|
+ )
|
|
|
self.client = Client()
|
|
|
self.client.force_login(user)
|
|
|
|
|
|
@@ -489,11 +1117,30 @@ class InventoryItemTestCase(TestCase):
|
|
|
response = self.client.get('{}?{}'.format(url, urllib.parse.urlencode(params)))
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
|
|
+ def test_inventoryitem_import(self):
|
|
|
+
|
|
|
+ csv_data = (
|
|
|
+ "device,name",
|
|
|
+ "Device 1,Inventory Item 4",
|
|
|
+ "Device 1,Inventory Item 5",
|
|
|
+ "Device 1,Inventory Item 6",
|
|
|
+ )
|
|
|
+
|
|
|
+ response = self.client.post(reverse('dcim:inventoryitem_import'), {'csv': '\n'.join(csv_data)})
|
|
|
+
|
|
|
+ self.assertEqual(response.status_code, 200)
|
|
|
+ self.assertEqual(InventoryItem.objects.count(), 6)
|
|
|
+
|
|
|
|
|
|
class CableTestCase(TestCase):
|
|
|
|
|
|
def setUp(self):
|
|
|
- user = create_test_user(permissions=['dcim.view_cable'])
|
|
|
+ user = create_test_user(
|
|
|
+ permissions=[
|
|
|
+ 'dcim.view_cable',
|
|
|
+ 'dcim.add_cable',
|
|
|
+ ]
|
|
|
+ )
|
|
|
self.client = Client()
|
|
|
self.client.force_login(user)
|
|
|
|
|
|
@@ -513,6 +1160,10 @@ class CableTestCase(TestCase):
|
|
|
device1.save()
|
|
|
device2 = Device(name='Device 2', site=site, device_type=devicetype, device_role=devicerole)
|
|
|
device2.save()
|
|
|
+ device3 = Device(name='Device 3', site=site, device_type=devicetype, device_role=devicerole)
|
|
|
+ device3.save()
|
|
|
+ device4 = Device(name='Device 4', site=site, device_type=devicetype, device_role=devicerole)
|
|
|
+ device4.save()
|
|
|
|
|
|
iface1 = Interface(device=device1, name='Interface 1', type=InterfaceTypeChoices.TYPE_1GE_FIXED)
|
|
|
iface1.save()
|
|
|
@@ -527,6 +1178,14 @@ class CableTestCase(TestCase):
|
|
|
iface6 = Interface(device=device2, name='Interface 3', type=InterfaceTypeChoices.TYPE_1GE_FIXED)
|
|
|
iface6.save()
|
|
|
|
|
|
+ # Interfaces for CSV import testing
|
|
|
+ Interface(device=device3, name='Interface 1', type=InterfaceTypeChoices.TYPE_1GE_FIXED).save()
|
|
|
+ Interface(device=device3, name='Interface 2', type=InterfaceTypeChoices.TYPE_1GE_FIXED).save()
|
|
|
+ Interface(device=device3, name='Interface 3', type=InterfaceTypeChoices.TYPE_1GE_FIXED).save()
|
|
|
+ Interface(device=device4, name='Interface 1', type=InterfaceTypeChoices.TYPE_1GE_FIXED).save()
|
|
|
+ Interface(device=device4, name='Interface 2', type=InterfaceTypeChoices.TYPE_1GE_FIXED).save()
|
|
|
+ Interface(device=device4, name='Interface 3', type=InterfaceTypeChoices.TYPE_1GE_FIXED).save()
|
|
|
+
|
|
|
Cable(termination_a=iface1, termination_b=iface4, type=CableTypeChoices.TYPE_CAT6).save()
|
|
|
Cable(termination_a=iface2, termination_b=iface5, type=CableTypeChoices.TYPE_CAT6).save()
|
|
|
Cable(termination_a=iface3, termination_b=iface6, type=CableTypeChoices.TYPE_CAT6).save()
|
|
|
@@ -547,6 +1206,20 @@ class CableTestCase(TestCase):
|
|
|
response = self.client.get(cable.get_absolute_url())
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
|
|
+ def test_cable_import(self):
|
|
|
+
|
|
|
+ csv_data = (
|
|
|
+ "side_a_device,side_a_type,side_a_name,side_b_device,side_b_type,side_b_name",
|
|
|
+ "Device 3,interface,Interface 1,Device 4,interface,Interface 1",
|
|
|
+ "Device 3,interface,Interface 2,Device 4,interface,Interface 2",
|
|
|
+ "Device 3,interface,Interface 3,Device 4,interface,Interface 3",
|
|
|
+ )
|
|
|
+
|
|
|
+ response = self.client.post(reverse('dcim:cable_import'), {'csv': '\n'.join(csv_data)})
|
|
|
+
|
|
|
+ self.assertEqual(response.status_code, 200)
|
|
|
+ self.assertEqual(Cable.objects.count(), 6)
|
|
|
+
|
|
|
|
|
|
class VirtualChassisTestCase(TestCase):
|
|
|
|