|
|
@@ -6,15 +6,14 @@ from django.contrib.contenttypes.models import ContentType
|
|
|
from django.test import TestCase
|
|
|
|
|
|
from circuits.models import Provider
|
|
|
-from core.choices import ManagedFileRootPathChoices
|
|
|
-from core.models import ObjectType
|
|
|
+from core.choices import ManagedFileRootPathChoices, ObjectChangeActionChoices
|
|
|
+from core.models import ObjectChange, ObjectType
|
|
|
from dcim.filtersets import SiteFilterSet
|
|
|
from dcim.models import DeviceRole, DeviceType, Manufacturer, Platform, Rack, Region, Site, SiteGroup
|
|
|
from dcim.models import Location
|
|
|
from extras.choices import *
|
|
|
from extras.filtersets import *
|
|
|
from extras.models import *
|
|
|
-from ipam.models import IPAddress
|
|
|
from tenancy.models import Tenant, TenantGroup
|
|
|
from utilities.testing import BaseFilterSetTests, ChangeLoggedFilterSetTests, create_tags
|
|
|
from virtualization.models import Cluster, ClusterGroup, ClusterType
|
|
|
@@ -1280,102 +1279,6 @@ class TagTestCase(TestCase, ChangeLoggedFilterSetTests):
|
|
|
)
|
|
|
|
|
|
|
|
|
-class ObjectChangeTestCase(TestCase, BaseFilterSetTests):
|
|
|
- queryset = ObjectChange.objects.all()
|
|
|
- filterset = ObjectChangeFilterSet
|
|
|
- ignore_fields = ('prechange_data', 'postchange_data')
|
|
|
-
|
|
|
- @classmethod
|
|
|
- def setUpTestData(cls):
|
|
|
- users = (
|
|
|
- User(username='user1'),
|
|
|
- User(username='user2'),
|
|
|
- User(username='user3'),
|
|
|
- )
|
|
|
- User.objects.bulk_create(users)
|
|
|
-
|
|
|
- site = Site.objects.create(name='Test Site 1', slug='test-site-1')
|
|
|
- ipaddress = IPAddress.objects.create(address='192.0.2.1/24')
|
|
|
-
|
|
|
- object_changes = (
|
|
|
- ObjectChange(
|
|
|
- user=users[0],
|
|
|
- user_name=users[0].username,
|
|
|
- request_id=uuid.uuid4(),
|
|
|
- action=ObjectChangeActionChoices.ACTION_CREATE,
|
|
|
- changed_object=site,
|
|
|
- object_repr=str(site),
|
|
|
- postchange_data={'name': site.name, 'slug': site.slug}
|
|
|
- ),
|
|
|
- ObjectChange(
|
|
|
- user=users[0],
|
|
|
- user_name=users[0].username,
|
|
|
- request_id=uuid.uuid4(),
|
|
|
- action=ObjectChangeActionChoices.ACTION_UPDATE,
|
|
|
- changed_object=site,
|
|
|
- object_repr=str(site),
|
|
|
- postchange_data={'name': site.name, 'slug': site.slug}
|
|
|
- ),
|
|
|
- ObjectChange(
|
|
|
- user=users[1],
|
|
|
- user_name=users[1].username,
|
|
|
- request_id=uuid.uuid4(),
|
|
|
- action=ObjectChangeActionChoices.ACTION_DELETE,
|
|
|
- changed_object=site,
|
|
|
- object_repr=str(site),
|
|
|
- postchange_data={'name': site.name, 'slug': site.slug}
|
|
|
- ),
|
|
|
- ObjectChange(
|
|
|
- user=users[1],
|
|
|
- user_name=users[1].username,
|
|
|
- request_id=uuid.uuid4(),
|
|
|
- action=ObjectChangeActionChoices.ACTION_CREATE,
|
|
|
- changed_object=ipaddress,
|
|
|
- object_repr=str(ipaddress),
|
|
|
- postchange_data={'address': ipaddress.address, 'status': ipaddress.status}
|
|
|
- ),
|
|
|
- ObjectChange(
|
|
|
- user=users[2],
|
|
|
- user_name=users[2].username,
|
|
|
- request_id=uuid.uuid4(),
|
|
|
- action=ObjectChangeActionChoices.ACTION_UPDATE,
|
|
|
- changed_object=ipaddress,
|
|
|
- object_repr=str(ipaddress),
|
|
|
- postchange_data={'address': ipaddress.address, 'status': ipaddress.status}
|
|
|
- ),
|
|
|
- ObjectChange(
|
|
|
- user=users[2],
|
|
|
- user_name=users[2].username,
|
|
|
- request_id=uuid.uuid4(),
|
|
|
- action=ObjectChangeActionChoices.ACTION_DELETE,
|
|
|
- changed_object=ipaddress,
|
|
|
- object_repr=str(ipaddress),
|
|
|
- postchange_data={'address': ipaddress.address, 'status': ipaddress.status}
|
|
|
- ),
|
|
|
- )
|
|
|
- ObjectChange.objects.bulk_create(object_changes)
|
|
|
-
|
|
|
- def test_q(self):
|
|
|
- params = {'q': 'Site 1'}
|
|
|
- self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3)
|
|
|
-
|
|
|
- def test_user(self):
|
|
|
- params = {'user_id': User.objects.filter(username__in=['user1', 'user2']).values_list('pk', flat=True)}
|
|
|
- self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
|
|
|
- params = {'user': ['user1', 'user2']}
|
|
|
- self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
|
|
|
-
|
|
|
- def test_user_name(self):
|
|
|
- params = {'user_name': ['user1', 'user2']}
|
|
|
- self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
|
|
|
-
|
|
|
- def test_changed_object_type(self):
|
|
|
- params = {'changed_object_type': 'dcim.site'}
|
|
|
- self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3)
|
|
|
- params = {'changed_object_type_id': [ContentType.objects.get(app_label='dcim', model='site').pk]}
|
|
|
- self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3)
|
|
|
-
|
|
|
-
|
|
|
class ChangeLoggedFilterSetTestCase(TestCase):
|
|
|
"""
|
|
|
Evaluate base ChangeLoggedFilterSet filters using the Site model.
|