Przeglądaj źródła

Refactored the tests to remove a lot of boilerplate

Jeremy Stretch 7 lat temu
rodzic
commit
bd5e860be0

+ 9 - 20
netbox/circuits/tests/test_api.py

@@ -1,26 +1,21 @@
 from __future__ import unicode_literals
 from __future__ import unicode_literals
 
 
-from django.contrib.auth.models import User
 from django.urls import reverse
 from django.urls import reverse
 from rest_framework import status
 from rest_framework import status
-from rest_framework.test import APITestCase
 
 
 from circuits.constants import CIRCUIT_STATUS_ACTIVE, TERM_SIDE_A, TERM_SIDE_Z
 from circuits.constants import CIRCUIT_STATUS_ACTIVE, TERM_SIDE_A, TERM_SIDE_Z
 from circuits.models import Circuit, CircuitTermination, CircuitType, Provider
 from circuits.models import Circuit, CircuitTermination, CircuitType, Provider
 from dcim.models import Site
 from dcim.models import Site
 from extras.constants import GRAPH_TYPE_PROVIDER
 from extras.constants import GRAPH_TYPE_PROVIDER
 from extras.models import Graph
 from extras.models import Graph
-from users.models import Token
-from utilities.testing import HttpStatusMixin
+from utilities.testing import APITestCase
 
 
 
 
-class ProviderTest(HttpStatusMixin, APITestCase):
+class ProviderTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(ProviderTest, self).setUp()
 
 
         self.provider1 = Provider.objects.create(name='Test Provider 1', slug='test-provider-1')
         self.provider1 = Provider.objects.create(name='Test Provider 1', slug='test-provider-1')
         self.provider2 = Provider.objects.create(name='Test Provider 2', slug='test-provider-2')
         self.provider2 = Provider.objects.create(name='Test Provider 2', slug='test-provider-2')
@@ -128,13 +123,11 @@ class ProviderTest(HttpStatusMixin, APITestCase):
         self.assertEqual(Provider.objects.count(), 2)
         self.assertEqual(Provider.objects.count(), 2)
 
 
 
 
-class CircuitTypeTest(HttpStatusMixin, APITestCase):
+class CircuitTypeTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(CircuitTypeTest, self).setUp()
 
 
         self.circuittype1 = CircuitType.objects.create(name='Test Circuit Type 1', slug='test-circuit-type-1')
         self.circuittype1 = CircuitType.objects.create(name='Test Circuit Type 1', slug='test-circuit-type-1')
         self.circuittype2 = CircuitType.objects.create(name='Test Circuit Type 2', slug='test-circuit-type-2')
         self.circuittype2 = CircuitType.objects.create(name='Test Circuit Type 2', slug='test-circuit-type-2')
@@ -195,13 +188,11 @@ class CircuitTypeTest(HttpStatusMixin, APITestCase):
         self.assertEqual(CircuitType.objects.count(), 2)
         self.assertEqual(CircuitType.objects.count(), 2)
 
 
 
 
-class CircuitTest(HttpStatusMixin, APITestCase):
+class CircuitTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(CircuitTest, self).setUp()
 
 
         self.provider1 = Provider.objects.create(name='Test Provider 1', slug='test-provider-1')
         self.provider1 = Provider.objects.create(name='Test Provider 1', slug='test-provider-1')
         self.provider2 = Provider.objects.create(name='Test Provider 2', slug='test-provider-2')
         self.provider2 = Provider.objects.create(name='Test Provider 2', slug='test-provider-2')
@@ -303,13 +294,11 @@ class CircuitTest(HttpStatusMixin, APITestCase):
         self.assertEqual(Circuit.objects.count(), 2)
         self.assertEqual(Circuit.objects.count(), 2)
 
 
 
 
-class CircuitTerminationTest(HttpStatusMixin, APITestCase):
+class CircuitTerminationTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(CircuitTerminationTest, self).setUp()
 
 
         provider = Provider.objects.create(name='Test Provider', slug='test-provider')
         provider = Provider.objects.create(name='Test Provider', slug='test-provider')
         circuittype = CircuitType.objects.create(name='Test Circuit Type', slug='test-circuit-type')
         circuittype = CircuitType.objects.create(name='Test Circuit Type', slug='test-circuit-type')

+ 67 - 129
netbox/dcim/tests/test_api.py

@@ -1,9 +1,7 @@
 from __future__ import unicode_literals
 from __future__ import unicode_literals
 
 
-from django.contrib.auth.models import User
 from django.urls import reverse
 from django.urls import reverse
 from rest_framework import status
 from rest_framework import status
