Skip to content

Commit c858d2a

Browse files
committed
Add tests for Owner & OwnerGroup
1 parent 3a7b4ac commit c858d2a

File tree

5 files changed

+335
-3
lines changed

5 files changed

+335
-3
lines changed

netbox/users/graphql/types.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,4 +53,4 @@ class OwnerGroupType(BaseObjectType):
5353
pagination=True
5454
)
5555
class OwnerType(BaseObjectType):
56-
group: OwnerGroupType
56+
group: OwnerGroupType | None

netbox/users/tests/test_api.py

Lines changed: 110 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
from core.models import ObjectType
55
from users.constants import TOKEN_DEFAULT_LENGTH
6-
from users.models import Group, ObjectPermission, Token, User
6+
from users.models import Group, ObjectPermission, Owner, OwnerGroup, Token, User
77
from utilities.data import deepmerge
88
from utilities.testing import APIViewTestCases, APITestCase, create_test_user
99

@@ -448,3 +448,112 @@ def test_patch(self):
448448
self.assertDictEqual(response.data, new_data)
449449
userconfig.refresh_from_db()
450450
self.assertDictEqual(userconfig.data, new_data)
451+
452+
453+
class OwnerGroupTest(APIViewTestCases.APIViewTestCase):
454+
model = OwnerGroup
455+
brief_fields = ['description', 'display', 'id', 'name', 'url']
456+
bulk_update_data = {
457+
'description': 'New description',
458+
}
459+
460+
@classmethod
461+
def setUpTestData(cls):
462+
owner_groups = (
463+
OwnerGroup(name='Owner Group 1'),
464+
OwnerGroup(name='Owner Group 2'),
465+
OwnerGroup(name='Owner Group 3'),
466+
)
467+
OwnerGroup.objects.bulk_create(owner_groups)
468+
469+
cls.create_data = [
470+
{
471+
'name': 'Owner Group 4',
472+
'description': 'Fourth owner group',
473+
},
474+
{
475+
'name': 'Owner Group 5',
476+
'description': 'Fifth owner group',
477+
},
478+
{
479+
'name': 'Owner Group 6',
480+
'description': 'Sixth owner group',
481+
},
482+
]
483+
484+
485+
class OwnerTest(APIViewTestCases.APIViewTestCase):
486+
model = Owner
487+
brief_fields = ['description', 'display', 'id', 'name', 'url']
488+
489+
@classmethod
490+
def setUpTestData(cls):
491+
owner_groups = (
492+
OwnerGroup(name='Owner Group 1'),
493+
OwnerGroup(name='Owner Group 2'),
494+
OwnerGroup(name='Owner Group 3'),
495+
OwnerGroup(name='Owner Group 4'),
496+
)
497+
OwnerGroup.objects.bulk_create(owner_groups)
498+
499+
groups = (
500+
Group(name='Group 1'),
501+
Group(name='Group 2'),
502+
Group(name='Group 3'),
503+
Group(name='Group 4'),
504+
)
505+
Group.objects.bulk_create(groups)
506+
507+
users = (
508+
User(username='User 1'),
509+
User(username='User 2'),
510+
User(username='User 3'),
511+
User(username='User 4'),
512+
)
513+
User.objects.bulk_create(users)
514+
515+
owners = (
516+
Owner(name='Owner 1'),
517+
Owner(name='Owner 2'),
518+
Owner(name='Owner 3'),
519+
)
520+
Owner.objects.bulk_create(owners)
521+
522+
# Assign users and groups to owners
523+
owners[0].user_groups.add(groups[0])
524+
owners[1].user_groups.add(groups[1])
525+
owners[2].user_groups.add(groups[2])
526+
owners[0].users.add(users[0])
527+
owners[1].users.add(users[1])
528+
owners[2].users.add(users[2])
529+
530+
cls.create_data = [
531+
{
532+
'name': 'Owner 4',
533+
'description': 'Fourth owner',
534+
'group': owner_groups[3].pk,
535+
'user_groups': [groups[3].pk],
536+
'users': [users[3].pk],
537+
},
538+
{
539+
'name': 'Owner 5',
540+
'description': 'Fifth owner',
541+
'group': owner_groups[3].pk,
542+
'user_groups': [groups[3].pk],
543+
'users': [users[3].pk],
544+
},
545+
{
546+
'name': 'Owner 6',
547+
'description': 'Sixth owner',
548+
'group': owner_groups[3].pk,
549+
'user_groups': [groups[3].pk],
550+
'users': [users[3].pk],
551+
},
552+
]
553+
554+
cls.bulk_update_data = {
555+
'group': owner_groups[3].pk,
556+
'user_groups': [groups[3].pk],
557+
'users': [users[3].pk],
558+
'description': 'New description',
559+
}

