Skip to content

Commit 516997d

Browse files
authored
Import: leverage the minimum severity flag (#10550)
1 parent 943f609 commit 516997d

4 files changed

Lines changed: 28 additions & 3 deletions

File tree

dojo/importers/default_importer.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ def process_findings(
159159
# make sure the severity is something is digestible
160160
unsaved_finding = self.sanitize_severity(unsaved_finding)
161161
# Filter on minimum severity if applicable
162-
if (minimum_severity := kwargs.get("minimum_severity")) and (Finding.SEVERITIES[unsaved_finding.severity] > Finding.SEVERITIES[minimum_severity]):
162+
if Finding.SEVERITIES[unsaved_finding.severity] > Finding.SEVERITIES[self.minimum_severity]:
163163
# finding's severity is below the configured threshold : ignoring the finding
164164
continue
165165

dojo/importers/default_reimporter.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ def process_findings(
175175
# make sure the severity is something is digestible
176176
unsaved_finding = self.sanitize_severity(unsaved_finding)
177177
# Filter on minimum severity if applicable
178-
if (minimum_severity := kwargs.get("minimum_severity")) and (Finding.SEVERITIES[unsaved_finding.severity] > Finding.SEVERITIES[minimum_severity]):
178+
if Finding.SEVERITIES[unsaved_finding.severity] > Finding.SEVERITIES[self.minimum_severity]:
179179
# finding's severity is below the configured threshold : ignoring the finding
180180
continue
181181
# Some parsers provide "mitigated" field but do not set timezone (because they are probably not available in the report)

unittests/dojo_test_case.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -648,7 +648,7 @@ def patch_finding_api(self, finding_id, finding_details, push_to_jira=None):
648648
def assert_finding_count_json(self, count, findings_content_json):
649649
self.assertEqual(findings_content_json['count'], count)
650650

651-
def get_test_findings_api(self, test_id, active=None, verified=None, is_mitigated=None, component_name=None, component_version=None):
651+
def get_test_findings_api(self, test_id, active=None, verified=None, is_mitigated=None, component_name=None, component_version=None, severity=None):
652652
payload = {'test': test_id}
653653
if active is not None:
654654
payload['active'] = active
@@ -660,6 +660,8 @@ def get_test_findings_api(self, test_id, active=None, verified=None, is_mitigate
660660
payload['component_name'] = component_name
661661
if component_version is not None:
662662
payload['component_version'] = component_version
663+
if severity is not None:
664+
payload['severity'] = severity
663665

664666
response = self.client.get(reverse('finding-list'), payload, format='json')
665667
self.assertEqual(200, response.status_code, response.content[:1000])

unittests/test_import_reimport.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -513,6 +513,29 @@ def test_import_sonar1_reimport_sonar1_active_not_verified(self):
513513
# reimporting the exact same scan shouldn't create any notes
514514
self.assertEqual(notes_count_before, self.db_notes_count())
515515

516+
# Test the minimum severity flag
517+
def test_import_sonar1_measure_minimum_severity_counts(self):
518+
# Critical
519+
response_json = self.import_scan_with_params(self.sonarqube_file_name1, scan_type=self.scan_type_sonarqube_detailed, minimum_severity="Critical")
520+
test_id = response_json['test']
521+
# Count all findings
522+
self.assert_finding_count_json(3, self.get_test_findings_api(test_id))
523+
self.assert_finding_count_json(3, self.get_test_findings_api(test_id, severity="Critical"))
524+
525+
# High
526+
response_json = self.import_scan_with_params(self.sonarqube_file_name1, scan_type=self.scan_type_sonarqube_detailed, minimum_severity="High")
527+
test_id = response_json['test']
528+
# Count all findings
529+
self.assert_finding_count_json(4, self.get_test_findings_api(test_id))
530+
self.assert_finding_count_json(1, self.get_test_findings_api(test_id, severity="High"))
531+
532+
# Low
533+
response_json = self.import_scan_with_params(self.sonarqube_file_name1, scan_type=self.scan_type_sonarqube_detailed, minimum_severity="Low")
534+
test_id = response_json['test']
535+
# Count all findings
536+
self.assert_finding_count_json(6, self.get_test_findings_api(test_id))
537+
self.assert_finding_count_json(2, self.get_test_findings_api(test_id, severity="Low"))
538+
516539
# Test re-import with unique_id_from_tool_or_hash_code algorithm
517540
# import veracode_many_findings and then reimport veracode_many_findings again with verified is false
518541
# - reimport, findings stay the same, stay active

0 commit comments

Comments
 (0)