-from rest_framework.test import APITestCase
 
 
 from dcim.constants import (
 from dcim.constants import (
     IFACE_FF_1GE_FIXED, IFACE_FF_LAG, IFACE_MODE_TAGGED, SITE_STATUS_ACTIVE, SUBDEVICE_ROLE_CHILD,
     IFACE_FF_1GE_FIXED, IFACE_FF_LAG, IFACE_MODE_TAGGED, SITE_STATUS_ACTIVE, SUBDEVICE_ROLE_CHILD,
@@ -17,17 +15,14 @@ from dcim.models import (
 )
 )
 from ipam.models import VLAN
 from ipam.models import VLAN
 from extras.models import Graph, GRAPH_TYPE_INTERFACE, GRAPH_TYPE_SITE
 from extras.models import Graph, GRAPH_TYPE_INTERFACE, GRAPH_TYPE_SITE
-from users.models import Token
-from utilities.testing import HttpStatusMixin
+from utilities.testing import APITestCase
 
 
 
 
-class RegionTest(HttpStatusMixin, APITestCase):
+class RegionTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(RegionTest, self).setUp()
 
 
         self.region1 = Region.objects.create(name='Test Region 1', slug='test-region-1')
         self.region1 = Region.objects.create(name='Test Region 1', slug='test-region-1')
         self.region2 = Region.objects.create(name='Test Region 2', slug='test-region-2')
         self.region2 = Region.objects.create(name='Test Region 2', slug='test-region-2')
@@ -114,13 +109,11 @@ class RegionTest(HttpStatusMixin, APITestCase):
         self.assertEqual(Region.objects.count(), 2)
         self.assertEqual(Region.objects.count(), 2)
 
 
 
 
-class SiteTest(HttpStatusMixin, APITestCase):
+class SiteTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(SiteTest, self).setUp()
 
 
         self.region1 = Region.objects.create(name='Test Region 1', slug='test-region-1')
         self.region1 = Region.objects.create(name='Test Region 1', slug='test-region-1')
         self.region2 = Region.objects.create(name='Test Region 2', slug='test-region-2')
         self.region2 = Region.objects.create(name='Test Region 2', slug='test-region-2')
@@ -241,13 +234,11 @@ class SiteTest(HttpStatusMixin, APITestCase):
         self.assertEqual(Site.objects.count(), 2)
         self.assertEqual(Site.objects.count(), 2)
 
 
 
 
-class RackGroupTest(HttpStatusMixin, APITestCase):
+class RackGroupTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(RackGroupTest, self).setUp()
 
 
         self.site1 = Site.objects.create(name='Test Site 1', slug='test-site-1')
         self.site1 = Site.objects.create(name='Test Site 1', slug='test-site-1')
         self.site2 = Site.objects.create(name='Test Site 2', slug='test-site-2')
         self.site2 = Site.objects.create(name='Test Site 2', slug='test-site-2')
@@ -343,13 +334,11 @@ class RackGroupTest(HttpStatusMixin, APITestCase):
         self.assertEqual(RackGroup.objects.count(), 2)
         self.assertEqual(RackGroup.objects.count(), 2)
 
 
 
 
-class RackRoleTest(HttpStatusMixin, APITestCase):
+class RackRoleTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(RackRoleTest, self).setUp()
 
 
         self.rackrole1 = RackRole.objects.create(name='Test Rack Role 1', slug='test-rack-role-1', color='ff0000')
         self.rackrole1 = RackRole.objects.create(name='Test Rack Role 1', slug='test-rack-role-1', color='ff0000')
         self.rackrole2 = RackRole.objects.create(name='Test Rack Role 2', slug='test-rack-role-2', color='00ff00')
         self.rackrole2 = RackRole.objects.create(name='Test Rack Role 2', slug='test-rack-role-2', color='00ff00')
@@ -443,13 +432,11 @@ class RackRoleTest(HttpStatusMixin, APITestCase):
         self.assertEqual(RackRole.objects.count(), 2)
         self.assertEqual(RackRole.objects.count(), 2)
 
 
 
 
-class RackTest(HttpStatusMixin, APITestCase):
+class RackTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(RackTest, self).setUp()
 
 
         self.site1 = Site.objects.create(name='Test Site 1', slug='test-site-1')
         self.site1 = Site.objects.create(name='Test Site 1', slug='test-site-1')
         self.site2 = Site.objects.create(name='Test Site 2', slug='test-site-2')
         self.site2 = Site.objects.create(name='Test Site 2', slug='test-site-2')
@@ -569,25 +556,22 @@ class RackTest(HttpStatusMixin, APITestCase):
         self.assertEqual(Rack.objects.count(), 2)
         self.assertEqual(Rack.objects.count(), 2)
 
 
 
 
-class RackReservationTest(HttpStatusMixin, APITestCase):
+class RackReservationTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(RackReservationTest, self).setUp()
 
 
-        self.user1 = user
         self.site1 = Site.objects.create(name='Test Site 1', slug='test-site-1')
         self.site1 = Site.objects.create(name='Test Site 1', slug='test-site-1')
         self.rack1 = Rack.objects.create(site=self.site1, name='Test Rack 1')
         self.rack1 = Rack.objects.create(site=self.site1, name='Test Rack 1')
         self.rackreservation1 = RackReservation.objects.create(
         self.rackreservation1 = RackReservation.objects.create(
-            rack=self.rack1, units=[1, 2, 3], user=user, description='Reservation #1',
+            rack=self.rack1, units=[1, 2, 3], user=self.user, description='Reservation #1',
         )
         )
         self.rackreservation2 = RackReservation.objects.create(
         self.rackreservation2 = RackReservation.objects.create(
-            rack=self.rack1, units=[4, 5, 6], user=user, description='Reservation #2',
+            rack=self.rack1, units=[4, 5, 6], user=self.user, description='Reservation #2',
         )
         )
         self.rackreservation3 = RackReservation.objects.create(
         self.rackreservation3 = RackReservation.objects.create(
-            rack=self.rack1, units=[7, 8, 9], user=user, description='Reservation #3',
+            rack=self.rack1, units=[7, 8, 9], user=self.user, description='Reservation #3',
         )
         )
 
 
     def test_get_rackreservation(self):
     def test_get_rackreservation(self):
@@ -609,7 +593,7 @@ class RackReservationTest(HttpStatusMixin, APITestCase):
         data = {
         data = {
             'rack': self.rack1.pk,
             'rack': self.rack1.pk,
             'units': [10, 11, 12],
             'units': [10, 11, 12],
-            'user': self.user1.pk,
+            'user': self.user.pk,
             'description': 'Fourth reservation',
             'description': 'Fourth reservation',
         }
         }
 
 
@@ -630,19 +614,19 @@ class RackReservationTest(HttpStatusMixin, APITestCase):
             {
             {
                 'rack': self.rack1.pk,
                 'rack': self.rack1.pk,
                 'units': [10, 11, 12],
                 'units': [10, 11, 12],
-                'user': self.user1.pk,
+                'user': self.user.pk,
                 'description': 'Reservation #4',
                 'description': 'Reservation #4',
             },
             },
             {
             {
                 'rack': self.rack1.pk,
                 'rack': self.rack1.pk,
                 'units': [13, 14, 15],
                 'units': [13, 14, 15],
-                'user': self.user1.pk,
+                'user': self.user.pk,
                 'description': 'Reservation #5',
                 'description': 'Reservation #5',
             },
             },
             {
             {
                 'rack': self.rack1.pk,
                 'rack': self.rack1.pk,
                 'units': [16, 17, 18],
                 'units': [16, 17, 18],
-                'user': self.user1.pk,
+                'user': self.user.pk,
                 'description': 'Reservation #6',
                 'description': 'Reservation #6',
             },
             },
         ]
         ]
@@ -661,7 +645,7 @@ class RackReservationTest(HttpStatusMixin, APITestCase):
         data = {
         data = {
             'rack': self.rack1.pk,
             'rack': self.rack1.pk,
             'units': [10, 11, 12],
             'units': [10, 11, 12],
-            'user': self.user1.pk,
+            'user': self.user.pk,
             'description': 'Modified reservation',
             'description': 'Modified reservation',
         }
         }
 
 
@@ -683,13 +667,11 @@ class RackReservationTest(HttpStatusMixin, APITestCase):
         self.assertEqual(RackReservation.objects.count(), 2)
         self.assertEqual(RackReservation.objects.count(), 2)
 
 
 
 
-class ManufacturerTest(HttpStatusMixin, APITestCase):
+class ManufacturerTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(ManufacturerTest, self).setUp()
 
 
         self.manufacturer1 = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1')
         self.manufacturer1 = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1')
         self.manufacturer2 = Manufacturer.objects.create(name='Test Manufacturer 2', slug='test-manufacturer-2')
         self.manufacturer2 = Manufacturer.objects.create(name='Test Manufacturer 2', slug='test-manufacturer-2')
