Skip to content

Commit f1f246e

Browse files
committed
update
1 parent 1088935 commit f1f246e

2 files changed

Lines changed: 24 additions & 14 deletions

File tree

dojo/tools/n0s1/parser.py

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import json
33

44
from dojo.models import Finding
5+
from dojo.tools.parser_test import ParserTest
56

67

78
class N0s1Parser:
@@ -14,6 +15,22 @@ def get_label_for_scan_types(self, scan_type):
1415
def get_description_for_scan_types(self, scan_type):
1516
return "JSON output from the n0s1 scanner."
1617

18+
def get_tests(self, scan_type, handle):
19+
data = json.load(handle)
20+
subscanner = self.detect_subscanner(data)
21+
test = ParserTest(
22+
name=subscanner,
23+
parser_type=subscanner,
24+
version=data.get("tool", {}).get("version", ""),
25+
description=f"Scan from {subscanner}",
26+
)
27+
test.findings = self.get_findings_from_data(data)
28+
return [test]
29+
30+
def get_findings(self, scan_file, test):
31+
data = json.load(scan_file)
32+
return self.get_findings_from_data(data)
33+
1734
def detect_subscanner(self, data):
1835
platforms = {f.get("details", {}).get("platform", "") for f in data.get("findings", {}).values()}
1936
if "Confluence" in platforms:
@@ -24,14 +41,6 @@ def detect_subscanner(self, data):
2441
return "n0s1 GitLab"
2542
return "n0s1"
2643

27-
def get_findings(self, scan_file, test):
28-
data = json.load(scan_file)
29-
subscanner = self.detect_subscanner(data)
30-
if hasattr(test, "test_type") and test.test_type:
31-
test.test_type.name = subscanner
32-
test.description = f"Scan from {subscanner}"
33-
return self.get_findings_from_data(data)
34-
3544
def get_findings_from_data(self, data):
3645
dupes = {}
3746
regex_configs = {}

unittests/tools/test_n0s1_parser.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11

2-
import json
32

43
from dojo.models import Test, Test_Type
54
from dojo.tools.n0s1.parser import N0s1Parser
@@ -19,12 +18,14 @@ def test_n0s1_parser_with_multiple_findings(self):
1918
self.assertEqual(finding.title, "AWS")
2019
self.assertIsNotNone(finding.description)
2120
self.assertTrue(finding.dynamic_finding)
22-
self.assertEqual(test.test_type.name, "n0s1 Confluence")
23-
self.assertEqual(test.description, "Scan from n0s1 Confluence")
21+
self.assertEqual(test.test_type.name, "n0s1 Scanner")
2422

2523
def test_detect_subscanner_returns_correct_type(self):
2624
with (get_unit_tests_scans_path("n0s1") / "many_findings.json").open(encoding="utf-8") as testfile:
2725
parser = N0s1Parser()
28-
data = json.load(testfile)
29-
subscanner = parser.detect_subscanner(data)
30-
self.assertEqual("n0s1 Confluence", subscanner)
26+
tests = parser.get_tests("n0s1 Scanner", testfile)
27+
self.assertEqual(1, len(tests))
28+
test = tests[0]
29+
self.assertEqual("n0s1 Confluence", test.name)
30+
self.assertEqual("Scan from n0s1 Confluence", test.description)
31+
self.assertEqual(17, len(test.findings))

0 commit comments

Comments
 (0)