netbox/users/tests/test_filtersets.py

Lines changed: 104 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
from core.models import ObjectType
77
from users import filtersets
8-
from users.models import Group, ObjectPermission, Token, User
8+
from users.models import Group, ObjectPermission, Owner, OwnerGroup, Token, User
99
from utilities.testing import BaseFilterSetTests
1010

1111

@@ -348,3 +348,106 @@ def test_write_enabled(self):
348348
def test_description(self):
349349
params = {'description': ['foobar1', 'foobar2']}
350350
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
351+
352+
353+
class OwnerGroupTestCase(TestCase, BaseFilterSetTests):
354+
queryset = OwnerGroup.objects.all()
355+
filterset = filtersets.OwnerGroupFilterSet
356+
357+
@classmethod
358+
def setUpTestData(cls):
359+
360+
owner_groups = (
361+
OwnerGroup(name='Owner Group 1', description='Foo'),
362+
OwnerGroup(name='Owner Group 2', description='Bar'),
363+
OwnerGroup(name='Owner Group 3', description='Baz'),
364+
)
365+
OwnerGroup.objects.bulk_create(owner_groups)
366+
367+
def test_q(self):
368+
params = {'q': 'foo'}
369+
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1)
370+
371+
def test_name(self):
372+
params = {'name': ['Owner Group 1', 'Owner Group 2']}
373+
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
374+
375+
def test_description(self):
376+
params = {'description': ['Foo', 'Bar']}
377+
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
378+
379+
380+
class OwnerTestCase(TestCase, BaseFilterSetTests):
381+
queryset = Owner.objects.all()
382+
filterset = filtersets.OwnerFilterSet
383+
384+
@classmethod
385+
def setUpTestData(cls):
386+
owner_groups = (
387+
OwnerGroup(name='Owner Group 1'),
388+
OwnerGroup(name='Owner Group 2'),
389+
OwnerGroup(name='Owner Group 3'),
390+
)
391+
OwnerGroup.objects.bulk_create(owner_groups)
392+
393+
groups = (
394+
Group(name='Group 1'),
395+
Group(name='Group 2'),
396+
Group(name='Group 3'),
397+
)
398+
Group.objects.bulk_create(groups)
399+
400+
users = (
401+
User(username='User 1'),
402+
User(username='User 2'),
403+
User(username='User 3'),
404+
)
405+
User.objects.bulk_create(users)
406+
407+
owners = (
408+
Owner(name='Owner 1', group=owner_groups[0], description='Foo'),
409+
Owner(name='Owner 2', group=owner_groups[1], description='Bar'),
410+
Owner(name='Owner 3', group=owner_groups[2], description='Baz'),
411+
)
412+
Owner.objects.bulk_create(owners)
413+
414+
# Assign users and groups to owners
415+
owners[0].user_groups.add(groups[0])
416+
owners[1].user_groups.add(groups[1])
417+
owners[2].user_groups.add(groups[2])
418+
owners[0].users.add(users[0])
419+
owners[1].users.add(users[1])
420+
owners[2].users.add(users[2])
421+
422+
def test_q(self):
423+
params = {'q': 'foo'}
424+
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1)
425+
426+
def test_name(self):
427+
params = {'name': ['Owner 1', 'Owner 2']}
428+
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
429+
430+
def test_description(self):
431+
params = {'description': ['Foo', 'Bar']}
432+
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
433+
434+
def test_group(self):
435+
owner_groups = OwnerGroup.objects.order_by('id')[:2]
436+
params = {'group_id': [owner_groups[0].pk, owner_groups[1].pk]}
437+
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
438+
params = {'group': [owner_groups[0].name, owner_groups[1].name]}
439+
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
440+
441+
def test_user_group(self):
442+
group = Group.objects.order_by('id')[:2]
443+
params = {'user_group_id': [group[0].pk, group[1].pk]}
444+
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
445+
params = {'user_group': [group[0].name, group[1].name]}
446+
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
447+
448+
def test_user(self):
449+
users = User.objects.order_by('id')[:2]
450+
params = {'user_id': [users[0].pk, users[1].pk]}
451+
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
452+
params = {'user': [users[0].username, users[1].username]}
453+
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)

