Просмотр исходного кода

Migrate view tests to use new TestCase class

Jeremy Stretch 6 лет назад
Родитель
Сommit
61ac7c44ba

+ 19 - 29
netbox/circuits/tests/test_views.py

@@ -1,23 +1,18 @@
 import urllib.parse
 
-from django.test import Client, TestCase
 from django.urls import reverse
 
 from circuits.models import Circuit, CircuitType, Provider
-from utilities.testing import create_test_user
+from utilities.testing import TestCase
 
 
 class ProviderTestCase(TestCase):
+    user_permissions = (
+        'circuits.view_provider',
+    )
 
-    def setUp(self):
-        user = create_test_user(
-            permissions=[
-                'circuits.view_provider',
-                'circuits.add_provider',
-            ]
-        )
-        self.client = Client()
-        self.client.force_login(user)
+    @classmethod
+    def setUpTestData(cls):
 
         Provider.objects.bulk_create([
             Provider(name='Provider 1', slug='provider-1', asn=65001),
@@ -42,6 +37,7 @@ class ProviderTestCase(TestCase):
         self.assertEqual(response.status_code, 200)
 
     def test_provider_import(self):
+        self.add_permissions('circuits.add_provider')
 
         csv_data = (
             "name,slug",
@@ -57,16 +53,12 @@ class ProviderTestCase(TestCase):
 
 
 class CircuitTypeTestCase(TestCase):
+    user_permissions = (
+        'circuits.view_circuittype',
+    )
 
-    def setUp(self):
-        user = create_test_user(
-            permissions=[
-                'circuits.view_circuittype',
-                'circuits.add_circuittype',
-            ]
-        )
-        self.client = Client()
-        self.client.force_login(user)
+    @classmethod
+    def setUpTestData(cls):
 
         CircuitType.objects.bulk_create([
             CircuitType(name='Circuit Type 1', slug='circuit-type-1'),
@@ -82,6 +74,7 @@ class CircuitTypeTestCase(TestCase):
         self.assertEqual(response.status_code, 200)
 
     def test_circuittype_import(self):
+        self.add_permissions('circuits.add_circuittype')
 
         csv_data = (
             "name,slug",
@@ -97,16 +90,12 @@ class CircuitTypeTestCase(TestCase):
 
 
 class CircuitTestCase(TestCase):
+    user_permissions = (
+        'circuits.view_circuit',
+    )
 
-    def setUp(self):
-        user = create_test_user(
-            permissions=[
-                'circuits.view_circuit',
-                'circuits.add_circuit',
-            ]
-        )
-        self.client = Client()
-        self.client.force_login(user)
+    @classmethod
+    def setUpTestData(cls):
 
         provider = Provider(name='Provider 1', slug='provider-1', asn=65001)
         provider.save()
@@ -138,6 +127,7 @@ class CircuitTestCase(TestCase):
         self.assertEqual(response.status_code, 200)
 
     def test_circuit_import(self):
+        self.add_permissions('circuits.add_circuit')
 
         csv_data = (
             "cid,provider,type",

+ 136 - 190
netbox/dcim/tests/test_views.py

@@ -1,26 +1,22 @@
 import urllib.parse
 
 import yaml
-from django.test import Client, TestCase
+from django.contrib.auth.models import User
 from django.urls import reverse
 
 from dcim.choices import *
 from dcim.constants import *
 from dcim.models import *
-from utilities.testing import create_test_user
+from utilities.testing import TestCase
 
 
 class RegionTestCase(TestCase):
+    user_permissions = (
+        'dcim.view_region',
+    )
 
-    def setUp(self):
-        user = create_test_user(
-            permissions=[
-                'dcim.view_region',
-                'dcim.add_region',
-            ]
-        )
-        self.client = Client()
-        self.client.force_login(user)
+    @classmethod
+    def setUpTestData(cls):
 
         # Create three Regions
         for i in range(1, 4):
@@ -34,6 +30,7 @@ class RegionTestCase(TestCase):
         self.assertEqual(response.status_code, 200)
 
     def test_region_import(self):
+        self.add_permissions('dcim.add_region')
 
         csv_data = (
             "name,slug",
@@ -49,16 +46,12 @@ class RegionTestCase(TestCase):
 
 
 class SiteTestCase(TestCase):
+    user_permissions = (
+        'dcim.view_site',
+    )
 
-    def setUp(self):
-        user = create_test_user(
-            permissions=[
-                'dcim.view_site',
-                'dcim.add_site',
-            ]
-        )
-        self.client = Client()
-        self.client.force_login(user)
+    @classmethod
+    def setUpTestData(cls):
 
         region = Region(name='Region 1', slug='region-1')
         region.save()
@@ -86,6 +79,7 @@ class SiteTestCase(TestCase):
         self.assertEqual(response.status_code, 200)
 
     def test_site_import(self):
+        self.add_permissions('dcim.add_site')
 
         csv_data = (
             "name,slug",
@@ -101,16 +95,12 @@ class SiteTestCase(TestCase):
 
 
 class RackGroupTestCase(TestCase):
+    user_permissions = (
+        'dcim.view_rackgroup',
+    )
 
-    def setUp(self):
-        user = create_test_user(
-            permissions=[
-                'dcim.view_rackgroup',
-                'dcim.add_rackgroup',
-            ]
-        )
-        self.client = Client()
-        self.client.force_login(user)
+    @classmethod
+    def setUpTestData(cls):
 
         site = Site(name='Site 1', slug='site-1')
         site.save()
@@ -129,6 +119,7 @@ class RackGroupTestCase(TestCase):
         self.assertEqual(response.status_code, 200)
 
     def test_rackgroup_import(self):
+        self.add_permissions('dcim.add_rackgroup')
 
         csv_data = (
             "site,name,slug",
@@ -144,16 +135,12 @@ class RackGroupTestCase(TestCase):
 
 
 class RackRoleTestCase(TestCase):
+    user_permissions = (
+        'dcim.view_rackrole',
+    )
 
-    def setUp(self):
-        user = create_test_user(
-            permissions=[
-                'dcim.view_rackrole',
-                'dcim.add_rackrole',
-            ]
-        )
-        self.client = Client()
-        self.client.force_login(user)
+    @classmethod
+    def setUpTestData(cls):
 
         RackRole.objects.bulk_create([
             RackRole(name='Rack Role 1', slug='rack-role-1'),
@@ -169,6 +156,7 @@ class RackRoleTestCase(TestCase):
         self.assertEqual(response.status_code, 200)
 
     def test_rackrole_import(self):
+        self.add_permissions('dcim.add_rackrole')
 
         csv_data = (
             "name,slug,color",
@@ -184,11 +172,14 @@ class RackRoleTestCase(TestCase):
 
 
 class RackReservationTestCase(TestCase):
+    user_permissions = (
+        'dcim.view_rackreservation',
+    )
+
+    @classmethod
+    def setUpTestData(cls):
 
-    def setUp(self):
-        user = create_test_user(permissions=['dcim.view_rackreservation'])
-        self.client = Client()
-        self.client.force_login(user)
+        user = User.objects.create_user(username='testuser2')
 
         site = Site(name='Site 1', slug='site-1')
         site.save()
@@ -211,16 +202,12 @@ class RackReservationTestCase(TestCase):
 
 
 class RackTestCase(TestCase):
+    user_permissions = (
+        'dcim.view_rack',
+    )
 
-    def setUp(self):
-        user = create_test_user(
-            permissions=[
-                'dcim.view_rack',
-                'dcim.add_rack',
-            ]
-        )
-        self.client = Client()
-        self.client.force_login(user)
+    @classmethod
+    def setUpTestData(cls):
 
         site = Site(name='Site 1', slug='site-1')
         site.save()
@@ -248,6 +235,7 @@ class RackTestCase(TestCase):
         self.assertEqual(response.status_code, 200)
 
     def test_rack_import(self):
+        self.add_permissions('dcim.add_rack')
 
         csv_data = (
             "site,name,width,u_height",
@@ -263,16 +251,12 @@ class RackTestCase(TestCase):
 
 
 class ManufacturerTypeTestCase(TestCase):
+    user_permissions = (
+        'dcim.view_manufacturer',
+    )
 
-    def setUp(self):
-        user = create_test_user(
-            permissions=[
-                'dcim.view_manufacturer',
-                'dcim.add_manufacturer',
-            ]
-        )
-        self.client = Client()
-        self.client.force_login(user)
+    @classmethod
+    def setUpTestData(cls):
 
         Manufacturer.objects.bulk_create([
             Manufacturer(name='Manufacturer 1', slug='manufacturer-1'),
@@ -288,6 +272,7 @@ class ManufacturerTypeTestCase(TestCase):
         self.assertEqual(response.status_code, 200)
 
     def test_manufacturer_import(self):
+        self.add_permissions('dcim.add_manufacturer')
 
         csv_data = (
             "name,slug",
@@ -303,11 +288,12 @@ class ManufacturerTypeTestCase(TestCase):
 
 
 class DeviceTypeTestCase(TestCase):
+    user_permissions = (
+        'dcim.view_devicetype',
+    )
 
-    def setUp(self):
-        user = create_test_user(permissions=['dcim.view_devicetype'])
-        self.client = Client()
-        self.client.force_login(user)
+    @classmethod
+    def setUpTestData(cls):
 
         manufacturer = Manufacturer(name='Manufacturer 1', slug='manufacturer-1')
         manufacturer.save()
@@ -420,9 +406,8 @@ device-bays:
         # Create the manufacturer
         Manufacturer(name='Generic', slug='generic').save()
 
-        # Authenticate as user with necessary permissions
-        user = create_test_user(username='testuser2', permissions=[
-            'dcim.view_devicetype',
+        # Add all required permissions to the test user
+        self.add_permissions(
             'dcim.add_devicetype',
             'dcim.add_consoleporttemplate',
             'dcim.add_consoleserverporttemplate',
@@ -432,8 +417,7 @@ device-bays:
             'dcim.add_frontporttemplate',
             'dcim.add_rearporttemplate',
             'dcim.add_devicebaytemplate',
-        ])
-        self.client.force_login(user)
+        )
 
         form_data = {
             'data': IMPORT_DATA,
@@ -489,16 +473,12 @@ device-bays:
 
 
 class DeviceRoleTestCase(TestCase):
+    user_permissions = (
+        'dcim.view_devicerole',
+    )
 
-    def setUp(self):
-        user = create_test_user(
-            permissions=[
-                'dcim.view_devicerole',
-                'dcim.add_devicerole',
-            ]
-        )
-        self.client = Client()
-        self.client.force_login(user)
+    @classmethod
+    def setUpTestData(cls):
 
         DeviceRole.objects.bulk_create([
             DeviceRole(name='Device Role 1', slug='device-role-1'),
@@ -514,6 +494,7 @@ class DeviceRoleTestCase(TestCase):
         self.assertEqual(response.status_code, 200)
 
     def test_devicerole_import(self):
+        self.add_permissions('dcim.add_devicerole')
 
         csv_data = (
             "name,slug,color",
@@ -529,16 +510,12 @@ class DeviceRoleTestCase(TestCase):
 
 
 class PlatformTestCase(TestCase):
+    user_permissions = (
+        'dcim.view_platform',
+    )
 
-    def setUp(self):
-        user = create_test_user(
-            permissions=[
-                'dcim.view_platform',
-                'dcim.add_platform',
-            ]
-        )
-        self.client = Client()
-        self.client.force_login(user)
+    @classmethod
+    def setUpTestData(cls):
 
         Platform.objects.bulk_create([
             Platform(name='Platform 1', slug='platform-1'),
@@ -554,6 +531,7 @@ class PlatformTestCase(TestCase):
         self.assertEqual(response.status_code, 200)
 
     def test_platform_import(self):
+        self.add_permissions('dcim.add_platform')
 
         csv_data = (
             "name,slug",
@@ -569,16 +547,12 @@ class PlatformTestCase(TestCase):
 
 
 class DeviceTestCase(TestCase):
+    user_permissions = (
+        'dcim.view_device',
+    )
 
-    def setUp(self):
-        user = create_test_user(
-            permissions=[
-                'dcim.view_device',
-                'dcim.add_device',
-            ]
-        )
-        self.client = Client()
-        self.client.force_login(user)
+    @classmethod
+    def setUpTestData(cls):
 
         site = Site(name='Site 1', slug='site-1')
         site.save()
@@ -616,6 +590,7 @@ class DeviceTestCase(TestCase):
         self.assertEqual(response.status_code, 200)
 
     def test_device_import(self):
+        self.add_permissions('dcim.add_device')
 
         csv_data = (
             "device_role,manufacturer,model_name,status,site,name",
@@ -631,16 +606,12 @@ class DeviceTestCase(TestCase):
 
 
 class ConsolePortTestCase(TestCase):
+    user_permissions = (
+        'dcim.view_consoleport',
+    )
 
-    def setUp(self):
-        user = create_test_user(
-            permissions=[
-                'dcim.view_consoleport',
-                'dcim.add_consoleport',
-            ]
-        )
-        self.client = Client()
-        self.client.force_login(user)
+    @classmethod
+    def setUpTestData(cls):
 
         site = Site(name='Site 1', slug='site-1')
         site.save()
@@ -671,6 +642,7 @@ class ConsolePortTestCase(TestCase):
         self.assertEqual(response.status_code, 200)
 
     def test_consoleport_import(self):
+        self.add_permissions('dcim.add_consoleport')
 
         csv_data = (
             "device,name",
@@ -686,16 +658,12 @@ class ConsolePortTestCase(TestCase):
 
 
 class ConsoleServerPortTestCase(TestCase):
+    user_permissions = (
+        'dcim.view_consoleserverport',
+    )
 
-    def setUp(self):
-        user = create_test_user(
-            permissions=[
-                'dcim.view_consoleserverport',
-                'dcim.add_consoleserverport',
-            ]
-        )
-        self.client = Client()
-        self.client.force_login(user)
+    @classmethod
+    def setUpTestData(cls):
 
         site = Site(name='Site 1', slug='site-1')
         site.save()
@@ -726,6 +694,7 @@ class ConsoleServerPortTestCase(TestCase):
         self.assertEqual(response.status_code, 200)
 
     def test_consoleserverport_import(self):
+        self.add_permissions('dcim.add_consoleserverport')
 
         csv_data = (
             "device,name",
@@ -741,16 +710,12 @@ class ConsoleServerPortTestCase(TestCase):
 
 
 class PowerPortTestCase(TestCase):
+    user_permissions = (
+        'dcim.view_powerport',
+    )
 
-    def setUp(self):
-        user = create_test_user(
-            permissions=[
-                'dcim.view_powerport',
-                'dcim.add_powerport',
-            ]
-        )
-        self.client = Client()
-        self.client.force_login(user)
+    @classmethod
+    def setUpTestData(cls):
 
         site = Site(name='Site 1', slug='site-1')
         site.save()
@@ -781,6 +746,7 @@ class PowerPortTestCase(TestCase):
         self.assertEqual(response.status_code, 200)
 
     def test_powerport_import(self):
+        self.add_permissions('dcim.add_powerport')
 
         csv_data = (
             "device,name",
@@ -796,16 +762,12 @@ class PowerPortTestCase(TestCase):
 
 
 class PowerOutletTestCase(TestCase):
+    user_permissions = (
+        'dcim.view_poweroutlet',
+    )
 
-    def setUp(self):
-        user = create_test_user(
-            permissions=[
-                'dcim.view_poweroutlet',
-                'dcim.add_poweroutlet',
-            ]
-        )
-        self.client = Client()
-        self.client.force_login(user)
+    @classmethod
+    def setUpTestData(cls):
 
         site = Site(name='Site 1', slug='site-1')
         site.save()
@@ -836,6 +798,7 @@ class PowerOutletTestCase(TestCase):
         self.assertEqual(response.status_code, 200)
 
     def test_poweroutlet_import(self):
+        self.add_permissions('dcim.add_poweroutlet')
 
         csv_data = (
             "device,name",
@@ -851,16 +814,12 @@ class PowerOutletTestCase(TestCase):
 
 
 class InterfaceTestCase(TestCase):
+    user_permissions = (
+        'dcim.view_interface',
+    )
 
-    def setUp(self):
-        user = create_test_user(
-            permissions=[
-                'dcim.view_interface',
-                'dcim.add_interface',
-            ]
-        )
-        self.client = Client()
-        self.client.force_login(user)
+    @classmethod
+    def setUpTestData(cls):
 
         site = Site(name='Site 1', slug='site-1')
         site.save()
@@ -891,6 +850,7 @@ class InterfaceTestCase(TestCase):
         self.assertEqual(response.status_code, 200)
 
     def test_interface_import(self):
+        self.add_permissions('dcim.add_interface')
 
         csv_data = (
             "device,name,type",
@@ -906,16 +866,12 @@ class InterfaceTestCase(TestCase):
 
 
 class FrontPortTestCase(TestCase):
+    user_permissions = (
+        'dcim.view_frontport',
+    )
 
-    def setUp(self):
-        user = create_test_user(
-            permissions=[
-                'dcim.view_frontport',
-                'dcim.add_frontport',
-            ]
-        )
-        self.client = Client()
-        self.client.force_login(user)
+    @classmethod
+    def setUpTestData(cls):
 
         site = Site(name='Site 1', slug='site-1')
         site.save()
@@ -958,6 +914,7 @@ class FrontPortTestCase(TestCase):
         self.assertEqual(response.status_code, 200)
 
     def test_frontport_import(self):
+        self.add_permissions('dcim.add_frontport')
 
         csv_data = (
             "device,name,type,rear_port,rear_port_position",
@@ -973,16 +930,12 @@ class FrontPortTestCase(TestCase):
 
 
 class RearPortTestCase(TestCase):
+    user_permissions = (
+        'dcim.view_rearport',
+    )
 
-    def setUp(self):
-        user = create_test_user(
-            permissions=[
-                'dcim.view_rearport',
-                'dcim.add_rearport',
-            ]
-        )
-        self.client = Client()
-        self.client.force_login(user)
+    @classmethod
+    def setUpTestData(cls):
 
         site = Site(name='Site 1', slug='site-1')
         site.save()
@@ -1013,6 +966,7 @@ class RearPortTestCase(TestCase):
         self.assertEqual(response.status_code, 200)
 
     def test_rearport_import(self):
+        self.add_permissions('dcim.add_rearport')
 
         csv_data = (
             "device,name,type,positions",
@@ -1028,16 +982,12 @@ class RearPortTestCase(TestCase):
 
 
 class DeviceBayTestCase(TestCase):
+    user_permissions = (
+        'dcim.view_devicebay',
+    )
 
-    def setUp(self):
-        user = create_test_user(
-            permissions=[
-                'dcim.view_devicebay',
-                'dcim.add_devicebay',
-            ]
-        )
-        self.client = Client()
-        self.client.force_login(user)
+    @classmethod
+    def setUpTestData(cls):
 
         site = Site(name='Site 1', slug='site-1')
         site.save()
@@ -1072,6 +1022,7 @@ class DeviceBayTestCase(TestCase):
         self.assertEqual(response.status_code, 200)
 
     def test_devicebay_import(self):
+        self.add_permissions('dcim.add_devicebay')
 
         csv_data = (
             "device,name",
@@ -1087,16 +1038,12 @@ class DeviceBayTestCase(TestCase):
 
 
 class InventoryItemTestCase(TestCase):
+    user_permissions = (
+        'dcim.view_inventoryitem',
+    )
 
-    def setUp(self):
-        user = create_test_user(
-            permissions=[
-                'dcim.view_inventoryitem',
-                'dcim.add_inventoryitem',
-            ]
-        )
-        self.client = Client()
-        self.client.force_login(user)
+    @classmethod
+    def setUpTestData(cls):
 
         site = Site(name='Site 1', slug='site-1')
         site.save()
@@ -1130,6 +1077,7 @@ class InventoryItemTestCase(TestCase):
         self.assertEqual(response.status_code, 200)
 
     def test_inventoryitem_import(self):
+        self.add_permissions('dcim.add_inventoryitem')
 
         csv_data = (
             "device,name",
@@ -1145,16 +1093,12 @@ class InventoryItemTestCase(TestCase):
 
 
 class CableTestCase(TestCase):
+    user_permissions = (
+        'dcim.view_cable',
+    )
 
-    def setUp(self):
-        user = create_test_user(
-            permissions=[
-                'dcim.view_cable',
-                'dcim.add_cable',
-            ]
-        )
-        self.client = Client()
-        self.client.force_login(user)
+    @classmethod
+    def setUpTestData(cls):
 
         site = Site(name='Site 1', slug='site-1')
         site.save()
@@ -1219,6 +1163,7 @@ class CableTestCase(TestCase):
         self.assertEqual(response.status_code, 200)
 
     def test_cable_import(self):
+        self.add_permissions('dcim.add_cable')
 
         csv_data = (
             "side_a_device,side_a_type,side_a_name,side_b_device,side_b_type,side_b_name",
@@ -1234,11 +1179,12 @@ class CableTestCase(TestCase):
 
 
 class VirtualChassisTestCase(TestCase):
+    user_permissions = (
+        'dcim.view_virtualchassis',
+    )
 
-    def setUp(self):
-        user = create_test_user(permissions=['dcim.view_virtualchassis'])
-        self.client = Client()
-        self.client.force_login(user)
+    @classmethod
+    def setUpTestData(cls):
 
         site = Site.objects.create(name='Site 1', slug='site-1')
         manufacturer = Manufacturer.objects.create(name='Manufacturer', slug='manufacturer-1')

+ 54 - 78
netbox/ipam/tests/test_views.py

@@ -1,26 +1,21 @@
 from netaddr import IPNetwork
 import urllib.parse
 
-from django.test import Client, TestCase
 from django.urls import reverse
 
 from dcim.models import Device, DeviceRole, DeviceType, Manufacturer, Site
 from ipam.choices import ServiceProtocolChoices
 from ipam.models import Aggregate, IPAddress, Prefix, RIR, Role, Service, VLAN, VLANGroup, VRF
-from utilities.testing import create_test_user
+from utilities.testing import TestCase
 
 
 class VRFTestCase(TestCase):
+    user_permissions = (
+        'ipam.view_vrf',
+    )
 
-    def setUp(self):
-        user = create_test_user(
-            permissions=[
-                'ipam.view_vrf',
-                'ipam.add_vrf',
-            ]
-        )
-        self.client = Client()
-        self.client.force_login(user)
+    @classmethod
+    def setUpTestData(cls):
 
         VRF.objects.bulk_create([
             VRF(name='VRF 1', rd='65000:1'),
@@ -45,6 +40,7 @@ class VRFTestCase(TestCase):
         self.assertEqual(response.status_code, 200)
 
     def test_vrf_import(self):
+        self.add_permissions('ipam.add_vrf')
 
         csv_data = (
             "name",
@@ -60,16 +56,12 @@ class VRFTestCase(TestCase):
 
 
 class RIRTestCase(TestCase):
+    user_permissions = (
+        'ipam.view_rir',
+    )
 
-    def setUp(self):
-        user = create_test_user(
-            permissions=[
-                'ipam.view_rir',
-                'ipam.add_rir',
-            ]
-        )
-        self.client = Client()
-        self.client.force_login(user)
+    @classmethod
+    def setUpTestData(cls):
 
         RIR.objects.bulk_create([
             RIR(name='RIR 1', slug='rir-1'),
@@ -85,6 +77,7 @@ class RIRTestCase(TestCase):
         self.assertEqual(response.status_code, 200)
 
     def test_rir_import(self):
+        self.add_permissions('ipam.add_rir')
 
         csv_data = (
             "name,slug",
@@ -100,16 +93,12 @@ class RIRTestCase(TestCase):
 
 
 class AggregateTestCase(TestCase):
+    user_permissions = (
+        'ipam.view_aggregate',
+    )
 
-    def setUp(self):
-        user = create_test_user(
-            permissions=[
-                'ipam.view_aggregate',
-                'ipam.add_aggregate',
-            ]
-        )
-        self.client = Client()
-        self.client.force_login(user)
+    @classmethod
+    def setUpTestData(cls):
 
         rir = RIR(name='RIR 1', slug='rir-1')
         rir.save()
@@ -137,6 +126,7 @@ class AggregateTestCase(TestCase):
         self.assertEqual(response.status_code, 200)
 
     def test_aggregate_import(self):
+        self.add_permissions('ipam.add_aggregate')
 
         csv_data = (
             "prefix,rir",
@@ -152,16 +142,12 @@ class AggregateTestCase(TestCase):
 
 
 class RoleTestCase(TestCase):
+    user_permissions = (
+        'ipam.view_role',
+    )
 
-    def setUp(self):
-        user = create_test_user(
-            permissions=[
-                'ipam.view_role',
-                'ipam.add_role',
-            ]
-        )
-        self.client = Client()
-        self.client.force_login(user)
+    @classmethod
+    def setUpTestData(cls):
 
         Role.objects.bulk_create([
             Role(name='Role 1', slug='role-1'),
@@ -177,6 +163,7 @@ class RoleTestCase(TestCase):
         self.assertEqual(response.status_code, 200)
 
     def test_role_import(self):
+        self.add_permissions('ipam.add_role')
 
         csv_data = (
             "name,slug,weight",
@@ -192,16 +179,12 @@ class RoleTestCase(TestCase):
 
 
 class PrefixTestCase(TestCase):
+    user_permissions = (
+        'ipam.view_prefix',
+    )
 
-    def setUp(self):
-        user = create_test_user(
-            permissions=[
-                'ipam.view_prefix',
-                'ipam.add_prefix',
-            ]
-        )
-        self.client = Client()
-        self.client.force_login(user)
+    @classmethod
+    def setUpTestData(cls):
 
         site = Site(name='Site 1', slug='site-1')
         site.save()
@@ -229,6 +212,7 @@ class PrefixTestCase(TestCase):
         self.assertEqual(response.status_code, 200)
 
     def test_prefix_import(self):
+        self.add_permissions('ipam.add_prefix')
 
         csv_data = (
             "prefix,status",
@@ -244,16 +228,12 @@ class PrefixTestCase(TestCase):
 
 
 class IPAddressTestCase(TestCase):
+    user_permissions = (
+        'ipam.view_ipaddress',
+    )
 
-    def setUp(self):
-        user = create_test_user(
-            permissions=[
-                'ipam.view_ipaddress',
-                'ipam.add_ipaddress',
-            ]
-        )
-        self.client = Client()
-        self.client.force_login(user)
+    @classmethod
+    def setUpTestData(cls):
 
         vrf = VRF(name='VRF 1', rd='65000:1')
         vrf.save()
@@ -281,6 +261,7 @@ class IPAddressTestCase(TestCase):
         self.assertEqual(response.status_code, 200)
 
     def test_ipaddress_import(self):
+        self.add_permissions('ipam.add_ipaddress')
 
         csv_data = (
             "address,status",
@@ -296,16 +277,12 @@ class IPAddressTestCase(TestCase):
 
 
 class VLANGroupTestCase(TestCase):
+    user_permissions = (
+        'ipam.view_vlangroup',
+    )
 
-    def setUp(self):
-        user = create_test_user(
-            permissions=[
-                'ipam.view_vlangroup',
-                'ipam.add_vlangroup',
-            ]
-        )
-        self.client = Client()
-        self.client.force_login(user)
+    @classmethod
+    def setUpTestData(cls):
 
         site = Site(name='Site 1', slug='site-1')
         site.save()
@@ -327,6 +304,7 @@ class VLANGroupTestCase(TestCase):
         self.assertEqual(response.status_code, 200)
 
     def test_vlangroup_import(self):
+        self.add_permissions('ipam.add_vlangroup')
 
         csv_data = (
             "name,slug",
@@ -342,16 +320,12 @@ class VLANGroupTestCase(TestCase):
 
 
 class VLANTestCase(TestCase):
+    user_permissions = (
+        'ipam.view_vlan',
+    )
 
-    def setUp(self):
-        user = create_test_user(
-            permissions=[
-                'ipam.view_vlan',
-                'ipam.add_vlan',
-            ]
-        )
-        self.client = Client()
-        self.client.force_login(user)
+    @classmethod
+    def setUpTestData(cls):
 
         vlangroup = VLANGroup(name='VLAN Group 1', slug='vlan-group-1')
         vlangroup.save()
@@ -379,6 +353,7 @@ class VLANTestCase(TestCase):
         self.assertEqual(response.status_code, 200)
 
     def test_vlan_import(self):
+        self.add_permissions('ipam.add_vlan')
 
         csv_data = (
             "vid,name,status",
@@ -394,11 +369,12 @@ class VLANTestCase(TestCase):
 
 
 class ServiceTestCase(TestCase):
+    user_permissions = (
+        'ipam.view_service',
+    )
 
-    def setUp(self):
-        user = create_test_user(permissions=['ipam.view_service'])
-        self.client = Client()
-        self.client.force_login(user)
+    @classmethod
+    def setUpTestData(cls):
 
         site = Site(name='Site 1', slug='site-1')
         site.save()

+ 24 - 28
netbox/secrets/tests/test_views.py

@@ -1,26 +1,21 @@
 import base64
 import urllib.parse
 
-from django.test import Client, TestCase
 from django.urls import reverse
 
 from dcim.models import Device, DeviceRole, DeviceType, Manufacturer, Site
 from secrets.models import Secret, SecretRole, SessionKey, UserKey
-from utilities.testing import create_test_user
+from utilities.testing import TestCase
 from .constants import PRIVATE_KEY, PUBLIC_KEY
 
 
 class SecretRoleTestCase(TestCase):
+    user_permissions = (
+        'secrets.view_secretrole',
+    )
 
-    def setUp(self):
-        user = create_test_user(
-            permissions=[
-                'secrets.view_secretrole',
-                'secrets.add_secretrole',
-            ]
-        )
-        self.client = Client()
-        self.client.force_login(user)
+    @classmethod
+    def setUpTestData(cls):
 
         SecretRole.objects.bulk_create([
             SecretRole(name='Secret Role 1', slug='secret-role-1'),
@@ -36,6 +31,7 @@ class SecretRoleTestCase(TestCase):
         self.assertEqual(response.status_code, 200)
 
     def test_secretrole_import(self):
+        self.add_permissions('secrets.add_secretrole')
 
         csv_data = (
             "name,slug",
@@ -51,24 +47,12 @@ class SecretRoleTestCase(TestCase):
 
 
 class SecretTestCase(TestCase):
+    user_permissions = (
+        'secrets.view_secret',
+    )
 
-    def setUp(self):
-        user = create_test_user(
-            permissions=[
-                'secrets.view_secret',
-                'secrets.add_secret',
-            ]
-        )
-
-        # Set up a master key
-        userkey = UserKey(user=user, public_key=PUBLIC_KEY)
-        userkey.save()
-        master_key = userkey.get_master_key(PRIVATE_KEY)
-        self.session_key = SessionKey(userkey=userkey)
-        self.session_key.save(master_key)
-
-        self.client = Client()
-        self.client.force_login(user)
+    @classmethod
+    def setUpTestData(cls):
 
         site = Site(name='Site 1', slug='site-1')
         site.save()
@@ -94,6 +78,17 @@ class SecretTestCase(TestCase):
             Secret(device=device, role=secretrole, name='Secret 3', ciphertext=b'1234567890'),
         ])
 
+    def setUp(self):
+
+        super().setUp()
+
+        # Set up a master key for the test user
+        userkey = UserKey(user=self.user, public_key=PUBLIC_KEY)
+        userkey.save()
+        master_key = userkey.get_master_key(PRIVATE_KEY)
+        self.session_key = SessionKey(userkey=userkey)
+        self.session_key.save(master_key)
+
     def test_secret_list(self):
 
         url = reverse('secrets:secret_list')
@@ -111,6 +106,7 @@ class SecretTestCase(TestCase):
         self.assertEqual(response.status_code, 200)
 
     def test_secret_import(self):
+        self.add_permissions('secrets.add_secret')
 
         csv_data = (
             "device,role,name,plaintext",

+ 13 - 20
netbox/tenancy/tests/test_views.py

@@ -1,23 +1,18 @@
 import urllib.parse
 
-from django.test import Client, TestCase
 from django.urls import reverse
 
 from tenancy.models import Tenant, TenantGroup
-from utilities.testing import create_test_user
+from utilities.testing import TestCase
 
 
 class TenantGroupTestCase(TestCase):
+    user_permissions = (
+        'tenancy.view_tenantgroup',
+    )
 
-    def setUp(self):
-        user = create_test_user(
-            permissions=[
-                'tenancy.view_tenantgroup',
-                'tenancy.add_tenantgroup',
-            ]
-        )
-        self.client = Client()
-        self.client.force_login(user)
+    @classmethod
+    def setUpTestData(cls):
 
         TenantGroup.objects.bulk_create([
             TenantGroup(name='Tenant Group 1', slug='tenant-group-1'),
@@ -33,6 +28,7 @@ class TenantGroupTestCase(TestCase):
         self.assertEqual(response.status_code, 200)
 
     def test_tenantgroup_import(self):
+        self.add_permissions('tenancy.add_tenantgroup')
 
         csv_data = (
             "name,slug",
@@ -48,16 +44,12 @@ class TenantGroupTestCase(TestCase):
 
 
 class TenantTestCase(TestCase):
+    user_permissions = (
+        'tenancy.view_tenant',
+    )
 
-    def setUp(self):
-        user = create_test_user(
-            permissions=[
-                'tenancy.view_tenant',
-                'tenancy.add_tenant',
-            ]
-        )
-        self.client = Client()
-        self.client.force_login(user)
+    @classmethod
+    def setUpTestData(cls):
 
         tenantgroup = TenantGroup(name='Tenant Group 1', slug='tenant-group-1')
         tenantgroup.save()
@@ -85,6 +77,7 @@ class TenantTestCase(TestCase):
         self.assertEqual(response.status_code, 200)
 
     def test_tenant_import(self):
+        self.add_permissions('tenancy.add_tenant')
 
         csv_data = (
             "name,slug",

+ 25 - 38
netbox/virtualization/tests/test_views.py

@@ -1,23 +1,18 @@
 import urllib.parse
 
-from django.test import Client, TestCase
 from django.urls import reverse
 
-from utilities.testing import create_test_user
+from utilities.testing import TestCase
 from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualMachine
 
 
 class ClusterGroupTestCase(TestCase):
+    user_permissions = (
+        'virtualization.view_clustergroup',
+    )
 
-    def setUp(self):
-        user = create_test_user(
-            permissions=[
-                'virtualization.view_clustergroup',
-                'virtualization.add_clustergroup',
-            ]
-        )
-        self.client = Client()
-        self.client.force_login(user)
+    @classmethod
+    def setUpTestData(cls):
 
         ClusterGroup.objects.bulk_create([
             ClusterGroup(name='Cluster Group 1', slug='cluster-group-1'),
@@ -33,6 +28,7 @@ class ClusterGroupTestCase(TestCase):
         self.assertEqual(response.status_code, 200)
 
     def test_clustergroup_import(self):
+        self.add_permissions('virtualization.add_clustergroup')
 
         csv_data = (
             "name,slug",
@@ -48,16 +44,12 @@ class ClusterGroupTestCase(TestCase):
 
 
 class ClusterTypeTestCase(TestCase):
+    user_permissions = (
+        'virtualization.view_clustertype',
+    )
 
-    def setUp(self):
-        user = create_test_user(
-            permissions=[
-                'virtualization.view_clustertype',
-                'virtualization.add_clustertype',
-            ]
-        )
-        self.client = Client()
-        self.client.force_login(user)
+    @classmethod
+    def setUpTestData(cls):
 
         ClusterType.objects.bulk_create([
             ClusterType(name='Cluster Type 1', slug='cluster-type-1'),
@@ -73,6 +65,7 @@ class ClusterTypeTestCase(TestCase):
         self.assertEqual(response.status_code, 200)
 
     def test_clustertype_import(self):
+        self.add_permissions('virtualization.add_clustertype')
 
         csv_data = (
             "name,slug",
@@ -88,16 +81,12 @@ class ClusterTypeTestCase(TestCase):
 
 
 class ClusterTestCase(TestCase):
+    user_permissions = (
+        'virtualization.view_cluster',
+    )
 
-    def setUp(self):
-        user = create_test_user(
-            permissions=[
-                'virtualization.view_cluster',
-                'virtualization.add_cluster',
-            ]
-        )
-        self.client = Client()
-        self.client.force_login(user)
+    @classmethod
+    def setUpTestData(cls):
 
         clustergroup = ClusterGroup(name='Cluster Group 1', slug='cluster-group-1')
         clustergroup.save()
@@ -129,6 +118,7 @@ class ClusterTestCase(TestCase):
         self.assertEqual(response.status_code, 200)
 
     def test_cluster_import(self):
+        self.add_permissions('virtualization.add_cluster')
 
         csv_data = (
             "name,type",
@@ -144,16 +134,12 @@ class ClusterTestCase(TestCase):
 
 
 class VirtualMachineTestCase(TestCase):
+    user_permissions = (
+        'virtualization.view_virtualmachine',
+    )
 
-    def setUp(self):
-        user = create_test_user(
-            permissions=[
-                'virtualization.view_virtualmachine',
-                'virtualization.add_virtualmachine',
-            ]
-        )
-        self.client = Client()
-        self.client.force_login(user)
+    @classmethod
+    def setUpTestData(cls):
 
         clustertype = ClusterType(name='Cluster Type 1', slug='cluster-type-1')
         clustertype.save()
@@ -184,6 +170,7 @@ class VirtualMachineTestCase(TestCase):
         self.assertEqual(response.status_code, 200)
 
     def test_virtualmachine_import(self):
+        self.add_permissions('virtualization.add_virtualmachine')
 
         csv_data = (
             "name,cluster",