22import json
33
44from dojo .models import Finding
5+ from dojo .tools .parser_test import ParserTest
56
67
78class 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 = {}
0 commit comments