Summary of What Needs to be Done:
Add unit tests for the export_audit_log and clear_audit_entries methods of NetworkPolicyEngine in backend/secuscan/network_policy.py. These methods are not covered by the existing test_network_policy.py suite which focuses on check_access and policy enforcement logic.
The methods require patching the backend.secuscan.config module (which imports Pydantic) so the engine can be instantiated with test settings. Both methods have substantial logic worth testing: export_audit_log formats audit entries as JSON or CSV, and clear_audit_entries removes all entries from memory.
Changes that Need to be Made:
Create testing/backend/unit/test_network_policy_audit_export.py:
- Patch
sys.modules['backend.secuscan.config'] with a mock config module before importing NetworkPolicyEngine and PolicyAction
export_audit_log(format="json"): Test that it returns valid JSON with expected fields (timestamp, plugin_id, task_id, action, dest_ip, dest_port, reason)
export_audit_log(format="csv"): Test that it returns valid CSV with header row and data rows
export_audit_log(format="csv"): Test that empty audit log produces just the header row
clear_audit_entries(): Test that it removes all entries after entries have been added
clear_audit_entries(): Test that calling it on an already-empty log is safe (no exception)
get_audit_entries() as a companion: verify it returns entries before clear and empty list after
- Use a temp file path for
audit_log_path and max_audit_entries=1000 in the engine constructor
- Import the real production class directly (not mocked)
- Run with
python3 -m pytest testing/backend/unit/test_network_policy_audit_export.py -v --noconftest
Impact that it would Provide:
- Tests audit log export functionality that is currently completely untested
- Prevents regressions in the JSON and CSV export formatting logic
- Ensures the clear operation is idempotent and safe on empty state
- Complements the existing
TestAuditLogging class which only tests audit entry creation, not export/clear
Note: This task is being handled by tmdeveloper007 — please assign to that account when picking it up.
Summary of What Needs to be Done:
Add unit tests for the
export_audit_logandclear_audit_entriesmethods ofNetworkPolicyEngineinbackend/secuscan/network_policy.py. These methods are not covered by the existingtest_network_policy.pysuite which focuses oncheck_accessand policy enforcement logic.The methods require patching the
backend.secuscan.configmodule (which imports Pydantic) so the engine can be instantiated with test settings. Both methods have substantial logic worth testing:export_audit_logformats audit entries as JSON or CSV, andclear_audit_entriesremoves all entries from memory.Changes that Need to be Made:
Create
testing/backend/unit/test_network_policy_audit_export.py:sys.modules['backend.secuscan.config']with a mock config module before importingNetworkPolicyEngineandPolicyActionexport_audit_log(format="json"): Test that it returns valid JSON with expected fields (timestamp, plugin_id, task_id, action, dest_ip, dest_port, reason)export_audit_log(format="csv"): Test that it returns valid CSV with header row and data rowsexport_audit_log(format="csv"): Test that empty audit log produces just the header rowclear_audit_entries(): Test that it removes all entries after entries have been addedclear_audit_entries(): Test that calling it on an already-empty log is safe (no exception)get_audit_entries()as a companion: verify it returns entries before clear and empty list afteraudit_log_pathandmax_audit_entries=1000in the engine constructorpython3 -m pytest testing/backend/unit/test_network_policy_audit_export.py -v --noconftestImpact that it would Provide:
TestAuditLoggingclass which only tests audit entry creation, not export/clearNote: This task is being handled by tmdeveloper007 — please assign to that account when picking it up.