@@ -776,13 +758,11 @@ class ManufacturerTest(HttpStatusMixin, APITestCase):
         self.assertEqual(Manufacturer.objects.count(), 2)
         self.assertEqual(Manufacturer.objects.count(), 2)
 
 
 
 
-class DeviceTypeTest(HttpStatusMixin, APITestCase):
+class DeviceTypeTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(DeviceTypeTest, self).setUp()
 
 
         self.manufacturer1 = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1')
         self.manufacturer1 = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1')
         self.manufacturer2 = Manufacturer.objects.create(name='Test Manufacturer 2', slug='test-manufacturer-2')
         self.manufacturer2 = Manufacturer.objects.create(name='Test Manufacturer 2', slug='test-manufacturer-2')
@@ -884,13 +864,11 @@ class DeviceTypeTest(HttpStatusMixin, APITestCase):
         self.assertEqual(DeviceType.objects.count(), 2)
         self.assertEqual(DeviceType.objects.count(), 2)
 
 
 
 
-class ConsolePortTemplateTest(HttpStatusMixin, APITestCase):
+class ConsolePortTemplateTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(ConsolePortTemplateTest, self).setUp()
 
 
         self.manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1')
         self.manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1')
         self.devicetype = DeviceType.objects.create(
         self.devicetype = DeviceType.objects.create(
@@ -986,13 +964,11 @@ class ConsolePortTemplateTest(HttpStatusMixin, APITestCase):
         self.assertEqual(ConsolePortTemplate.objects.count(), 2)
         self.assertEqual(ConsolePortTemplate.objects.count(), 2)
 
 
 
 
-class ConsoleServerPortTemplateTest(HttpStatusMixin, APITestCase):
+class ConsoleServerPortTemplateTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(ConsoleServerPortTemplateTest, self).setUp()
 
 
         self.manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1')
         self.manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1')
         self.devicetype = DeviceType.objects.create(
         self.devicetype = DeviceType.objects.create(
@@ -1088,13 +1064,11 @@ class ConsoleServerPortTemplateTest(HttpStatusMixin, APITestCase):
         self.assertEqual(ConsoleServerPortTemplate.objects.count(), 2)
         self.assertEqual(ConsoleServerPortTemplate.objects.count(), 2)
 
 
 
 
-class PowerPortTemplateTest(HttpStatusMixin, APITestCase):
+class PowerPortTemplateTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(PowerPortTemplateTest, self).setUp()
 
 
         self.manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1')
         self.manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1')
         self.devicetype = DeviceType.objects.create(
         self.devicetype = DeviceType.objects.create(
@@ -1190,13 +1164,11 @@ class PowerPortTemplateTest(HttpStatusMixin, APITestCase):
         self.assertEqual(PowerPortTemplate.objects.count(), 2)
         self.assertEqual(PowerPortTemplate.objects.count(), 2)
 
 
 
 
-class PowerOutletTemplateTest(HttpStatusMixin, APITestCase):
+class PowerOutletTemplateTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(PowerOutletTemplateTest, self).setUp()
 
 
         self.manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1')
         self.manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1')
         self.devicetype = DeviceType.objects.create(
         self.devicetype = DeviceType.objects.create(
@@ -1292,13 +1264,11 @@ class PowerOutletTemplateTest(HttpStatusMixin, APITestCase):
         self.assertEqual(PowerOutletTemplate.objects.count(), 2)
         self.assertEqual(PowerOutletTemplate.objects.count(), 2)
 
 
 
 
-class InterfaceTemplateTest(HttpStatusMixin, APITestCase):
+class InterfaceTemplateTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(InterfaceTemplateTest, self).setUp()
 
 
         self.manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1')
         self.manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1')
         self.devicetype = DeviceType.objects.create(
         self.devicetype = DeviceType.objects.create(
@@ -1394,13 +1364,11 @@ class InterfaceTemplateTest(HttpStatusMixin, APITestCase):
         self.assertEqual(InterfaceTemplate.objects.count(), 2)
         self.assertEqual(InterfaceTemplate.objects.count(), 2)
 
 
 
 
-class DeviceBayTemplateTest(HttpStatusMixin, APITestCase):
+class DeviceBayTemplateTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(DeviceBayTemplateTest, self).setUp()
 
 
         self.manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1')
         self.manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1')
         self.devicetype = DeviceType.objects.create(
         self.devicetype = DeviceType.objects.create(
@@ -1496,13 +1464,11 @@ class DeviceBayTemplateTest(HttpStatusMixin, APITestCase):
         self.assertEqual(DeviceBayTemplate.objects.count(), 2)
         self.assertEqual(DeviceBayTemplate.objects.count(), 2)
 
 
 
 
-class DeviceRoleTest(HttpStatusMixin, APITestCase):
+class DeviceRoleTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(DeviceRoleTest, self).setUp()
 
 
         self.devicerole1 = DeviceRole.objects.create(
         self.devicerole1 = DeviceRole.objects.create(
             name='Test Device Role 1', slug='test-device-role-1', color='ff0000'
             name='Test Device Role 1', slug='test-device-role-1', color='ff0000'
@@ -1602,13 +1568,11 @@ class DeviceRoleTest(HttpStatusMixin, APITestCase):
         self.assertEqual(DeviceRole.objects.count(), 2)
         self.assertEqual(DeviceRole.objects.count(), 2)
 
 
 
 
-class PlatformTest(HttpStatusMixin, APITestCase):
+class PlatformTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(PlatformTest, self).setUp()
 
 
         self.platform1 = Platform.objects.create(name='Test Platform 1', slug='test-platform-1')
         self.platform1 = Platform.objects.create(name='Test Platform 1', slug='test-platform-1')
         self.platform2 = Platform.objects.create(name='Test Platform 2', slug='test-platform-2')
         self.platform2 = Platform.objects.create(name='Test Platform 2', slug='test-platform-2')
@@ -1695,13 +1659,11 @@ class PlatformTest(HttpStatusMixin, APITestCase):
         self.assertEqual(Platform.objects.count(), 2)
         self.assertEqual(Platform.objects.count(), 2)
 
 
 
 
-class DeviceTest(HttpStatusMixin, APITestCase):
+class DeviceTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(DeviceTest, self).setUp()
 
 
         self.site1 = Site.objects.create(name='Test Site 1', slug='test-site-1')
         self.site1 = Site.objects.create(name='Test Site 1', slug='test-site-1')
         self.site2 = Site.objects.create(name='Test Site 2', slug='test-site-2')
         self.site2 = Site.objects.create(name='Test Site 2', slug='test-site-2')
@@ -1823,13 +1785,11 @@ class DeviceTest(HttpStatusMixin, APITestCase):
         self.assertEqual(Device.objects.count(), 2)
         self.assertEqual(Device.objects.count(), 2)
 
 
 
 
-class ConsolePortTest(HttpStatusMixin, APITestCase):
+class ConsolePortTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(ConsolePortTest, self).setUp()
 
 
         site = Site.objects.create(name='Test Site 1', slug='test-site-1')
         site = Site.objects.create(name='Test Site 1', slug='test-site-1')
         manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1')
         manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1')
@@ -1930,13 +1890,11 @@ class ConsolePortTest(HttpStatusMixin, APITestCase):
         self.assertEqual(ConsolePort.objects.count(), 2)
         self.assertEqual(ConsolePort.objects.count(), 2)
 
 
 
 
-class ConsoleServerPortTest(HttpStatusMixin, APITestCase):
+class ConsoleServerPortTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(ConsoleServerPortTest, self).setUp()
 
 
         site = Site.objects.create(name='Test Site 1', slug='test-site-1')
         site = Site.objects.create(name='Test Site 1', slug='test-site-1')
         manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1')
         manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1')
@@ -2033,13 +1991,11 @@ class ConsoleServerPortTest(HttpStatusMixin, APITestCase):
         self.assertEqual(ConsoleServerPort.objects.count(), 2)
         self.assertEqual(ConsoleServerPort.objects.count(), 2)
 
 
 
 
-class PowerPortTest(HttpStatusMixin, APITestCase):
+class PowerPortTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(PowerPortTest, self).setUp()
 
 
         site = Site.objects.create(name='Test Site 1', slug='test-site-1')
         site = Site.objects.create(name='Test Site 1', slug='test-site-1')
         manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1')
         manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1')
@@ -2140,13 +2096,11 @@ class PowerPortTest(HttpStatusMixin, APITestCase):
         self.assertEqual(PowerPort.objects.count(), 2)
         self.assertEqual(PowerPort.objects.count(), 2)
 
 
 
 
-class PowerOutletTest(HttpStatusMixin, APITestCase):
+class PowerOutletTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(PowerOutletTest, self).setUp()
 
 
         site = Site.objects.create(name='Test Site 1', slug='test-site-1')
         site = Site.objects.create(name='Test Site 1', slug='test-site-1')
         manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1')
         manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1')
@@ -2243,13 +2197,11 @@ class PowerOutletTest(HttpStatusMixin, APITestCase):
         self.assertEqual(PowerOutlet.objects.count(), 2)
         self.assertEqual(PowerOutlet.objects.count(), 2)
 
 
 
 
-class InterfaceTest(HttpStatusMixin, APITestCase):
+class InterfaceTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(InterfaceTest, self).setUp()
 
 
         site = Site.objects.create(name='Test Site 1', slug='test-site-1')
         site = Site.objects.create(name='Test Site 1', slug='test-site-1')
         manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1')
         manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1')
@@ -2433,13 +2385,11 @@ class InterfaceTest(HttpStatusMixin, APITestCase):
         self.assertEqual(Interface.objects.count(), 2)
         self.assertEqual(Interface.objects.count(), 2)
 
 
 
 
-class DeviceBayTest(HttpStatusMixin, APITestCase):
+class DeviceBayTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(DeviceBayTest, self).setUp()
 
 
         site = Site.objects.create(name='Test Site 1', slug='test-site-1')
         site = Site.objects.create(name='Test Site 1', slug='test-site-1')
         manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1')
         manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1')
@@ -2548,13 +2498,11 @@ class DeviceBayTest(HttpStatusMixin, APITestCase):
         self.assertEqual(DeviceBay.objects.count(), 2)
         self.assertEqual(DeviceBay.objects.count(), 2)
 
 
 
 
-class InventoryItemTest(HttpStatusMixin, APITestCase):
+class InventoryItemTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(InventoryItemTest, self).setUp()
 
 
         site = Site.objects.create(name='Test Site 1', slug='test-site-1')
         site = Site.objects.create(name='Test Site 1', slug='test-site-1')
         self.manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1')
         self.manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1')
@@ -2666,13 +2614,11 @@ class InventoryItemTest(HttpStatusMixin, APITestCase):
         self.assertEqual(InventoryItem.objects.count(), 2)
         self.assertEqual(InventoryItem.objects.count(), 2)
 
 
 
 
-class ConsoleConnectionTest(HttpStatusMixin, APITestCase):
+class ConsoleConnectionTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(ConsoleConnectionTest, self).setUp()
 
 
         site = Site.objects.create(name='Test Site 1', slug='test-site-1')
         site = Site.objects.create(name='Test Site 1', slug='test-site-1')
         manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1')
         manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1')
@@ -2709,13 +2655,11 @@ class ConsoleConnectionTest(HttpStatusMixin, APITestCase):
         self.assertEqual(response.data['count'], 3)
         self.assertEqual(response.data['count'], 3)
 
 
 
 
-class PowerConnectionTest(HttpStatusMixin, APITestCase):
+class PowerConnectionTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(PowerConnectionTest, self).setUp()
 
 
         site = Site.objects.create(name='Test Site 1', slug='test-site-1')
         site = Site.objects.create(name='Test Site 1', slug='test-site-1')
         manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1')
         manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1')
@@ -2752,13 +2696,11 @@ class PowerConnectionTest(HttpStatusMixin, APITestCase):
         self.assertEqual(response.data['count'], 3)
         self.assertEqual(response.data['count'], 3)
 
 
 
 
-class InterfaceConnectionTest(HttpStatusMixin, APITestCase):
+class InterfaceConnectionTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(InterfaceConnectionTest, self).setUp()
 
 
         site = Site.objects.create(name='Test Site 1', slug='test-site-1')
         site = Site.objects.create(name='Test Site 1', slug='test-site-1')
         manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1')
         manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1')
@@ -2879,13 +2821,11 @@ class InterfaceConnectionTest(HttpStatusMixin, APITestCase):
         self.assertEqual(InterfaceConnection.objects.count(), 2)
         self.assertEqual(InterfaceConnection.objects.count(), 2)
 
 
 
 
-class ConnectedDeviceTest(HttpStatusMixin, APITestCase):
+class ConnectedDeviceTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(ConnectedDeviceTest, self).setUp()
 
 
         self.site1 = Site.objects.create(name='Test Site 1', slug='test-site-1')
         self.site1 = Site.objects.create(name='Test Site 1', slug='test-site-1')
         self.site2 = Site.objects.create(name='Test Site 2', slug='test-site-2')
         self.site2 = Site.objects.create(name='Test Site 2', slug='test-site-2')
@@ -2921,13 +2861,11 @@ class ConnectedDeviceTest(HttpStatusMixin, APITestCase):
         self.assertEqual(response.data['name'], self.device1.name)
         self.assertEqual(response.data['name'], self.device1.name)
 
 
 
 
-class VirtualChassisTest(HttpStatusMixin, APITestCase):
+class VirtualChassisTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(VirtualChassisTest, self).setUp()
 
 
         site = Site.objects.create(name='Test Site', slug='test-site')
         site = Site.objects.create(name='Test Site', slug='test-site')
         manufacturer = Manufacturer.objects.create(name='Test Manufacturer', slug='test-manufacturer')
         manufacturer = Manufacturer.objects.create(name='Test Manufacturer', slug='test-manufacturer')

+ 9 - 20
netbox/extras/tests/test_api.py

@@ -1,27 +1,22 @@
 from __future__ import unicode_literals
 from __future__ import unicode_literals
 
 
-from django.contrib.auth.models import User
 from django.contrib.contenttypes.models import ContentType
 from django.contrib.contenttypes.models import ContentType
 from django.urls import reverse
 from django.urls import reverse
 from rest_framework import status
 from rest_framework import status
-from rest_framework.test import APITestCase
 from taggit.models import Tag
 from taggit.models import Tag
 
 
 from dcim.models import Device, DeviceRole, DeviceType, Manufacturer, Platform, Region, Site
 from dcim.models import Device, DeviceRole, DeviceType, Manufacturer, Platform, Region, Site
 from extras.constants import GRAPH_TYPE_SITE
 from extras.constants import GRAPH_TYPE_SITE
 from extras.models import ConfigContext, Graph, ExportTemplate
 from extras.models import ConfigContext, Graph, ExportTemplate
 from tenancy.models import Tenant, TenantGroup
 from tenancy.models import Tenant, TenantGroup
-from users.models import Token
-from utilities.testing import HttpStatusMixin
+from utilities.testing import APITestCase
 
 
 
 
-class GraphTest(HttpStatusMixin, APITestCase):
+class GraphTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(GraphTest, self).setUp()
 
 
         self.graph1 = Graph.objects.create(
         self.graph1 = Graph.objects.create(
             type=GRAPH_TYPE_SITE, name='Test Graph 1', source='http://example.com/graphs.py?site={{ obj.name }}&foo=1'
             type=GRAPH_TYPE_SITE, name='Test Graph 1', source='http://example.com/graphs.py?site={{ obj.name }}&foo=1'
@@ -121,13 +116,11 @@ class GraphTest(HttpStatusMixin, APITestCase):
         self.assertEqual(Graph.objects.count(), 2)
         self.assertEqual(Graph.objects.count(), 2)
 
 
 
 
-class ExportTemplateTest(HttpStatusMixin, APITestCase):
+class ExportTemplateTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(ExportTemplateTest, self).setUp()
 
 
         self.content_type = ContentType.objects.get_for_model(Device)
         self.content_type = ContentType.objects.get_for_model(Device)
         self.exporttemplate1 = ExportTemplate.objects.create(
         self.exporttemplate1 = ExportTemplate.objects.create(
@@ -230,13 +223,11 @@ class ExportTemplateTest(HttpStatusMixin, APITestCase):
         self.assertEqual(ExportTemplate.objects.count(), 2)
         self.assertEqual(ExportTemplate.objects.count(), 2)
 
 
 
 
-class TagTest(HttpStatusMixin, APITestCase):
+class TagTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(TagTest, self).setUp()
 
 
         self.tag1 = Tag.objects.create(name='Test Tag 1', slug='test-tag-1')
         self.tag1 = Tag.objects.create(name='Test Tag 1', slug='test-tag-1')
         self.tag2 = Tag.objects.create(name='Test Tag 2', slug='test-tag-2')
         self.tag2 = Tag.objects.create(name='Test Tag 2', slug='test-tag-2')
@@ -323,13 +314,11 @@ class TagTest(HttpStatusMixin, APITestCase):
         self.assertEqual(Tag.objects.count(), 2)
         self.assertEqual(Tag.objects.count(), 2)
 
 
 
 
-class ConfigContextTest(HttpStatusMixin, APITestCase):
+class ConfigContextTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(ConfigContextTest, self).setUp()
 
 
         self.configcontext1 = ConfigContext.objects.create(
         self.configcontext1 = ConfigContext.objects.create(
             name='Test Config Context 1',
             name='Test Config Context 1',

+ 3 - 8
netbox/extras/tests/test_customfields.py

@@ -2,18 +2,15 @@ from __future__ import unicode_literals
 
 
 from datetime import date
 from datetime import date
 
 
-from django.contrib.auth.models import User
 from django.contrib.contenttypes.models import ContentType
 from django.contrib.contenttypes.models import ContentType
 from django.test import TestCase
 from django.test import TestCase
 from django.urls import reverse
 from django.urls import reverse
 from rest_framework import status
 from rest_framework import status
-from rest_framework.test import APITestCase
 
 
 from dcim.models import Site
 from dcim.models import Site
 from extras.constants import CF_TYPE_TEXT, CF_TYPE_INTEGER, CF_TYPE_BOOLEAN, CF_TYPE_DATE, CF_TYPE_SELECT, CF_TYPE_URL
 from extras.constants import CF_TYPE_TEXT, CF_TYPE_INTEGER, CF_TYPE_BOOLEAN, CF_TYPE_DATE, CF_TYPE_SELECT, CF_TYPE_URL
 from extras.models import CustomField, CustomFieldValue, CustomFieldChoice
 from extras.models import CustomField, CustomFieldValue, CustomFieldChoice
-from users.models import Token
-from utilities.testing import HttpStatusMixin
+from utilities.testing import APITestCase
 
 
 
 
 class CustomFieldTest(TestCase):
 class CustomFieldTest(TestCase):
@@ -102,13 +99,11 @@ class CustomFieldTest(TestCase):
         cf.delete()
         cf.delete()
 
 
 
 
-class CustomFieldAPITest(HttpStatusMixin, APITestCase):
+class CustomFieldAPITest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(CustomFieldAPITest, self).setUp()
 
 
         content_type = ContentType.objects.get_for_model(Site)
         content_type = ContentType.objects.get_for_model(Site)
 
 

+ 3 - 8
netbox/extras/tests/test_tags.py

@@ -1,25 +1,20 @@
 from __future__ import unicode_literals
 from __future__ import unicode_literals
 
 
-from django.contrib.auth.models import User
 from django.urls import reverse
 from django.urls import reverse
 from rest_framework import status
 from rest_framework import status
-from rest_framework.test import APITestCase
 
 
 from dcim.models import Site
 from dcim.models import Site
-from users.models import Token
-from utilities.testing import HttpStatusMixin
+from utilities.testing import APITestCase
 
 
 
 
-class TaggedItemTest(HttpStatusMixin, APITestCase):
+class TaggedItemTest(APITestCase):
     """
     """
     Test the application of Tags to and item (a Site, for example) upon creation (POST) and modification (PATCH).
     Test the application of Tags to and item (a Site, for example) upon creation (POST) and modification (PATCH).
     """
     """
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(TaggedItemTest, self).setUp()
 
 
     def test_create_tagged_item(self):
     def test_create_tagged_item(self):
 
 

+ 19 - 40
netbox/ipam/tests/test_api.py

@@ -1,25 +1,20 @@
 from __future__ import unicode_literals
 from __future__ import unicode_literals
 
 
-from django.contrib.auth.models import User
 from django.urls import reverse
 from django.urls import reverse
 from netaddr import IPNetwork
 from netaddr import IPNetwork
 from rest_framework import status
 from rest_framework import status
-from rest_framework.test import APITestCase
 
 
 from dcim.models import Device, DeviceRole, DeviceType, Manufacturer, Site
 from dcim.models import Device, DeviceRole, DeviceType, Manufacturer, Site
 from ipam.constants import IP_PROTOCOL_TCP, IP_PROTOCOL_UDP
 from ipam.constants import IP_PROTOCOL_TCP, IP_PROTOCOL_UDP
 from ipam.models import Aggregate, IPAddress, Prefix, RIR, Role, Service, VLAN, VLANGroup, VRF
 from ipam.models import Aggregate, IPAddress, Prefix, RIR, Role, Service, VLAN, VLANGroup, VRF
-from users.models import Token
-from utilities.testing import HttpStatusMixin
+from utilities.testing import APITestCase
 
 
 
 
-class VRFTest(HttpStatusMixin, APITestCase):
+class VRFTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(VRFTest, self).setUp()
 
 
         self.vrf1 = VRF.objects.create(name='Test VRF 1', rd='65000:1')
         self.vrf1 = VRF.objects.create(name='Test VRF 1', rd='65000:1')
         self.vrf2 = VRF.objects.create(name='Test VRF 2', rd='65000:2')
         self.vrf2 = VRF.objects.create(name='Test VRF 2', rd='65000:2')
@@ -106,13 +101,11 @@ class VRFTest(HttpStatusMixin, APITestCase):
         self.assertEqual(VRF.objects.count(), 2)
         self.assertEqual(VRF.objects.count(), 2)
 
 
 
 
-class RIRTest(HttpStatusMixin, APITestCase):
+class RIRTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(RIRTest, self).setUp()
 
 
         self.rir1 = RIR.objects.create(name='Test RIR 1', slug='test-rir-1')
         self.rir1 = RIR.objects.create(name='Test RIR 1', slug='test-rir-1')
         self.rir2 = RIR.objects.create(name='Test RIR 2', slug='test-rir-2')
         self.rir2 = RIR.objects.create(name='Test RIR 2', slug='test-rir-2')
@@ -199,13 +192,11 @@ class RIRTest(HttpStatusMixin, APITestCase):
         self.assertEqual(RIR.objects.count(), 2)
         self.assertEqual(RIR.objects.count(), 2)
 
 
 
 
-class AggregateTest(HttpStatusMixin, APITestCase):
+class AggregateTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(AggregateTest, self).setUp()
 
 
         self.rir1 = RIR.objects.create(name='Test RIR 1', slug='test-rir-1')
         self.rir1 = RIR.objects.create(name='Test RIR 1', slug='test-rir-1')
         self.rir2 = RIR.objects.create(name='Test RIR 2', slug='test-rir-2')
         self.rir2 = RIR.objects.create(name='Test RIR 2', slug='test-rir-2')
@@ -294,13 +285,11 @@ class AggregateTest(HttpStatusMixin, APITestCase):
         self.assertEqual(Aggregate.objects.count(), 2)
         self.assertEqual(Aggregate.objects.count(), 2)
 
 
 
 
-class RoleTest(HttpStatusMixin, APITestCase):
+class RoleTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(RoleTest, self).setUp()
 
 
         self.role1 = Role.objects.create(name='Test Role 1', slug='test-role-1')
         self.role1 = Role.objects.create(name='Test Role 1', slug='test-role-1')
         self.role2 = Role.objects.create(name='Test Role 2', slug='test-role-2')
         self.role2 = Role.objects.create(name='Test Role 2', slug='test-role-2')
@@ -387,13 +376,11 @@ class RoleTest(HttpStatusMixin, APITestCase):
         self.assertEqual(Role.objects.count(), 2)
         self.assertEqual(Role.objects.count(), 2)
 
 
 
 
-class PrefixTest(HttpStatusMixin, APITestCase):
+class PrefixTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(PrefixTest, self).setUp()
 
 
         self.site1 = Site.objects.create(name='Test Site 1', slug='test-site-1')
         self.site1 = Site.objects.create(name='Test Site 1', slug='test-site-1')
         self.vrf1 = VRF.objects.create(name='Test VRF 1', rd='65000:1')
         self.vrf1 = VRF.objects.create(name='Test VRF 1', rd='65000:1')
@@ -614,13 +601,11 @@ class PrefixTest(HttpStatusMixin, APITestCase):
         self.assertEqual(len(response.data), 8)
         self.assertEqual(len(response.data), 8)
 
 
 
 
-class IPAddressTest(HttpStatusMixin, APITestCase):
+class IPAddressTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(IPAddressTest, self).setUp()
 
 
         self.vrf1 = VRF.objects.create(name='Test VRF 1', rd='65000:1')
         self.vrf1 = VRF.objects.create(name='Test VRF 1', rd='65000:1')
         self.ipaddress1 = IPAddress.objects.create(address=IPNetwork('192.168.0.1/24'))
         self.ipaddress1 = IPAddress.objects.create(address=IPNetwork('192.168.0.1/24'))
@@ -705,13 +690,11 @@ class IPAddressTest(HttpStatusMixin, APITestCase):
         self.assertEqual(IPAddress.objects.count(), 2)
         self.assertEqual(IPAddress.objects.count(), 2)
 
 
 
 
-class VLANGroupTest(HttpStatusMixin, APITestCase):
+class VLANGroupTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(VLANGroupTest, self).setUp()
 
 
         self.vlangroup1 = VLANGroup.objects.create(name='Test VLAN Group 1', slug='test-vlan-group-1')
         self.vlangroup1 = VLANGroup.objects.create(name='Test VLAN Group 1', slug='test-vlan-group-1')
         self.vlangroup2 = VLANGroup.objects.create(name='Test VLAN Group 2', slug='test-vlan-group-2')
         self.vlangroup2 = VLANGroup.objects.create(name='Test VLAN Group 2', slug='test-vlan-group-2')
@@ -798,13 +781,11 @@ class VLANGroupTest(HttpStatusMixin, APITestCase):
         self.assertEqual(VLANGroup.objects.count(), 2)
         self.assertEqual(VLANGroup.objects.count(), 2)
 
 
 
 
-class VLANTest(HttpStatusMixin, APITestCase):
+class VLANTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(VLANTest, self).setUp()
 
 
         self.vlan1 = VLAN.objects.create(vid=1, name='Test VLAN 1')
         self.vlan1 = VLAN.objects.create(vid=1, name='Test VLAN 1')
         self.vlan2 = VLAN.objects.create(vid=2, name='Test VLAN 2')
         self.vlan2 = VLAN.objects.create(vid=2, name='Test VLAN 2')
@@ -891,13 +872,11 @@ class VLANTest(HttpStatusMixin, APITestCase):
         self.assertEqual(VLAN.objects.count(), 2)
         self.assertEqual(VLAN.objects.count(), 2)
 
 
 
 
-class ServiceTest(HttpStatusMixin, APITestCase):
+class ServiceTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(ServiceTest, self).setUp()
 
 
         site = Site.objects.create(name='Test Site 1', slug='test-site-1')
         site = Site.objects.create(name='Test Site 1', slug='test-site-1')
         manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1')
         manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1')

+ 11 - 18
netbox/secrets/tests/test_api.py

@@ -2,15 +2,12 @@ from __future__ import unicode_literals
 
 
 import base64
 import base64
 
 
-from django.contrib.auth.models import User
 from django.urls import reverse
 from django.urls import reverse
 from rest_framework import status
 from rest_framework import status
-from rest_framework.test import APITestCase
 
 
 from dcim.models import Device, DeviceRole, DeviceType, Manufacturer, Site
 from dcim.models import Device, DeviceRole, DeviceType, Manufacturer, Site
 from secrets.models import Secret, SecretRole, SessionKey, UserKey
 from secrets.models import Secret, SecretRole, SessionKey, UserKey
-from users.models import Token
-from utilities.testing import HttpStatusMixin
+from utilities.testing import APITestCase
 
 
 # Dummy RSA key pair for testing use only
 # Dummy RSA key pair for testing use only
 PRIVATE_KEY = """-----BEGIN RSA PRIVATE KEY-----
 PRIVATE_KEY = """-----BEGIN RSA PRIVATE KEY-----
@@ -52,13 +49,11 @@ qQIDAQAB
 -----END PUBLIC KEY-----"""
 -----END PUBLIC KEY-----"""
 
 
 
 
-class SecretRoleTest(HttpStatusMixin, APITestCase):
+class SecretRoleTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(SecretRoleTest, self).setUp()
 
 
         self.secretrole1 = SecretRole.objects.create(name='Test Secret Role 1', slug='test-secret-role-1')
         self.secretrole1 = SecretRole.objects.create(name='Test Secret Role 1', slug='test-secret-role-1')
         self.secretrole2 = SecretRole.objects.create(name='Test Secret Role 2', slug='test-secret-role-2')
         self.secretrole2 = SecretRole.objects.create(name='Test Secret Role 2', slug='test-secret-role-2')
@@ -145,21 +140,20 @@ class SecretRoleTest(HttpStatusMixin, APITestCase):
         self.assertEqual(SecretRole.objects.count(), 2)
         self.assertEqual(SecretRole.objects.count(), 2)
 
 
 
 
-class SecretTest(HttpStatusMixin, APITestCase):
+class SecretTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
+        super(SecretTest, self).setUp()
 
 
-        userkey = UserKey(user=user, public_key=PUBLIC_KEY)
+        userkey = UserKey(user=self.user, public_key=PUBLIC_KEY)
         userkey.save()
         userkey.save()
         self.master_key = userkey.get_master_key(PRIVATE_KEY)
         self.master_key = userkey.get_master_key(PRIVATE_KEY)
         session_key = SessionKey(userkey=userkey)
         session_key = SessionKey(userkey=userkey)
         session_key.save(self.master_key)
         session_key.save(self.master_key)
 
 
         self.header = {
         self.header = {
-            'HTTP_AUTHORIZATION': 'Token {}'.format(token.key),
+            'HTTP_AUTHORIZATION': 'Token {}'.format(self.token.key),
             'HTTP_X_SESSION_KEY': base64.b64encode(session_key.key),
             'HTTP_X_SESSION_KEY': base64.b64encode(session_key.key),
         }
         }
 
 
@@ -288,21 +282,20 @@ class SecretTest(HttpStatusMixin, APITestCase):
         self.assertEqual(Secret.objects.count(), 2)
         self.assertEqual(Secret.objects.count(), 2)
 
 
 
 
-class GetSessionKeyTest(HttpStatusMixin, APITestCase):
+class GetSessionKeyTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
+        super(GetSessionKeyTest, self).setUp()
 
 
-        userkey = UserKey(user=user, public_key=PUBLIC_KEY)
+        userkey = UserKey(user=self.user, public_key=PUBLIC_KEY)
         userkey.save()
         userkey.save()
         master_key = userkey.get_master_key(PRIVATE_KEY)
         master_key = userkey.get_master_key(PRIVATE_KEY)
         self.session_key = SessionKey(userkey=userkey)
         self.session_key = SessionKey(userkey=userkey)
         self.session_key.save(master_key)
         self.session_key.save(master_key)
 
 
         self.header = {
         self.header = {
-            'HTTP_AUTHORIZATION': 'Token {}'.format(token.key),
+            'HTTP_AUTHORIZATION': 'Token {}'.format(self.token.key),
         }
         }
 
 
     def test_get_session_key(self):
     def test_get_session_key(self):

+ 5 - 12
netbox/tenancy/tests/test_api.py

@@ -1,22 +1,17 @@
 from __future__ import unicode_literals
 from __future__ import unicode_literals
 
 
-from django.contrib.auth.models import User
 from django.urls import reverse
 from django.urls import reverse
 from rest_framework import status
 from rest_framework import status
-from rest_framework.test import APITestCase
 
 
 from tenancy.models import Tenant, TenantGroup
 from tenancy.models import Tenant, TenantGroup
-from users.models import Token
-from utilities.testing import HttpStatusMixin
+from utilities.testing import APITestCase
 
 
 
 
-class TenantGroupTest(HttpStatusMixin, APITestCase):
+class TenantGroupTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(TenantGroupTest, self).setUp()
 
 
         self.tenantgroup1 = TenantGroup.objects.create(name='Test Tenant Group 1', slug='test-tenant-group-1')
         self.tenantgroup1 = TenantGroup.objects.create(name='Test Tenant Group 1', slug='test-tenant-group-1')
         self.tenantgroup2 = TenantGroup.objects.create(name='Test Tenant Group 2', slug='test-tenant-group-2')
         self.tenantgroup2 = TenantGroup.objects.create(name='Test Tenant Group 2', slug='test-tenant-group-2')
@@ -103,13 +98,11 @@ class TenantGroupTest(HttpStatusMixin, APITestCase):
         self.assertEqual(TenantGroup.objects.count(), 2)
         self.assertEqual(TenantGroup.objects.count(), 2)
 
 
 
 
-class TenantTest(HttpStatusMixin, APITestCase):
+class TenantTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(TenantTest, self).setUp()
 
 
         self.tenantgroup1 = TenantGroup.objects.create(name='Test Tenant Group 1', slug='test-tenant-group-1')
         self.tenantgroup1 = TenantGroup.objects.create(name='Test Tenant Group 1', slug='test-tenant-group-1')
         self.tenantgroup2 = TenantGroup.objects.create(name='Test Tenant Group 2', slug='test-tenant-group-2')
         self.tenantgroup2 = TenantGroup.objects.create(name='Test Tenant Group 2', slug='test-tenant-group-2')

+ 18 - 4
netbox/utilities/testing.py

@@ -1,11 +1,25 @@
 from __future__ import unicode_literals
 from __future__ import unicode_literals
 
 
+from django.contrib.auth.models import User
+from rest_framework.test import APITestCase as _APITestCase
+
+from users.models import Token
+
+
+class APITestCase(_APITestCase):
+
+    def setUp(self):
+        """
+        Create a superuser and token for API calls.
+        """
+        self.user = User.objects.create(username='testuser', is_superuser=True)
+        self.token = Token.objects.create(user=self.user)
+        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(self.token.key)}
 
 
-class HttpStatusMixin(object):
-    """
-    Custom mixin to provide more detail in the event of an unexpected HTTP response.
-    """
     def assertHttpStatus(self, response, expected_status):
     def assertHttpStatus(self, response, expected_status):
+        """
+        Provide more detail in the event of an unexpected HTTP response.
+        """
         err_message = "Expected HTTP status {}; received {}: {}"
         err_message = "Expected HTTP status {}; received {}: {}"
         self.assertEqual(response.status_code, expected_status, err_message.format(
         self.assertEqual(response.status_code, expected_status, err_message.format(
             expected_status, response.status_code, response.data
             expected_status, response.status_code, response.data

+ 9 - 20
netbox/virtualization/tests/test_api.py

@@ -1,22 +1,17 @@
 from __future__ import unicode_literals
 from __future__ import unicode_literals
 
 
-from django.contrib.auth.models import User
 from django.urls import reverse
 from django.urls import reverse
 from rest_framework import status
 from rest_framework import status
-from rest_framework.test import APITestCase
 
 
-from users.models import Token
-from utilities.testing import HttpStatusMixin
+from utilities.testing import APITestCase
 from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualMachine
 from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualMachine
 
 
 
 
-class ClusterTypeTest(HttpStatusMixin, APITestCase):
+class ClusterTypeTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(ClusterTypeTest, self).setUp()
 
 
         self.clustertype1 = ClusterType.objects.create(name='Test Cluster Type 1', slug='test-cluster-type-1')
         self.clustertype1 = ClusterType.objects.create(name='Test Cluster Type 1', slug='test-cluster-type-1')
         self.clustertype2 = ClusterType.objects.create(name='Test Cluster Type 2', slug='test-cluster-type-2')
         self.clustertype2 = ClusterType.objects.create(name='Test Cluster Type 2', slug='test-cluster-type-2')
@@ -103,13 +98,11 @@ class ClusterTypeTest(HttpStatusMixin, APITestCase):
         self.assertEqual(ClusterType.objects.count(), 2)
         self.assertEqual(ClusterType.objects.count(), 2)
 
 
 
 
-class ClusterGroupTest(HttpStatusMixin, APITestCase):
+class ClusterGroupTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(ClusterGroupTest, self).setUp()
 
 
         self.clustergroup1 = ClusterGroup.objects.create(name='Test Cluster Group 1', slug='test-cluster-group-1')
         self.clustergroup1 = ClusterGroup.objects.create(name='Test Cluster Group 1', slug='test-cluster-group-1')
         self.clustergroup2 = ClusterGroup.objects.create(name='Test Cluster Group 2', slug='test-cluster-group-2')
         self.clustergroup2 = ClusterGroup.objects.create(name='Test Cluster Group 2', slug='test-cluster-group-2')
@@ -196,13 +189,11 @@ class ClusterGroupTest(HttpStatusMixin, APITestCase):
         self.assertEqual(ClusterGroup.objects.count(), 2)
         self.assertEqual(ClusterGroup.objects.count(), 2)
 
 
 
 
-class ClusterTest(HttpStatusMixin, APITestCase):
+class ClusterTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(ClusterTest, self).setUp()
 
 
         cluster_type = ClusterType.objects.create(name='Test Cluster Type 1', slug='test-cluster-type-1')
         cluster_type = ClusterType.objects.create(name='Test Cluster Type 1', slug='test-cluster-type-1')
         cluster_group = ClusterGroup.objects.create(name='Test Cluster Group 1', slug='test-cluster-group-1')
         cluster_group = ClusterGroup.objects.create(name='Test Cluster Group 1', slug='test-cluster-group-1')
@@ -301,13 +292,11 @@ class ClusterTest(HttpStatusMixin, APITestCase):
         self.assertEqual(Cluster.objects.count(), 2)
         self.assertEqual(Cluster.objects.count(), 2)
 
 
 
 
-class VirtualMachineTest(HttpStatusMixin, APITestCase):
+class VirtualMachineTest(APITestCase):
 
 
     def setUp(self):
     def setUp(self):
 
 
-        user = User.objects.create(username='testuser', is_superuser=True)
-        token = Token.objects.create(user=user)
-        self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
+        super(VirtualMachineTest, self).setUp()
 
 
         cluster_type = ClusterType.objects.create(name='Test Cluster Type 1', slug='test-cluster-type-1')
         cluster_type = ClusterType.objects.create(name='Test Cluster Type 1', slug='test-cluster-type-1')
         cluster_group = ClusterGroup.objects.create(name='Test Cluster Group 1', slug='test-cluster-group-1')
         cluster_group = ClusterGroup.objects.create(name='Test Cluster Group 1', slug='test-cluster-group-1')