Skip to content

Commit 89f66a1

Browse files
committed
refactor(tests): Update test cases to use ACLAssignment model
Replaces `ACLInterfaceAssignment` with `ACLAssignment` in test cases for access lists. Removes legacy object creation for sites, devices, and VMs, simplifying test data setup. Enhances test maintainability by aligning with the unified model structure.
1 parent 681b57b commit 89f66a1

File tree

2 files changed

+17
-176
lines changed

2 files changed

+17
-176
lines changed

netbox_acls/tests/api/test_access_list_rules.py

Lines changed: 0 additions & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
1-
from dcim.models import Device, DeviceRole, DeviceType, Manufacturer, Site
21
from ipam.models import Prefix
32
from utilities.testing import APIViewTestCases
4-
from virtualization.models import Cluster, ClusterType, VirtualMachine
53

64
from netbox_acls.choices import (
75
ACLActionChoices,
@@ -21,70 +19,22 @@ class ACLStandardRuleAPIViewTestCase(APIViewTestCases.APIViewTestCase):
2119
view_namespace = "plugins-api:netbox_acls"
2220
brief_fields = ["access_list", "display", "id", "index", "url"]
2321
user_permissions = (
24-
"dcim.view_site",
25-
"dcim.view_manufacturer",
26-
"dcim.view_devicetype",
27-
"dcim.view_device",
2822
"ipam.view_prefix",
29-
"virtualization.view_cluster",
30-
"virtualization.view_clustergroup",
31-
"virtualization.view_clustertype",
32-
"virtualization.view_virtualmachine",
3323
"netbox_acls.view_accesslist",
3424
)
3525

3626
@classmethod
3727
def setUpTestData(cls):
3828
"""Set up ACL Standard Rule for API view testing."""
39-
site = Site.objects.create(
40-
name="Site 1",
41-
slug="site-1",
42-
)
43-
44-
# Device
45-
manufacturer = Manufacturer.objects.create(
46-
name="Manufacturer 1",
47-
slug="manufacturer-1",
48-
)
49-
device_type = DeviceType.objects.create(
50-
manufacturer=manufacturer,
51-
model="Device Type 1",
52-
)
53-
device_role = DeviceRole.objects.create(
54-
name="Device Role 1",
55-
slug="device-role-1",
56-
)
57-
device = Device.objects.create(
58-
name="Device 1",
59-
site=site,
60-
device_type=device_type,
61-
role=device_role,
62-
)
63-
64-
# Virtual Machine
65-
cluster_type = ClusterType.objects.create(
66-
name="Cluster Type 1",
67-
slug="cluster-type-1",
68-
)
69-
cluster = Cluster.objects.create(
70-
name="Cluster 1",
71-
type=cluster_type,
72-
)
73-
virtual_machine = VirtualMachine.objects.create(
74-
name="VM 1",
75-
cluster=cluster,
76-
)
7729

7830
# AccessList
7931
access_list_device = AccessList.objects.create(
8032
name="testacl1",
81-
assigned_object=device,
8233
type=ACLTypeChoices.TYPE_STANDARD,
8334
default_action=ACLActionChoices.ACTION_DENY,
8435
)
8536
access_list_vm = AccessList.objects.create(
8637
name="testacl2",
87-
assigned_object=virtual_machine,
8838
type=ACLTypeChoices.TYPE_STANDARD,
8939
default_action=ACLActionChoices.ACTION_PERMIT,
9040
)
@@ -161,70 +111,22 @@ class ACLExtendedRuleAPIViewTestCase(APIViewTestCases.APIViewTestCase):
161111
view_namespace = "plugins-api:netbox_acls"
162112
brief_fields = ["access_list", "display", "id", "index", "url"]
163113
user_permissions = (
164-
"dcim.view_site",
165-
"dcim.view_manufacturer",
166-
"dcim.view_devicetype",
167-
"dcim.view_device",
168114
"ipam.view_prefix",
169-
"virtualization.view_cluster",
170-
"virtualization.view_clustergroup",
171-
"virtualization.view_clustertype",
172-
"virtualization.view_virtualmachine",
173115
"netbox_acls.view_accesslist",
174116
)
175117

176118
@classmethod
177119
def setUpTestData(cls):
178120
"""Set up ACL Extended Rule for API view testing."""
179-
site = Site.objects.create(
180-
name="Site 1",
181-
slug="site-1",
182-
)
183-
184-
# Device
185-
manufacturer = Manufacturer.objects.create(
186-
name="Manufacturer 1",
187-
slug="manufacturer-1",
188-
)
189-
device_type = DeviceType.objects.create(
190-
manufacturer=manufacturer,
191-
model="Device Type 1",
192-
)
193-
device_role = DeviceRole.objects.create(
194-
name="Device Role 1",
195-
slug="device-role-1",
196-
)
197-
device = Device.objects.create(
198-
name="Device 1",
199-
site=site,
200-
device_type=device_type,
201-
role=device_role,
202-
)
203-
204-
# Virtual Machine
205-
cluster_type = ClusterType.objects.create(
206-
name="Cluster Type 1",
207-
slug="cluster-type-1",
208-
)
209-
cluster = Cluster.objects.create(
210-
name="Cluster 1",
211-
type=cluster_type,
212-
)
213-
virtual_machine = VirtualMachine.objects.create(
214-
name="VM 1",
215-
cluster=cluster,
216-
)
217121

218122
# AccessList
219123
access_list_device = AccessList.objects.create(
220124
name="testacl1",
221-
assigned_object=device,
222125
type=ACLTypeChoices.TYPE_EXTENDED,
223126
default_action=ACLActionChoices.ACTION_DENY,
224127
)
225128
access_list_vm = AccessList.objects.create(
226129
name="testacl2",
227-
assigned_object=virtual_machine,
228130
type=ACLTypeChoices.TYPE_EXTENDED,
229131
default_action=ACLActionChoices.ACTION_PERMIT,
230132
)

netbox_acls/tests/api/test_access_lists.py

Lines changed: 17 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
ACLAssignmentDirectionChoices,
1010
ACLTypeChoices,
1111
)
12-
from netbox_acls.models import AccessList, ACLInterfaceAssignment
12+
from netbox_acls.models import AccessList, ACLAssignment
1313

