diff --git a/dojo/tools/kics/parser.py b/dojo/tools/kics/parser.py index 156133b89f0..e660e2613ac 100644 --- a/dojo/tools/kics/parser.py +++ b/dojo/tools/kics/parser.py @@ -13,6 +13,7 @@ class KICSParser: # table to match KICS severity to DefectDojo severity SEVERITY = { + "CRITICAL": "Critical", "HIGH": "High", "MEDIUM": "Medium", "LOW": "Low", diff --git a/unittests/tools/test_kics_parser.py b/unittests/tools/test_kics_parser.py index c711fe99f6c..8e24f11c5da 100644 --- a/unittests/tools/test_kics_parser.py +++ b/unittests/tools/test_kics_parser.py @@ -1,3 +1,6 @@ +import io +import json + from dojo.models import Test from dojo.tools.kics.parser import KICSParser from unittests.dojo_test_case import DojoTestCase, get_unit_tests_scans_path @@ -11,6 +14,34 @@ def test_parse_no_findings(self): findings = parser.get_findings(testfile, Test()) self.assertEqual(0, len(findings)) + def test_parse_critical_severity(self): + payload = { + "queries": [ + { + "query_name": "Critical IaC Issue", + "query_url": "https://kics.io/", + "severity": "CRITICAL", + "platform": "Terraform", + "category": "Access Control", + "description": "Critical issue description.", + "files": [ + { + "file_name": "main.tf", + "line": 7, + "issue_type": "IncorrectValue", + "expected_value": "secure value", + "actual_value": "insecure value", + }, + ], + }, + ], + } + parser = KICSParser() + findings = parser.get_findings(io.StringIO(json.dumps(payload)), Test()) + + self.assertEqual(1, len(findings)) + self.assertEqual("Critical", findings[0].severity) + def test_parse_many_findings(self): with (get_unit_tests_scans_path("kics") / "many_findings.json").open(encoding="utf-8") as testfile: parser = KICSParser()