Skip to content

Commit 688f1fc

Browse files
committed
chore(tests): Add tests for ACL creation
Add test cases to validate AccessList creation and uniqueness for VirtualChassis and VirtualMachine objects. Extend coverage by ensuring proper handling of duplicate names and enforcing unique constraints.
1 parent ddaae26 commit 688f1fc

File tree

1 file changed

+128
-9
lines changed

1 file changed

+128
-9
lines changed

netbox_acls/tests/models/test_accesslists.py

Lines changed: 128 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
from itertools import cycle
22

3-
from dcim.models import Device
3+
from dcim.models import Device, VirtualChassis
44
from django.contrib.contenttypes.models import ContentType
55
from django.core.exceptions import ValidationError
66
from ipam.models import Prefix
7+
from virtualization.models import VirtualMachine
78

89
from netbox_acls.models import AccessList
910

@@ -20,6 +21,84 @@ class TestAccessList(BaseTestCase):
2021
"default_action": "permit",
2122
}
2223

24+
def test_accesslist_standard_creation(self):
25+
"""
26+
Test that AccessList Standard creation passes validation.
27+
"""
28+
acl_name = "Test-ACL-Standard-Type"
29+
30+
created_acl = AccessList(
31+
name=acl_name,
32+
assigned_object=self.device1,
33+
type="standard",
34+
default_action="deny",
35+
)
36+
37+
self.assertTrue(isinstance(created_acl, AccessList), True)
38+
self.assertEqual(created_acl.name, acl_name)
39+
self.assertEqual(created_acl.type, "standard")
40+
self.assertEqual(created_acl.default_action, "deny")
41+
self.assertEqual(isinstance(created_acl.assigned_object, Device), True)
42+
self.assertEqual(created_acl.assigned_object, self.device1)
43+
44+
def test_accesslist_extended_creation(self):
45+
"""
46+
Test that AccessList Extended creation passes validation.
47+
"""
48+
acl_name = "Test-ACL-Extended-Type"
49+
50+
created_acl = AccessList(
51+
name=acl_name,
52+
assigned_object=self.device2,
53+
type="extended",
54+
default_action="permit",
55+
)
56+
57+
self.assertTrue(isinstance(created_acl, AccessList))
58+
self.assertEqual(created_acl.name, acl_name)
59+
self.assertEqual(created_acl.type, "extended")
60+
self.assertEqual(created_acl.default_action, "permit")
61+
self.assertEqual(isinstance(created_acl.assigned_object, Device), True)
62+
self.assertEqual(created_acl.assigned_object, self.device2)
63+
64+
def test_accesslist_creation_with_virtual_chassis(self):
65+
"""
66+
Test that AccessList creation with an assigned virtual chassis passes validation.
67+
"""
68+
acl_name = "Test-ACL-with-Virtual-Machine"
69+
70+
created_acl = AccessList(
71+
name=acl_name,
72+
assigned_object=self.virtual_chassis1,
73+
**self.common_acl_params,
74+
)
75+
76+
self.assertTrue(isinstance(created_acl, AccessList))
77+
self.assertEqual(created_acl.name, acl_name)
78+
self.assertEqual(created_acl.type, "extended")
79+
self.assertEqual(created_acl.default_action, "permit")
80+
self.assertEqual(isinstance(created_acl.assigned_object, VirtualChassis), True)
81+
self.assertEqual(created_acl.assigned_object, self.virtual_chassis1)
82+
83+
def test_accesslist_creation_with_virtual_machine(self):
84+
"""
85+
Test that AccessList creation with an assigned virtual machine passes validation.
86+
"""
87+
acl_name = "Test-ACL-with-Virtual-Machine"
88+
89+
created_acl = AccessList(
90+
name=acl_name,
91+
assigned_object=self.virtual_machine1,
92+
**self.common_acl_params,
93+
)
94+
95+
self.assertTrue(isinstance(created_acl, AccessList))
96+
self.assertEqual(created_acl.name, acl_name)
97+
self.assertEqual(created_acl.type, "extended")
98+
self.assertEqual(created_acl.default_action, "permit")
99+
self.assertEqual(isinstance(created_acl.assigned_object, VirtualMachine), True)
100+
self.assertEqual(created_acl.assigned_object, self.virtual_machine1)
101+
23102
def test_wrong_assigned_object_type_fail(self):
24103
"""
25104
Test that AccessList cannot be assigned to an object type other than Device, VirtualChassis, VirtualMachine,
@@ -57,13 +136,22 @@ def test_duplicate_name_success(self):
57136
**self.common_acl_params,
58137
)
59138
device_acl.full_clean()
60-
# TODO: test_duplicate_name_success - VirtualChassis, VirtualMachine & Cluster
61-
# vc_acl = AccessList(
62-
# "name": "GOOD-DUPLICATE-ACL",
63-
# assigned_object_type=ContentType.objects.get_for_model(VirtualChassis),
64-
# **self.common_acl_params,
65-
# )
66-
# vc_acl.full_clean()
139+
140+
# Virtual Chassis
141+
vc_acl = AccessList(
142+
name="GOOD-DUPLICATE-ACL",
143+
assigned_object=self.virtual_chassis1,
144+
**self.common_acl_params,
145+
)
146+
vc_acl.full_clean()
147+
148+
# Virtual Machine
149+
vm_acl = AccessList(
150+
name="GOOD-DUPLICATE-ACL",
151+
assigned_object=self.virtual_machine1,
152+
**self.common_acl_params,
153+
)
154+
vm_acl.full_clean()
67155

68156
def test_alphanumeric_plus_fail(self):
69157
"""
@@ -96,7 +184,38 @@ def test_duplicate_name_per_device_fail(self):
96184
acl_2 = AccessList(**params)
97185
with self.assertRaises(ValidationError):
98186
acl_2.full_clean()
99-
# TODO: test_duplicate_name_fail - VirtualChassis & Cluster
187+
188+
def test_duplicate_name_per_virtual_chassis_fail(self):
189+
"""
190+
Test that AccessList names must be unique per virtual chassis.
191+
"""
192+
params = {
193+
"name": "FAIL-DUPLICATE-ACL",
194+
"assigned_object_type": ContentType.objects.get_for_model(VirtualChassis),
195+
"assigned_object_id": self.virtual_chassis1.id,
196+
**self.common_acl_params,
197+
}
198+
acl_1 = AccessList.objects.create(**params)
199+
acl_1.save()
200+
acl_2 = AccessList(**params)
201+
with self.assertRaises(ValidationError):
202+
acl_2.full_clean()
203+
204+
def test_duplicate_name_per_virtual_machine_fail(self):
205+
"""
206+
Test that AccessList names must be unique per virtual machine.
207+
"""
208+
params = {
209+
"name": "FAIL-DUPLICATE-ACL",
210+
"assigned_object_type": ContentType.objects.get_for_model(VirtualMachine),
211+
"assigned_object_id": self.virtual_machine1.id,
212+
**self.common_acl_params,
213+
}
214+
acl_1 = AccessList.objects.create(**params)
215+
acl_1.save()
216+
acl_2 = AccessList(**params)
217+
with self.assertRaises(ValidationError):
218+
acl_2.full_clean()
100219

101220
def test_valid_acl_choices(self):
102221
"""

0 commit comments

Comments
 (0)