1414

1515
class AccessListAPIViewTestCase(APIViewTestCases.APIViewTestCase):
@@ -20,76 +20,23 @@ class AccessListAPIViewTestCase(APIViewTestCases.APIViewTestCase):
2020
model = AccessList
2121
view_namespace = "plugins-api:netbox_acls"
2222
brief_fields = ["display", "id", "name", "url"]
23-
user_permissions = (
24-
"dcim.view_site",
25-
"dcim.view_devicetype",
26-
"dcim.view_device",
27-
"virtualization.view_cluster",
28-
"virtualization.view_clustergroup",
29-
"virtualization.view_clustertype",
30-
"virtualization.view_virtualmachine",
31-
)
3223

3324
@classmethod
3425
def setUpTestData(cls):
3526
"""Set up Access List for API view testing."""
36-
site = Site.objects.create(
37-
name="Site 1",
38-
slug="site-1",
39-
)
40-
41-
# Device
42-
manufacturer = Manufacturer.objects.create(
43-
name="Manufacturer 1",
44-
slug="manufacturer-1",
45-
)
46-
device_type = DeviceType.objects.create(
47-
manufacturer=manufacturer,
48-
model="Device Type 1",
49-
)
50-
device_role = DeviceRole.objects.create(
51-
name="Device Role 1",
52-
slug="device-role-1",
53-
)
54-
device = Device.objects.create(
55-
name="Device 1",
56-
site=site,
57-
device_type=device_type,
58-
role=device_role,
59-
)
60-
61-
# Virtual Machine
62-
cluster_type = ClusterType.objects.create(
63-
name="Cluster Type 1",
64-
slug="cluster-type-1",
65-
)
66-
cluster = Cluster.objects.create(
67-
name="Cluster 1",
68-
type=cluster_type,
69-
)
70-
virtual_machine = VirtualMachine.objects.create(
71-
name="VM 1",
72-
cluster=cluster,
73-
)
74-
7527
access_lists = (
7628
AccessList(
7729
name="testacl1",
78-
assigned_object_type=ContentType.objects.get_for_model(Device),
79-
assigned_object_id=device.id,
8030
type=ACLTypeChoices.TYPE_STANDARD,
8131
default_action=ACLActionChoices.ACTION_DENY,
8232
),
8333
AccessList(
8434
name="testacl2",
85-
assigned_object=device,
8635
type=ACLTypeChoices.TYPE_EXTENDED,
8736
default_action=ACLActionChoices.ACTION_PERMIT,
8837
),
8938
AccessList(
9039
name="testacl3",
91-
assigned_object_type=ContentType.objects.get_for_model(VirtualMachine),
92-
assigned_object_id=virtual_machine.id,
9340
type=ACLTypeChoices.TYPE_EXTENDED,
9441
default_action=ACLActionChoices.ACTION_DENY,
9542
),
@@ -99,22 +46,16 @@ def setUpTestData(cls):
9946
cls.create_data = [
10047
{
10148
"name": "testacl4",
102-
"assigned_object_type": "dcim.device",
103-
"assigned_object_id": device.id,
10449
"type": ACLTypeChoices.TYPE_STANDARD,
10550
"default_action": ACLActionChoices.ACTION_DENY,
10651
},
10752
{
10853
"name": "testacl5",
109-
"assigned_object_type": "dcim.device",
110-
"assigned_object_id": device.id,
11154
"type": ACLTypeChoices.TYPE_EXTENDED,
11255
"default_action": ACLActionChoices.ACTION_DENY,
11356
},
11457
{
11558
"name": "testacl6",
116-
"assigned_object_type": "virtualization.virtualmachine",
117-
"assigned_object_id": virtual_machine.id,
11859
"type": ACLTypeChoices.TYPE_STANDARD,
11960
"default_action": ACLActionChoices.ACTION_PERMIT,
12061
},
@@ -124,12 +65,12 @@ def setUpTestData(cls):
12465
}
12566

12667

127-
class ACLInterfaceAssignmentAPIViewTestCase(APIViewTestCases.APIViewTestCase):
68+
class ACLAssignmentAPIViewTestCase(APIViewTestCases.APIViewTestCase):
12869
"""
129-
API view test case for ACLInterfaceAssignment.
70+
API view test case for ACLAssignment.
13071
"""
13172

132-
model = ACLInterfaceAssignment
73+
model = ACLAssignment
13374
view_namespace = "plugins-api:netbox_acls"
13475
brief_fields = ["access_list", "display", "id", "url"]
13576
user_permissions = (
@@ -215,55 +156,53 @@ def setUpTestData(cls):
215156
)
216157

217158
# AccessList
218-
access_list_device = AccessList.objects.create(
159+
acl1 = AccessList.objects.create(
219160
name="testacl1",
220-
assigned_object=device,
221161
type=ACLTypeChoices.TYPE_STANDARD,
222162
default_action=ACLActionChoices.ACTION_DENY,
223163
)
224-
access_list_vm = AccessList.objects.create(
164+
acl2 = AccessList.objects.create(
225165
name="testacl2",
226-
assigned_object=virtual_machine,
227166
type=ACLTypeChoices.TYPE_EXTENDED,
228167
default_action=ACLActionChoices.ACTION_PERMIT,
229168
)
230169

231-
acl_interface_assignments = (
232-
ACLInterfaceAssignment(
233-
access_list=access_list_device,
170+
acl_assignments = (
171+
ACLAssignment(
172+
access_list=acl1,
234173
direction=ACLAssignmentDirectionChoices.DIRECTION_INGRESS,
235174
assigned_object_type=ContentType.objects.get_for_model(Interface),
236175
assigned_object_id=device_interface1.id,
237176
),
238-
ACLInterfaceAssignment(
239-
access_list=access_list_device,
177+
ACLAssignment(
178+
access_list=acl1,
240179
direction=ACLAssignmentDirectionChoices.DIRECTION_EGRESS,
241180
assigned_object=device_interface2,
242181
),
243-
ACLInterfaceAssignment(
244-
access_list=access_list_vm,
182+
ACLAssignment(
183+
access_list=acl2,
245184
direction=ACLAssignmentDirectionChoices.DIRECTION_EGRESS,
246185
assigned_object_type=ContentType.objects.get_for_model(VMInterface),
247186
assigned_object_id=virtual_machine_interface1.id,
248187
),
249188
)
250-
ACLInterfaceAssignment.objects.bulk_create(acl_interface_assignments)
189+
ACLAssignment.objects.bulk_create(acl_assignments)
251190

252191
cls.create_data = [
253192
{
254-
"access_list": access_list_device.id,
193+
"access_list": acl1.id,
255194
"assigned_object_type": "dcim.interface",
256195
"assigned_object_id": device_interface3.id,
257196
"direction": ACLAssignmentDirectionChoices.DIRECTION_EGRESS,
258197
},
259198
{
260-
"access_list": access_list_vm.id,
199+
"access_list": acl2.id,
261200
"assigned_object_type": "virtualization.vminterface",
262201
"assigned_object_id": virtual_machine_interface2.id,
263202
"direction": ACLAssignmentDirectionChoices.DIRECTION_INGRESS,
264203
},
265204
{
266-
"access_list": access_list_vm.id,
205+
"access_list": acl2.id,
267206
"assigned_object_type": "virtualization.vminterface",
268207
"assigned_object_id": virtual_machine_interface3.id,
269208
"direction": ACLAssignmentDirectionChoices.DIRECTION_EGRESS,

0 commit comments

Comments
 (0)