chore(Scan, Finding): PRWLR-5056 Adjust finding information storing when performing a scan (#57)

* chore: PRWLR-5056 update Prowler dependency

* feat(Scan): PRWLR-5056 adapt scan task code to sdk breaking changes

* test(Scan): PRWLR-5056 fix unit tests

* chore: PRWLR-5056 update fixtures

* chore: PRWLR-5056 update Prowler dependency
This commit is contained in:
Víctor Fernández Poyatos authored and GitHub committed 2024-10-18 13:56:07 +02:00
1 parent a8825c385b
commit ed427c1352
10 files changed
+2851 -261

No files matched your search

+7 -9
View File
@@ -1,4 +1,3 @@
import json
import time
from datetime import datetime, timezone
@@ -62,8 +61,8 @@ def _store_finding(
Finding: The newly created or updated Finding instance.
"""
finding_uid = finding.finding_uid
status = FindingStatus[finding.status.value] if finding.status is not None else None
finding_uid = finding.uid
status = FindingStatus[finding.status]
with tenant_transaction(tenant_id):
most_recent_finding = (
Finding.objects.filter(uid=finding_uid)
@@ -78,11 +77,12 @@ def _store_finding(
tenant_id=tenant_id,
uid=finding_uid,
delta=delta,
check_metadata=finding.get_metadata(),
status=status,
status_extended=finding.status_extended,
severity=finding.severity.value,
impact=finding.severity.value,
raw_result=json.loads(finding.json()),
severity=finding.severity,
impact=finding.severity,
raw_result=finding.raw,
check_id=finding.check_id,
scan=scan_instance,
)
@@ -172,9 +172,7 @@ def perform_prowler_scan(
)
provider_instance.save()
prowler_scan = ProwlerScan(
provider=prowler_provider, checks_to_execute=checks_to_execute
)
prowler_scan = ProwlerScan(provider=prowler_provider, checks=checks_to_execute)
for progress, findings in prowler_scan.scan():
for finding in findings:
resource_instance, resource_uid_tuple = _store_resources(
+6 -6
View File
@@ -1,4 +1,3 @@
import json
from unittest.mock import patch, MagicMock
import pytest
@@ -34,16 +33,17 @@ class TestPerformScan:
checks_to_execute = ["check1", "check2"]
finding = MagicMock()
finding.finding_uid = "this_is_a_test_finding_id"
finding.status = StatusChoices.PASS
finding.uid = "this_is_a_test_finding_id"
finding.status = "PASS"
finding.status_extended = "test status extended"
finding.severity = Severity.medium
finding.check_id = "check1"
finding.json.return_value = '{"key": "value"}'
finding.get_metadata.return_value = '{"key": "value"}'
finding.resource_uid = "resource_uid"
finding.region = "region"
finding.service_name = "service_name"
finding.resource_type = "resource_type"
finding.raw = {}
mock_prowler_scan.return_value.scan.return_value = [(100, [finding])]
perform_prowler_scan(tenant_id, scan_id, provider_id, checks_to_execute)
@@ -60,12 +60,12 @@ class TestPerformScan:
assert scan.started_at is not None
assert scan.unique_resource_count == 1
assert scan.progress == 100
assert scan_finding.uid == finding.finding_uid
assert scan_finding.uid == finding.uid
assert scan_finding.status == finding.status
assert scan_finding.status_extended == finding.status_extended
assert scan_finding.severity == finding.severity
assert scan_finding.check_id == finding.check_id
assert scan_finding.raw_result == json.loads(finding.json())
assert scan_finding.raw_result == finding.raw
assert scan_resource.tenant == tenant
assert scan_resource.uid == finding.resource_uid