netbox/users/tests/test_views.py

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,3 +255,108 @@ def setUpTestData(cls):
255255
cls.bulk_edit_data = {
256256
'description': 'New description',
257257
}
258+
259+
260+
class OwnerGroupTestCase(ViewTestCases.AdminModelViewTestCase):
261+
model = OwnerGroup
262+
263+
@classmethod
264+
def setUpTestData(cls):
265+
owner_groups = (
266+
OwnerGroup(name='Owner Group 1'),
267+
OwnerGroup(name='Owner Group 2'),
268+
OwnerGroup(name='Owner Group 3'),
269+
)
270+
OwnerGroup.objects.bulk_create(owner_groups)
271+
272+
cls.form_data = {
273+
'name': 'Owner Group X',
274+
'description': 'A new owner group',
275+
}
276+
277+
cls.csv_data = (
278+
"name,description",
279+
"Owner Group 4,Foo",
280+
"Owner Group 5,Bar",
281+
"Owner Group 6,Baz",
282+
)
283+
284+
cls.csv_update_data = (
285+
"id,description",
286+
f"{owner_groups[0].pk},Foo",
287+
f"{owner_groups[1].pk},Bar",
288+
f"{owner_groups[2].pk},Baz",
289+
)
290+
291+
cls.bulk_edit_data = {
292+
'description': 'New description',
293+
}
294+
295+
296+
class OwnerTestCase(ViewTestCases.AdminModelViewTestCase):
297+
model = Owner
298+
299+
@classmethod
300+
def setUpTestData(cls):
301+
groups = (
302+
Group(name='Group 1'),
303+
Group(name='Group 2'),
304+
Group(name='Group 3'),
305+
)
306+
Group.objects.bulk_create(groups)
307+
308+
users = (
309+
User(username='User 1'),
310+
User(username='User 2'),
311+
User(username='User 3'),
312+
)
313+
User.objects.bulk_create(users)
314+
315+
owner_groups = (
316+
OwnerGroup(name='Owner Group 1'),
317+
OwnerGroup(name='Owner Group 2'),
318+
OwnerGroup(name='Owner Group 3'),
319+
OwnerGroup(name='Owner Group 4'),
320+
)
321+
OwnerGroup.objects.bulk_create(owner_groups)
322+
323+
owners = (
324+
Owner(name='Owner 1'),
325+
Owner(name='Owner 2'),
326+
Owner(name='Owner 3'),
327+
)
328+
Owner.objects.bulk_create(owners)
329+
330+
# Assign users and groups to owners
331+
owners[0].user_groups.add(groups[0])
332+
owners[1].user_groups.add(groups[1])
333+
owners[2].user_groups.add(groups[2])
334+
owners[0].users.add(users[0])
335+
owners[1].users.add(users[1])
336+
owners[2].users.add(users[2])
337+
338+
cls.form_data = {
339+
'name': 'Owner X',
340+
'group': owner_groups[3].pk,
341+
'user_groups': [groups[0].pk, groups[1].pk],
342+
'users': [users[0].pk, users[1].pk],
343+
'description': 'A new owner',
344+
}
345+
346+
cls.csv_data = (
347+
"name,group,description",
348+
"Owner 4,Owner Group 4,Foo",
349+
"Owner 5,Owner Group 4,Bar",
350+
"Owner 6,Owner Group 4,Baz",
351+
)
352+
353+
cls.csv_update_data = (
354+
"id,description",
355+
f"{owners[0].pk},Foo",
356+
f"{owners[1].pk},Bar",
357+
f"{owners[2].pk},Baz",
358+
)
359+
360+
cls.bulk_edit_data = {
361+
'description': 'New description',
362+
}

netbox/utilities/testing/views.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1113,6 +1113,21 @@ class OrganizationalObjectViewTestCase(
11131113
"""
11141114
maxDiff = None
11151115

1116+
class AdminModelViewTestCase(
1117+
GetObjectViewTestCase,
1118+
CreateObjectViewTestCase,
1119+
EditObjectViewTestCase,
1120+
DeleteObjectViewTestCase,
1121+
ListObjectsViewTestCase,
1122+
BulkImportObjectsViewTestCase,
1123+
BulkEditObjectsViewTestCase,
1124+
BulkDeleteObjectsViewTestCase,
1125+
):
1126+
"""
1127+
TestCase suitable for testing all standard View functions for objects which inherit from AdminModel.
1128+
"""
1129+
maxDiff = None
1130+
11161131
class DeviceComponentTemplateViewTestCase(
11171132
EditObjectViewTestCase,
11181133
DeleteObjectViewTestCase,

0 commit comments

Comments
 (0)