Skip to content

Commit f24705c

Browse files
authoredJul 25, 2024··
Merge pull request #16 from netboxlabs/develop
🚚 release
2 parents 8b04e4f + 397beb1 commit f24705c

File tree

3 files changed

+74
-9
lines changed

3 files changed

+74
-9
lines changed
 

‎.github/workflows/lint-tests.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ jobs:
2121
timeout-minutes: 10
2222
strategy:
2323
matrix:
24-
python-version: [ "3.10" ]
24+
python: [ "3.10" ]
2525
steps:
2626
- name: Checkout
2727
uses: actions/checkout@v4

‎netbox_diode_plugin/api/views.py

+14-4
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,11 @@ def _get_lookups(self, object_type_model: str) -> tuple:
4949
5050
"""
5151
if "'ipam.models.ip.ipaddress'" in object_type_model:
52-
return "interface", "interface__device", "interface__device__site"
52+
return (
53+
"assigned_object",
54+
"assigned_object__device",
55+
"assigned_object__device__site",
56+
)
5357
if "'dcim.models.device_components.interface'" in object_type_model:
5458
return "device", "device__site"
5559
if "'dcim.models.devices.device'" in object_type_model:
@@ -127,9 +131,15 @@ def get(self, request, *args, **kwargs):
127131
},
128132
)
129133

130-
if len(serializer.data) > 0:
131-
return Response(serializer.data[0])
132-
return Response({})
134+
try:
135+
if len(serializer.data) > 0:
136+
return Response(serializer.data[0])
137+
return Response({})
138+
except AttributeError as e:
139+
return Response(
140+
{"errors": [f"Serializer error: {e.args[0]}"]},
141+
status=status.HTTP_400_BAD_REQUEST,
142+
)
133143

134144
def _additional_attributes_query_filter(self):
135145
"""Get the additional attributes query filter."""

‎netbox_diode_plugin/tests/test_object_state.py

+59-4
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,31 @@ def test_invalid_object_state_using_q_objects_and_wrong_additional_attributes_re
289289

290290
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
291291

292-
def test_common_user_with_permissions_get_device_state(self):
292+
def test_common_user_with_permissions_get_ip_state_using_id(self):
293+
"""Test searching for ip using id."""
294+
query_parameters = {
295+
"id": self.ip_addresses[0].id,
296+
"object_type": "ipam.ipaddress",
297+
}
298+
299+
response = self.client.get(self.url, query_parameters, **self.user_header)
300+
self.assertEqual(response.status_code, status.HTTP_200_OK)
301+
302+
self.assertEqual(response.json().get("object_type"), "ipam.ipaddress")
303+
self.assertEqual(
304+
response.json().get("object").get("address"),
305+
self.ip_addresses[0].address.__str__(),
306+
)
307+
self.assertEqual(
308+
response.json()
309+
.get("object")
310+
.get("assigned_object")
311+
.get("interface")
312+
.get("name"),
313+
self.interfaces[0].name,
314+
)
315+
316+
def test_common_user_with_permissions_get_device_state_using_q_objects(self):
293317
"""Test searching for device using q parameter."""
294318
query_parameters = {
295319
"q": self.devices[0].name,
@@ -300,7 +324,15 @@ def test_common_user_with_permissions_get_device_state(self):
300324
response = self.client.get(self.url, query_parameters, **self.user_header)
301325
self.assertEqual(response.status_code, status.HTTP_200_OK)
302326

303-
def test_common_user_with_permissions_get_interface_state(self):
327+
self.assertEqual(response.json().get("object_type"), "dcim.device")
328+
self.assertEqual(
329+
response.json().get("object").get("name"), self.devices[0].name
330+
)
331+
self.assertEqual(
332+
response.json().get("object").get("site").get("name"), self.sites[0].name
333+
)
334+
335+
def test_common_user_with_permissions_get_interface_state_using_q_objects(self):
304336
"""Test searching for interface using q parameter."""
305337
query_parameters = {
306338
"q": self.interfaces[0].name,
@@ -312,10 +344,19 @@ def test_common_user_with_permissions_get_interface_state(self):
312344
response = self.client.get(self.url, query_parameters, **self.user_header)
313345
self.assertEqual(response.status_code, status.HTTP_200_OK)
314346

315-
def test_common_user_with_permissions_get_ip_state(self):
347+
self.assertEqual(response.json().get("object_type"), "dcim.interface")
348+
self.assertEqual(
349+
response.json().get("object").get("name"), self.interfaces[0].name
350+
)
351+
self.assertEqual(
352+
response.json().get("object").get("device").get("name"),
353+
self.devices[0].name,
354+
)
355+
356+
def test_common_user_with_permissions_get_ip_state_using_q_objects(self):
316357
"""Test searching for ip using q parameter."""
317358
query_parameters = {
318-
"q": self.ip_addresses[0].address.ip,
359+
"q": self.ip_addresses[0].address.__str__(),
319360
"object_type": "ipam.ipaddress",
320361
"interface": self.interfaces[0].id,
321362
"interface__device": self.devices[0].id,
@@ -324,3 +365,17 @@ def test_common_user_with_permissions_get_ip_state(self):
324365

325366
response = self.client.get(self.url, query_parameters, **self.user_header)
326367
self.assertEqual(response.status_code, status.HTTP_200_OK)
368+
369+
self.assertEqual(response.json().get("object_type"), "ipam.ipaddress")
370+
self.assertEqual(
371+
response.json().get("object").get("address"),
372+
self.ip_addresses[0].address.__str__(),
373+
)
374+
self.assertEqual(
375+
response.json()
376+
.get("object")
377+
.get("assigned_object")
378+
.get("interface")
379+
.get("name"),
380+
self.interfaces[0].name,
381+
)

0 commit comments

Comments
 (0)
Please sign in to comment.