def import_parser_factory(file, test): scan_type = test.test_type.name if scan_type == "Burp Scan": parser = BurpXmlParser(file, test) elif scan_type == "Nessus Scan": filename = file.name.lower() if filename.endswith("csv"): parser = NessusCSVParser(file, test) elif filename.endswith("xml") or filename.endswith("nessus"): parser = NessusXMLParser(file, test) elif scan_type == "Nexpose Scan": parser = NexposeFullXmlParser(file, test) elif scan_type == "Veracode Scan": parser = VeracodeXMLParser(file, test) elif scan_type == "Checkmarx Scan": parser = CheckmarxXMLParser(file, test) elif scan_type == "ZAP Scan": parser = ZapXmlParser(file, test) elif scan_type == "AppSpider Scan": parser = AppSpiderXMLParser(file, test) elif scan_type == "Arachni Scan": parser = ArachniJSONParser(file, test) elif scan_type == 'VCG Scan': parser = VCGParser(file, test) elif scan_type == 'Dependency Check Scan': parser = DependencyCheckParser(file, test) elif scan_type == 'Generic Findings Import': parser = GenericFindingUploadCsvParser(file, test) else: raise ValueError('Unknown Test Type') return parser
def import_parser_factory(file, test): scan_type = test.test_type.name if scan_type == "Burp Scan": parser = BurpXmlParser(file, test) elif scan_type == "Nessus Scan": filename = file.name.lower() if filename.endswith("csv"): parser = NessusCSVParser(file, test) elif filename.endswith("xml") or filename.endswith("nessus"): parser = NessusXMLParser(file, test) elif scan_type == "Nmap Scan": parser = NmapXMLParser(file, test) elif scan_type == "Nikto Scan": parser = NiktoXMLParser(file, test) elif scan_type == "Nexpose Scan": parser = NexposeFullXmlParser(file, test) elif scan_type == "Veracode Scan": parser = VeracodeXMLParser(file, test) elif scan_type == "Checkmarx Scan": parser = CheckmarxXMLParser(file, test) elif scan_type == "Contrast Scan": parser = ContrastCSVParser(file, test) elif scan_type == "Bandit Scan": parser = BanditParser(file, test) elif scan_type == "ZAP Scan": parser = ZapXmlParser(file, test) elif scan_type == "AppSpider Scan": parser = AppSpiderXMLParser(file, test) elif scan_type == "Arachni Scan": parser = ArachniJSONParser(file, test) elif scan_type == 'VCG Scan': parser = VCGParser(file, test) elif scan_type == 'Dependency Check Scan': parser = DependencyCheckParser(file, test) elif scan_type == 'Retire.js Scan': parser = RetireJsParser(file, test) elif scan_type == 'Node Security Platform Scan': parser = NspParser(file, test) elif scan_type == 'Generic Findings Import': parser = GenericFindingUploadCsvParser(file, test) elif scan_type == 'Qualys Scan': parser = QualysParser(file, test) elif scan_type == 'Qualys Webapp Scan': parser = QualysWebAppParser(file, test) elif scan_type == "OpenVAS CSV": parser = OpenVASUploadCsvParser(file, test) elif scan_type == 'Snyk Scan': parser = SnykParser(file, test) elif scan_type == 'SKF Scan': parser = SKFCsvParser(file, test) elif scan_type == 'SSL Labs Scan': parser = SSLlabsParser(file, test) elif scan_type == 'Trufflehog Scan': parser = TruffleHogJSONParser(file, test) else: raise ValueError('Unknown Test Type') return parser
def test_parsed_finding_has_date(self): content = """Date,Title,CweId,Url,Severity,Description,Mitigation,Impact,References,Active,Verified 11/7/2015,Potential XSS Vulnerability,79,,High,"FileName: default.aspx.cs Description: Potential XSS Vulnerability Line:18 Code Line: Response.Write(output);",None,,,TRUE,FALSE """ file = TestFile("findings.csv", content) self.parser = GenericFindingUploadCsvParser(file, self.test) self.assertEqual(datetime.date(2015, 11, 7), self.parser.items[0].date)
def test_parsed_finding_is_duplicate_has_negative_value(self): content = """Date,Title,CweId,Url,Severity,Description,Mitigation,Impact,References,Active,Verified,FalsePositive,Duplicate 11/7/2015,Potential XSS Vulnerability,79,"http://localhost/default.aspx",High,"FileName: default.aspx.cs Description: Potential XSS Vulnerability Line:18 Code Line: Response.Write(output);","None Currently Available","Impact is currently unknown","Finding has references.",FALSE,FALSE,FALSE,FALSE """ file = TestFile("findings.csv", content) self.parser = GenericFindingUploadCsvParser(file, self.test) self.assertEqual(False, self.parser.items[0].duplicate)
def test_parsed_finding_with_invalid_severity_has_info_severity(self): content = """Date,Title,CweId,Url,Severity,Description,Mitigation,Impact,References,Active,Verified 11/7/2015,Potential XSS Vulnerability,79,"http://localhost/default.aspx",Unknown,"FileName: default.aspx.cs Description: Potential XSS Vulnerability Line:18 Code Line: Response.Write(output);",None,,,TRUE,FALSE """ file = TestFile("findings.csv", content) self.parser = GenericFindingUploadCsvParser(file, self.test) self.assertEqual('Info', self.parser.items[0].severity)
def test_parse_csv_with_single_vulnerability_results_in_single_finding( self): content = """Date,Title,CweId,Url,Severity,Description,Mitigation,Impact,References,Active,Verified 11/7/16,Potential XSS Vulnerability,79,,High,"FileName: default.aspx.cs Description: Potential XSS Vulnerability Line:18 Code Line: Response.Write(output);",None,,,TRUE,FALSE """ file = TestFile("findings.csv", content) self.parser = GenericFindingUploadCsvParser(file, self.test) self.assertEqual(1, len(self.parser.items))
def test_parsed_finding_has_mitigation(self): content = """Date,Title,CweId,Url,Severity,Description,Mitigation,Impact,References,Active,Verified 11/7/2015,Potential XSS Vulnerability,79,"http://localhost/default.aspx",High,"FileName: default.aspx.cs Description: Potential XSS Vulnerability Line:18 Code Line: Response.Write(output);","None Currently Available",,,TRUE,FALSE """ file = TestFile("findings.csv", content) self.parser = GenericFindingUploadCsvParser(file, self.test) self.assertEqual('None Currently Available', self.parser.items[0].mitigation)
def test_column_order_is_flexible(self): content1 = """\ Date,Title,CweId,Url,Severity,Description,Mitigation,Impact,References,Active,Verified 11/7/2015,Title,0,Url,Severity,Description,Mitigation,Impact,References,True,True """ content2 = """\ Verified,Date,Title,CweId,Url,Severity,Description,Mitigation,Impact,References,Active True,11/7/2015,Title,0,Url,Severity,Description,Mitigation,Impact,References,True """ file1 = TestFile("findings.csv", content1) file2 = TestFile("findings.csv", content2) parser1 = GenericFindingUploadCsvParser(file1, self.test, True, True) parser2 = GenericFindingUploadCsvParser(file2, self.test, True, True) finding1 = parser1.items[0] finding2 = parser2.items[0] fields1 = {k: v for k, v in finding1.__dict__.items() if k != '_state'} fields2 = {k: v for k, v in finding2.__dict__.items() if k != '_state'} self.assertEqual(fields1, fields2)
def test_parse_csv_with_multiple_vulnerabilities_results_in_multiple_findings( self): content = """Date,Title,CweId,Url,Severity,Description,Mitigation,Impact,References,Active,Verified 11/7/16,Potential XSS Vulnerability,79,,High,"FileName: default.aspx.cs Description: Potential XSS Vulnerability Line:18 Code Line: Response.Write(output);",None,,,TRUE,FALSE 11/7/16,Potential SQL Injection,112,,High,"FileName: UserData.cs Description: Potential SQL Injection Vulnerability Line:42 Code Line: strSQL=""SELECT * FROM users WHERE user_id="" + request_user_id",None,,,TRUE,FALSE """ file = TestFile("findings.csv", content) self.parser = GenericFindingUploadCsvParser(file, self.test) self.assertEqual(2, len(self.parser.items))
def import_parser_factory(file, test, scan_type=None): if scan_type is None: scan_type = test.test_type.name if scan_type == "Burp Scan": parser = BurpXmlParser(file, test) elif scan_type == "Nessus Scan": filename = file.name.lower() if filename.endswith("csv"): parser = NessusCSVParser(file, test) elif filename.endswith("xml") or filename.endswith("nessus"): parser = NessusXMLParser(file, test) elif scan_type == "Clair Scan": parser = ClairParser(file, test) elif scan_type == "Nmap Scan": parser = NmapXMLParser(file, test) elif scan_type == "Nikto Scan": parser = NiktoXMLParser(file, test) elif scan_type == "Nexpose Scan": parser = NexposeFullXmlParser(file, test) elif scan_type == "Veracode Scan": parser = VeracodeXMLParser(file, test) elif scan_type == "Checkmarx Scan": parser = CheckmarxXMLParser(file, test) elif scan_type == "Contrast Scan": parser = ContrastCSVParser(file, test) elif scan_type == "Crashtest Security Scan": parser = CrashtestSecurityXmlParser(file, test) elif scan_type == "Bandit Scan": parser = BanditParser(file, test) elif scan_type == "ZAP Scan": parser = ZapXmlParser(file, test) elif scan_type == "AppSpider Scan": parser = AppSpiderXMLParser(file, test) elif scan_type == "Arachni Scan": parser = ArachniJSONParser(file, test) elif scan_type == 'VCG Scan': parser = VCGParser(file, test) elif scan_type == 'Dependency Check Scan': parser = DependencyCheckParser(file, test) elif scan_type == 'Retire.js Scan': parser = RetireJsParser(file, test) elif scan_type == 'Node Security Platform Scan': parser = NspParser(file, test) elif scan_type == 'NPM Audit Scan': parser = NpmAuditParser(file, test) elif scan_type == 'Generic Findings Import': parser = GenericFindingUploadCsvParser(file, test) elif scan_type == 'Qualys Scan': parser = QualysParser(file, test) elif scan_type == 'Qualys Webapp Scan': parser = QualysWebAppParser(file, test) elif scan_type == "OpenVAS CSV": parser = OpenVASUploadCsvParser(file, test) elif scan_type == 'Snyk Scan': parser = SnykParser(file, test) elif scan_type == 'SKF Scan': parser = SKFCsvParser(file, test) elif scan_type == 'SSL Labs Scan': parser = SSLlabsParser(file, test) elif scan_type == 'Trufflehog Scan': parser = TruffleHogJSONParser(file, test) elif scan_type == 'Clair Klar Scan': parser = ClairKlarParser(file, test) elif scan_type == 'Gosec Scanner': parser = GosecScannerParser(file, test) elif scan_type == 'Trustwave Scan (CSV)': parser = TrustwaveUploadCsvParser(file, test) elif scan_type == 'Netsparker Scan': parser = NetsparkerParser(file, test) elif scan_type == 'PHP Security Audit v2': parser = PhpSecurityAuditV2(file, test) elif scan_type == 'Acunetix Scan': parser = AcunetixScannerParser(file, test) elif scan_type == 'Fortify Scan': parser = FortifyXMLParser(file, test) elif scan_type == 'SonarQube Scan': parser = SonarQubeHtmlParser(file, test) elif scan_type == 'MobSF Scan': parser = MobSFParser(file, test) elif scan_type == 'AWS Scout2 Scan': parser = AWSScout2Parser(file, test) elif scan_type == 'AWS Prowler Scan': parser = AWSProwlerParser(file, test) elif scan_type == 'Brakeman Scan': parser = BrakemanScanParser(file, test) elif scan_type == 'SpotBugs Scan': parser = SpotbugsXMLParser(file, test) elif scan_type == 'Safety Scan': parser = SafetyParser(file, test) else: raise ValueError('Unknown Test Type') return parser
def import_parser_factory(file, test, active, verified, scan_type=None): if scan_type is None: scan_type = test.test_type.name if scan_type == "Burp Scan": parser = BurpXmlParser(file, test) elif scan_type == "Burp Enterprise Scan": parser = BurpEnterpriseHtmlParser(file, test) elif scan_type == "Nessus Scan": filename = file.name.lower() if filename.endswith("csv"): parser = NessusCSVParser(file, test) elif filename.endswith("xml") or filename.endswith("nessus"): parser = NessusXMLParser(file, test) elif scan_type == "Clair Scan": parser = ClairParser(file, test) elif scan_type == "Nmap Scan": parser = NmapXMLParser(file, test) elif scan_type == "Nikto Scan": parser = NiktoXMLParser(file, test) elif scan_type == "Nexpose Scan": parser = NexposeFullXmlParser(file, test) elif scan_type == "Veracode Scan": parser = VeracodeXMLParser(file, test) elif scan_type == "Checkmarx Scan": parser = CheckmarxXMLParser(file, test) elif scan_type == "Checkmarx Scan detailed": parser = CheckmarxXMLParser(file, test, 'detailed') elif scan_type == "Contrast Scan": parser = ContrastCSVParser(file, test) elif scan_type == "Crashtest Security JSON File": parser = CrashtestSecurityJsonParser(file, test) elif scan_type == "Crashtest Security XML File": parser = CrashtestSecurityXmlParser(file, test) elif scan_type == "Bandit Scan": parser = BanditParser(file, test) elif scan_type == "ESLint Scan": parser = ESLintParser(file, test) elif scan_type == "ZAP Scan": parser = ZapXmlParser(file, test) elif scan_type == "AppSpider Scan": parser = AppSpiderXMLParser(file, test) elif scan_type == "Arachni Scan": parser = ArachniJSONParser(file, test) elif scan_type == 'VCG Scan': parser = VCGParser(file, test) elif scan_type == 'Dependency Check Scan': parser = DependencyCheckParser(file, test) elif scan_type == 'Dependency Track Finding Packaging Format (FPF) Export': parser = DependencyTrackParser(file, test) elif scan_type == 'Retire.js Scan': parser = RetireJsParser(file, test) elif scan_type == 'Node Security Platform Scan': parser = NspParser(file, test) elif scan_type == 'NPM Audit Scan': parser = NpmAuditParser(file, test) elif scan_type == 'PHP Symfony Security Check': parser = PhpSymfonySecurityCheckParser(file, test) elif scan_type == 'Generic Findings Import': parser = GenericFindingUploadCsvParser(file, test, active, verified) elif scan_type == 'Qualys Scan': parser = QualysParser(file, test) elif scan_type == 'Qualys Infrastructure Scan (WebGUI XML)': parser = QualysInfraScanParser(file, test) elif scan_type == 'Qualys Webapp Scan': parser = QualysWebAppParser(file, test) elif scan_type == "OpenVAS CSV": parser = OpenVASUploadCsvParser(file, test) elif scan_type == 'Snyk Scan': parser = SnykParser(file, test) elif scan_type == 'SKF Scan': parser = SKFCsvParser(file, test) elif scan_type == 'SSL Labs Scan': parser = SSLlabsParser(file, test) elif scan_type == 'Trufflehog Scan': parser = TruffleHogJSONParser(file, test) elif scan_type == 'Clair Klar Scan': parser = ClairKlarParser(file, test) elif scan_type == 'Gosec Scanner': parser = GosecScannerParser(file, test) elif scan_type == 'Trustwave Scan (CSV)': parser = TrustwaveUploadCsvParser(file, test) elif scan_type == 'Netsparker Scan': parser = NetsparkerParser(file, test) elif scan_type == 'PHP Security Audit v2': parser = PhpSecurityAuditV2(file, test) elif scan_type == 'Acunetix Scan': parser = AcunetixScannerParser(file, test) elif scan_type == 'Fortify Scan': parser = FortifyXMLParser(file, test) elif scan_type == 'SonarQube Scan': parser = SonarQubeHtmlParser(file, test) elif scan_type == 'SonarQube Scan detailed': parser = SonarQubeHtmlParser(file, test, 'detailed') elif scan_type == SCAN_SONARQUBE_API: parser = SonarQubeApiImporter(test) elif scan_type == 'MobSF Scan': parser = MobSFParser(file, test) elif scan_type == 'AWS Scout2 Scan': parser = AWSScout2Parser(file, test) elif scan_type == 'AWS Prowler Scan': parser = AWSProwlerParser(file, test) elif scan_type == 'Brakeman Scan': parser = BrakemanScanParser(file, test) elif scan_type == 'SpotBugs Scan': parser = SpotbugsXMLParser(file, test) elif scan_type == 'Safety Scan': parser = SafetyParser(file, test) elif scan_type == 'DawnScanner Scan': parser = DawnScannerParser(file, test) elif scan_type == 'Anchore Engine Scan': parser = AnchoreEngineScanParser(file, test) elif scan_type == 'Bundler-Audit Scan': parser = BundlerAuditParser(file, test) elif scan_type == 'Twistlock Image Scan': parser = TwistlockParser(file, test) elif scan_type == 'IBM AppScan DAST': parser = IbmAppScanDASTXMLParser(file, test) elif scan_type == 'Kiuwan Scan': parser = KiuwanCSVParser(file, test) elif scan_type == 'Blackduck Hub Scan': parser = BlackduckHubCSVParser(file, test) elif scan_type == 'Blackduck Component Risk': parser = BlackduckHubParser(file, test) elif scan_type == 'Sonatype Application Scan': parser = SonatypeJSONParser(file, test) elif scan_type == 'Openscap Vulnerability Scan': parser = OpenscapXMLParser(file, test) elif scan_type == 'Immuniweb Scan': parser = ImmuniwebXMLParser(file, test) elif scan_type == 'Wapiti Scan': parser = WapitiXMLParser(file, test) elif scan_type == 'Cobalt.io Scan': parser = CobaltCSVParser(file, test) elif scan_type == 'Mozilla Observatory Scan': parser = MozillaObservatoryJSONParser(file, test) elif scan_type == 'Whitesource Scan': parser = WhitesourceJSONParser(file, test) elif scan_type == 'Microfocus Webinspect Scan': parser = MicrofocusWebinspectXMLParser(file, test) elif scan_type == 'Wpscan': parser = WpscanJSONParser(file, test) elif scan_type == 'Sslscan': parser = SslscanXMLParser(file, test) elif scan_type == 'JFrog Xray Scan': parser = XrayJSONParser(file, test) elif scan_type == 'Sslyze Scan': parser = SslyzeXmlParser(file, test) elif scan_type == 'Testssl Scan': parser = TestsslCSVParser(file, test) elif scan_type == 'Hadolint Dockerfile check': parser = HadolintParser(file, test) elif scan_type == 'Aqua Scan': parser = AquaJSONParser(file, test) elif scan_type == 'HackerOne Cases': parser = HackerOneJSONParser(file, test) elif scan_type == 'Xanitizer Scan': parser = XanitizerXMLParser(file, test) elif scan_type == 'Trivy Scan': parser = TrivyParser(file, test) elif scan_type == 'Outpost24 Scan': parser = Outpost24Parser(file, test) elif scan_type == 'DSOP Scan': parser = DsopParser(file, test) elif scan_type == 'Anchore Enterprise Policy Check': parser = AnchoreEnterprisePolicyCheckParser(file, test) elif scan_type == 'Gitleaks Scan': parser = GitleaksJSONParser(file, test) elif scan_type == 'Harbor Vulnerability Scan': parser = HarborVulnerabilityParser(file, test) elif scan_type == 'Github Vulnerability Scan': parser = GithubVulnerabilityParser(file, test) elif scan_type == 'Choctaw Hog Scan': parser = ChoctawhogParser(file, test) elif scan_type == 'GitLab SAST Report': parser = GitlabSastReportParser(file, test) elif scan_type == 'Yarn Audit Scan': parser = YarnAuditParser(file, test) elif scan_type == 'BugCrowd Scan': parser = BugCrowdCSVParser(file, test) elif scan_type == 'HuskyCI Report': parser = HuskyCIReportParser(file, test) elif scan_type == 'CCVS Report': parser = CCVSReportParser(file, test) else: raise ValueError('Unknown Test Type') return parser
def test_parse_csv_with_only_headers_results_in_no_findings(self): content = "Date,Title,CweId,Url,Severity,Description,Mitigation,Impact,References,Active,Verified" file = TestFile("findings.csv", content) self.parser = GenericFindingUploadCsvParser(file, self.test, True, True) self.assertEqual(0, len(self.parser.items))
def test_parse_no_csv_content_no_findings(self): findings = "" file = TestFile("findings.csv", findings) self.parser = GenericFindingUploadCsvParser(file, self.test, True, True) self.assertEqual(0, len(self.parser.items))
def setUp(self): self.parser = GenericFindingUploadCsvParser(None, Test())
def test_missing_columns_is_fine(self): content = """Date,Title,Url,Severity,Description,References,Active,Verified""" file = TestFile("findings.csv", content) self.parser = GenericFindingUploadCsvParser(file, self.test, True, True)
def import_parser_factory(file, test, active, verified, scan_type=None): if scan_type is None: scan_type = test.test_type.name if scan_type == "Burp Scan": parser = BurpXmlParser(file, test) elif scan_type == "Nessus Scan": filename = file.name.lower() if filename.endswith("csv"): parser = NessusCSVParser(file, test) elif filename.endswith("xml") or filename.endswith("nessus"): parser = NessusXMLParser(file, test) elif scan_type == "Clair Scan": parser = ClairParser(file, test) elif scan_type == "Nmap Scan": parser = NmapXMLParser(file, test) elif scan_type == "Nikto Scan": parser = NiktoXMLParser(file, test) elif scan_type == "Nexpose Scan": parser = NexposeFullXmlParser(file, test) elif scan_type == "Veracode Scan": parser = VeracodeXMLParser(file, test) elif scan_type == "Checkmarx Scan": parser = CheckmarxXMLParser(file, test) elif scan_type == "Contrast Scan": parser = ContrastCSVParser(file, test) elif scan_type == "Crashtest Security Scan": parser = CrashtestSecurityXmlParser(file, test) elif scan_type == "Bandit Scan": parser = BanditParser(file, test) elif scan_type == "ZAP Scan": parser = ZapXmlParser(file, test) elif scan_type == "AppSpider Scan": parser = AppSpiderXMLParser(file, test) elif scan_type == "Arachni Scan": parser = ArachniJSONParser(file, test) elif scan_type == 'VCG Scan': parser = VCGParser(file, test) elif scan_type == 'Dependency Check Scan': parser = DependencyCheckParser(file, test) elif scan_type == 'Retire.js Scan': parser = RetireJsParser(file, test) elif scan_type == 'Node Security Platform Scan': parser = NspParser(file, test) elif scan_type == 'NPM Audit Scan': parser = NpmAuditParser(file, test) elif scan_type == 'Symfony Security Check': parser = PhpSymfonySecurityCheckParser(file, test) elif scan_type == 'Generic Findings Import': parser = GenericFindingUploadCsvParser(file, test, active, verified) elif scan_type == 'Qualys Scan': parser = QualysParser(file, test) elif scan_type == 'Qualys Webapp Scan': parser = QualysWebAppParser(file, test) elif scan_type == "OpenVAS CSV": parser = OpenVASUploadCsvParser(file, test) elif scan_type == 'Snyk Scan': parser = SnykParser(file, test) elif scan_type == 'SKF Scan': parser = SKFCsvParser(file, test) elif scan_type == 'SSL Labs Scan': parser = SSLlabsParser(file, test) elif scan_type == 'Trufflehog Scan': parser = TruffleHogJSONParser(file, test) elif scan_type == 'Clair Klar Scan': parser = ClairKlarParser(file, test) elif scan_type == 'Gosec Scanner': parser = GosecScannerParser(file, test) elif scan_type == 'Trustwave Scan (CSV)': parser = TrustwaveUploadCsvParser(file, test) elif scan_type == 'Netsparker Scan': parser = NetsparkerParser(file, test) elif scan_type == 'PHP Security Audit v2': parser = PhpSecurityAuditV2(file, test) elif scan_type == 'Acunetix Scan': parser = AcunetixScannerParser(file, test) elif scan_type == 'Fortify Scan': parser = FortifyXMLParser(file, test) elif scan_type == 'SonarQube Scan': parser = SonarQubeHtmlParser(file, test) elif scan_type == 'MobSF Scan': parser = MobSFParser(file, test) elif scan_type == 'AWS Scout2 Scan': parser = AWSScout2Parser(file, test) elif scan_type == 'AWS Prowler Scan': parser = AWSProwlerParser(file, test) elif scan_type == 'Brakeman Scan': parser = BrakemanScanParser(file, test) elif scan_type == 'SpotBugs Scan': parser = SpotbugsXMLParser(file, test) elif scan_type == 'Safety Scan': parser = SafetyParser(file, test) elif scan_type == 'DawnScanner Scan': parser = DawnScannerParser(file, test) elif scan_type == 'Anchore Engine Scan': parser = AnchoreEngineScanParser(file, test) elif scan_type == 'Bundler-Audit Scan': parser = BundlerAuditParser(file, test) elif scan_type == 'Twistlock Image Scan': parser = TwistlockParser(file, test) elif scan_type == 'IBM AppScan DAST': parser = IbmAppScanDASTXMLParser(file, test) elif scan_type == 'Kiuwan Scan': parser = KiuwanCSVParser(file, test) elif scan_type == 'Blackduck Hub Scan': parser = BlackduckHubCSVParser(file, test) elif scan_type == 'Sonatype Application Scan': parser = SonatypeJSONParser(file, test) elif scan_type == 'Openscap Vulnerability Scan': parser = OpenscapXMLParser(file, test) elif scan_type == 'Immuniweb Scan': parser = ImmuniwebXMLParser(file, test) elif scan_type == 'Wapiti Scan': parser = WapitiXMLParser(file, test) elif scan_type == 'Cobalt.io Scan': parser = CobaltCSVParser(file, test) elif scan_type == 'Mozilla Observatory Scan': parser = MozillaObservatoryJSONParser(file, test) elif scan_type == 'Whitesource Scan': parser = WhitesourceJSONParser(file, test) elif scan_type == 'Microfocus Webinspect Scan': parser = MicrofocusWebinspectXMLParser(file, test) elif scan_type == 'Wpscan': parser = WpscanJSONParser(file, test) elif scan_type == 'Sslscan': parser = SslscanXMLParser(file, test) elif scan_type == 'JFrog Xray Scan': parser = XrayJSONParser(file, test) elif scan_type == 'Sslyze Scan': parser = SslyzeXmlParser(file, test) elif scan_type == 'Testssl Scan': parser = TestsslCSVParser(file, test) elif scan_type == 'Hadolint Dockerfile check': parser = HadolintParser(file, test) else: raise ValueError('Unknown Test Type') return parser