From 386e7ed99049ff5e77a0f4ba7015d3d6c88dd72e Mon Sep 17 00:00:00 2001 From: Morten Brekkevold Date: Fri, 24 Nov 2023 09:35:17 +0100 Subject: [PATCH 1/3] add regression test for netbox change audit log Audit logging netbox changes started crashing once deprecated attributes were removed. --- tests/integration/seeddb_test.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/tests/integration/seeddb_test.py b/tests/integration/seeddb_test.py index efa7edfe60..5e1d44bdc4 100644 --- a/tests/integration/seeddb_test.py +++ b/tests/integration/seeddb_test.py @@ -7,7 +7,7 @@ from nav.models.manage import Netbox, Room from nav.models.profiles import Account, AlertProfile -from nav.web.seeddb.page.netbox.edit import netbox_edit +from nav.web.seeddb.page.netbox.edit import netbox_edit, log_netbox_change from nav.web.seeddb.utils.delete import dependencies import pytest @@ -58,3 +58,14 @@ def test_dependencies_no_whitelist(netbox): deps = dependencies(qs, []) assert Netbox.objects.get(pk=netbox.pk) assert deps == {} + + +def test_log_netbox_change_should_not_crash(admin_account, netbox): + """Regression test to ensure this function doesn't try to access removed or + invalid attributes on Netbox. + """ + old = Netbox.objects.get(id=netbox.id) + new = netbox + new.category_id = "OTHER" + + assert log_netbox_change(admin_account, old, new) is None From fab739132491bf575e10f449769d5dce23b54c80 Mon Sep 17 00:00:00 2001 From: Morten Brekkevold Date: Fri, 24 Nov 2023 09:35:34 +0100 Subject: [PATCH 2/3] Remove unused imports --- tests/integration/seeddb_test.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/integration/seeddb_test.py b/tests/integration/seeddb_test.py index 5e1d44bdc4..55bb0edcb7 100644 --- a/tests/integration/seeddb_test.py +++ b/tests/integration/seeddb_test.py @@ -6,7 +6,6 @@ from mock import MagicMock from nav.models.manage import Netbox, Room -from nav.models.profiles import Account, AlertProfile from nav.web.seeddb.page.netbox.edit import netbox_edit, log_netbox_change from nav.web.seeddb.utils.delete import dependencies From 365d268964695c7d93c566d0ef5732a8fa248466 Mon Sep 17 00:00:00 2001 From: Morten Brekkevold Date: Fri, 24 Nov 2023 09:36:48 +0100 Subject: [PATCH 3/3] Stop comparing removed attributes These attributes/properties have been deprecated for some time, and have now been removed. This caused this comparison function to crash SeedDB when audit logging changes to netbox objects. --- python/nav/web/seeddb/page/netbox/edit.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/python/nav/web/seeddb/page/netbox/edit.py b/python/nav/web/seeddb/page/netbox/edit.py index ae9e7ceadf..2febc78184 100644 --- a/python/nav/web/seeddb/page/netbox/edit.py +++ b/python/nav/web/seeddb/page/netbox/edit.py @@ -56,20 +56,16 @@ def log_netbox_change(account, old, new): # Compare changes from old to new attribute_list = [ - 'read_only', - 'read_write', 'category', 'ip', 'room', 'organization', - 'snmp_version', ] LogEntry.compare_objects( account, old, new, attribute_list, - censored_attributes=['read_only', 'read_write'], )