diff --git a/src/main/oss/CxManifestStatus.ts b/src/main/oss/CxManifestStatus.ts index b0e5c354..9947cf3d 100644 --- a/src/main/oss/CxManifestStatus.ts +++ b/src/main/oss/CxManifestStatus.ts @@ -1,5 +1,9 @@ export enum CxManifestStatus { malicious = "Malicious", ok = "OK", - unknown = "Unknown" + unknown = "Unknown", + critical = "Critical", + high = "High", + medium = "Medium", + low = "Low" } diff --git a/src/main/oss/CxOss.ts b/src/main/oss/CxOss.ts index 3dbfe7e2..6b49bde1 100644 --- a/src/main/oss/CxOss.ts +++ b/src/main/oss/CxOss.ts @@ -1,45 +1,60 @@ -import {CxManifestStatus} from './CxManifestStatus'; +import { CxManifestStatus } from './CxManifestStatus'; export default class CxOssResult { - packageManager : string; - packageName : string; - version : string; - filepath : string; - lineStart : number; - lineEnd : number; - startIndex : number; - endIndex : number; - status :CxManifestStatus; - + packageManager: string; + packageName: string; + version: string; + filepath: string; + lineStart: number; + lineEnd: number; + startIndex: number; + endIndex: number; + status: CxManifestStatus; + vulnerabilities: { cve: string, description: string, severity: string }[]; static parseResult(resultObject: any): CxOssResult[] { + const packages = resultObject.Packages; let ossResults: CxOssResult[] = []; - if (resultObject instanceof Array) { - ossResults = resultObject.map((member: any) => { + if (packages instanceof Array) { + ossResults = packages.map((member: any) => { const ossResult = new CxOssResult(); ossResult.packageManager = member.PackageManager; ossResult.packageName = member.PackageName; - ossResult.version = member.Version; - ossResult.filepath = member.Filepath; + ossResult.version = member.PackageVersion; + ossResult.filepath = member.FilePath; ossResult.lineStart = member.LineStart; ossResult.lineEnd = member.LineEnd; ossResult.startIndex = member.StartIndex; ossResult.endIndex = member.EndIndex; ossResult.status = member.Status as CxManifestStatus; + ossResult.vulnerabilities = Array.isArray(member.Vulnerabilities) + ? member.Vulnerabilities.map((vul: any) => ({ + cve: vul.CVE, + description: vul.Description, + severity: vul.Severity + })) + : []; return ossResult; }); } else { - const ossResult = new CxOssResult(); - ossResult.packageManager = resultObject.PackageManager; - ossResult.packageName = resultObject.PackageName; - ossResult.version = resultObject.Version; - ossResult.filepath = resultObject.FilePath; - ossResult.lineStart = resultObject.LineStart; - ossResult.lineEnd = resultObject.LineEnd; - ossResult.startIndex = resultObject.StartIndex; - ossResult.endIndex = resultObject.EndIndex; - ossResult.status = resultObject.Status as CxManifestStatus; - ossResults.push(ossResult); + const ossResult = new CxOssResult(); + ossResult.packageManager = packages.PackageManager; + ossResult.packageName = packages.PackageName; + ossResult.version = packages.PackageVersion; + ossResult.filepath = packages.FilePath; + ossResult.lineStart = packages.LineStart; + ossResult.lineEnd = packages.LineEnd; + ossResult.startIndex = packages.StartIndex; + ossResult.endIndex = packages.EndIndex; + ossResult.status = packages.Status as CxManifestStatus; + ossResult.vulnerabilities = Array.isArray(packages.Vulnerabilities) + ? packages.Vulnerabilities.map((vul: any) => ({ + cve: vul.CVE, + description: vul.Description, + severity: vul.Severity + })) + : []; + ossResults.push(ossResult); } return ossResults; } diff --git a/src/main/wrapper/CxWrapper.ts b/src/main/wrapper/CxWrapper.ts index 23807e8a..18028455 100644 --- a/src/main/wrapper/CxWrapper.ts +++ b/src/main/wrapper/CxWrapper.ts @@ -147,7 +147,7 @@ export class CxWrapper { return await exec.executeCommands(this.config.pathToExecutable, commands, CxConstants.SCAN_ASCA); } - async scanOss(sourceFile: string): Promise { + async ossScanResults(sourceFile: string): Promise { const commands: string[] = [CxConstants.CMD_SCAN, CxConstants.CMD_OSS, CxConstants.SOURCE, sourceFile]; commands.push(...this.initializeCommands(false)); const exec = new ExecutionService(); diff --git a/src/tests/ScanTest.test.ts b/src/tests/ScanTest.test.ts index 34ad480f..646d0eb9 100644 --- a/src/tests/ScanTest.test.ts +++ b/src/tests/ScanTest.test.ts @@ -169,7 +169,7 @@ describe("ScanCreate cases", () => { it.skip('ScanOss Successful case', async () => { const wrapper = new CxWrapper(cxScanConfig); - const cxCommandOutput: CxCommandOutput = await wrapper.scanOss("tsc/tests/data/package.json"); + const cxCommandOutput: CxCommandOutput = await wrapper.ossScanResults("tsc/tests/data/package.json"); console.log("Json object from scanOSS successful case: " + JSON.stringify(cxCommandOutput)); expect(cxCommandOutput.payload).toBeDefined(); expect(cxCommandOutput.exitCode).toBe(0);