diff --git a/jest.config.js b/jest.config.js index 27a047a2..8c7977c5 100644 --- a/jest.config.js +++ b/jest.config.js @@ -44,7 +44,7 @@ module.exports = { collectCoverageFrom: ['**/*.{ts,tsx}', '!**/*.d.ts', '!**/node_modules/**'], coverageThreshold: { "global": { - "branches": 60, + "branches": 65, "functions": 80, "lines": 80, "statements": 80 diff --git a/src/main/vorpal/VorpalScanDetail.ts b/src/main/asca/AscaScanDetail.ts similarity index 93% rename from src/main/vorpal/VorpalScanDetail.ts rename to src/main/asca/AscaScanDetail.ts index bc8bf61c..5796fc82 100644 --- a/src/main/vorpal/VorpalScanDetail.ts +++ b/src/main/asca/AscaScanDetail.ts @@ -1,4 +1,4 @@ -export default class VorpalScanDetail { +export default class AscaScanDetail { ruleId: number; language: string; ruleName: string; diff --git a/src/main/vorpal/CxVorpal.ts b/src/main/asca/CxAsca.ts similarity index 82% rename from src/main/vorpal/CxVorpal.ts rename to src/main/asca/CxAsca.ts index af03c5fc..4248d46d 100644 --- a/src/main/vorpal/CxVorpal.ts +++ b/src/main/asca/CxAsca.ts @@ -1,10 +1,10 @@ -import VorpalScanDetail from "./VorpalScanDetail"; +import AscaScanDetail from "./AscaScanDetail"; -export default class CxVorpal { +export default class CxAsca { requestId: string; status: boolean; message: string; - scanDetails: VorpalScanDetail[]; + scanDetails: AscaScanDetail[]; error: any; constructor() { @@ -15,8 +15,8 @@ export default class CxVorpal { this.error = null; } - static parseScan(resultObject: any): CxVorpal { - const scan = new CxVorpal(); + static parseScan(resultObject: any): CxAsca { + const scan = new CxAsca(); scan.requestId = resultObject.request_id; scan.status = resultObject.status; scan.message = resultObject.message; @@ -24,7 +24,7 @@ export default class CxVorpal { if (resultObject.scan_details instanceof Array) { scan.scanDetails = resultObject.scan_details.map((detail: any) => { - const scanDetail = new VorpalScanDetail(); + const scanDetail = new AscaScanDetail(); scanDetail.ruleId = detail.rule_id; scanDetail.language = detail.language; scanDetail.ruleName = detail.rule_name; diff --git a/src/main/wrapper/CxConstants.ts b/src/main/wrapper/CxConstants.ts index 72288d9c..479cb5e4 100644 --- a/src/main/wrapper/CxConstants.ts +++ b/src/main/wrapper/CxConstants.ts @@ -65,9 +65,9 @@ export enum CxConstants { FORMAT_HTML_CLI = "summaryHTML", FILTER = "--filter", SCAN_ID = "--scan-id", - CMD_VORPAL = "vorpal", + CMD_ASCA = "asca", SOURCE_FILE = "--file-source", - VORPAL_UPDATE_VERSION = "--vorpal-latest-version", + ASCA_UPDATE_VERSION = "--asca-latest-version", PROJECT_ID = "--project-id", SIMILARITY_ID = "--similarity-id", QUERY_ID = "--query-id", @@ -81,7 +81,7 @@ export enum CxConstants { ADDITONAL_PARAMS = "--additional-params", ENGINE = "--engine", SCAN_TYPE = "CxScan", - SCAN_VORPAL = "CxVorpal", + SCAN_ASCA = "CxAsca", PROJECT_TYPE = "CxProject", PREDICATE_TYPE = "CxPredicate", CODE_BASHING_TYPE = "CxCodeBashing", diff --git a/src/main/wrapper/CxWrapper.ts b/src/main/wrapper/CxWrapper.ts index a94c23c3..69a29e4c 100644 --- a/src/main/wrapper/CxWrapper.ts +++ b/src/main/wrapper/CxWrapper.ts @@ -147,11 +147,11 @@ export class CxWrapper { return await exec.executeCommands(this.config.pathToExecutable, commands, CxConstants.SCAN_TYPE); } - async scanVorpal(sourceFile: string, updateVersion = false, agent?: string | null): Promise { - const commands: string[] = [CxConstants.CMD_SCAN, CxConstants.CMD_VORPAL, CxConstants.SOURCE_FILE, sourceFile]; + async scanAsca(sourceFile: string, updateVersion = false, agent?: string | null): Promise { + const commands: string[] = [CxConstants.CMD_SCAN, CxConstants.CMD_ASCA, CxConstants.SOURCE_FILE, sourceFile]; if (updateVersion) { - commands.push(CxConstants.VORPAL_UPDATE_VERSION); + commands.push(CxConstants.ASCA_UPDATE_VERSION); } if (agent) { commands.push(CxConstants.AGENT); @@ -165,7 +165,7 @@ export class CxWrapper { commands.push(...this.initializeCommands(false)); const exec = new ExecutionService(); - return await exec.executeCommands(this.config.pathToExecutable, commands, CxConstants.SCAN_VORPAL); + return await exec.executeCommands(this.config.pathToExecutable, commands, CxConstants.SCAN_ASCA); } async scanCancel(id: string): Promise { diff --git a/src/main/wrapper/ExecutionService.ts b/src/main/wrapper/ExecutionService.ts index 6311d5b6..20123524 100644 --- a/src/main/wrapper/ExecutionService.ts +++ b/src/main/wrapper/ExecutionService.ts @@ -22,7 +22,7 @@ import CxKicsRemediation from "../remediation/CxKicsRemediation"; import CxScaRealTime from "../scaRealtime/CxScaRealTime"; import CxChat from "../chat/CxChat"; import CxMask from "../mask/CxMask"; -import CxVorpal from "../vorpal/CxVorpal"; +import CxAsca from "../asca/CxAsca"; let skipValue = false; const fileSourceFlag = "--file-source" @@ -200,9 +200,9 @@ export class ExecutionService { const scans = CxScan.parseProject(resultObject); cxCommandOutput.payload = scans; break; - case CxConstants.SCAN_VORPAL: - const vorpal = CxVorpal.parseScan(resultObject); - cxCommandOutput.payload = [vorpal]; + case CxConstants.SCAN_ASCA: + const asca = CxAsca.parseScan(resultObject); + cxCommandOutput.payload = [asca]; break; case CxConstants.PROJECT_TYPE: const projects = CxProject.parseProject(resultObject); diff --git a/src/tests/ScanTest.test.ts b/src/tests/ScanTest.test.ts index 2e17e0e3..6a4a73bd 100644 --- a/src/tests/ScanTest.test.ts +++ b/src/tests/ScanTest.test.ts @@ -127,46 +127,46 @@ describe("ScanCreate cases", () => { expect(aiEnabled).toBeDefined(); }) - // it('ScanVorpal fail case Without extensions', async () => { - // const auth = await cxWrapperFactory.createWrapper(cxScanConfig); - // const cxCommandOutput: CxCommandOutput = await auth.scanVorpal("tsc/tests/data/python-file"); - // console.log(" Json object from failure case: " + JSON.stringify(cxCommandOutput)); - // - // expect(cxCommandOutput.payload[0].error.description).toEqual("The file name must have an extension."); - // expect(cxCommandOutput.exitCode).toBe(0); - // expect(cxCommandOutput.payload[0].status).toBeUndefined(); - // }); - - // it('ScanVorpal Successful case', async () => { - // const auth = await cxWrapperFactory.createWrapper(cxScanConfig); - // const cxCommandOutput: CxCommandOutput = await auth.scanVorpal("tsc/tests/data/python-vul-file.py"); - // console.log("Json object from scanVorpal successful case: " + JSON.stringify(cxCommandOutput)); - // const scanObject = cxCommandOutput.payload.pop(); - // expect(cxCommandOutput.payload).toBeDefined(); - // expect(cxCommandOutput.exitCode).toBe(0); - // expect(scanObject.status).toEqual(true); - // }); - // - // it('ScanVorpal with complex name Successful case', async () => { - // const auth = await cxWrapperFactory.createWrapper(cxScanConfig); - // const cxCommandOutput: CxCommandOutput = await auth.scanVorpal("tsc/tests/data/var express = require('express';.js"); - // console.log("Json object from scanVorpal successful case: " + JSON.stringify(cxCommandOutput)); - // const scanObject = cxCommandOutput.payload.pop(); - // expect(cxCommandOutput.payload).toBeDefined(); - // expect(cxCommandOutput.exitCode).toBe(0); - // expect(scanObject.status).toEqual(true); - // }); - // - // it('ScanVorpal Successful case with update version', async () => { - // const auth = await cxWrapperFactory.createWrapper(cxScanConfig); - // const cxCommandOutput: CxCommandOutput = await auth.scanVorpal("tsc/tests/data/python-vul-file.py", true); - // console.log("Json object from scanVorpal successful case with update version: " + JSON.stringify(cxCommandOutput)); - // const scanObject = cxCommandOutput.payload.pop(); - // expect(cxCommandOutput.payload).toBeDefined(); - // expect(cxCommandOutput.exitCode).toBe(0); - // expect(scanObject.status).toEqual(true); - // expect(Number.isInteger(scanObject.scanDetails[0].line)).toBe(true); - // expect(typeof scanObject.scanDetails[0].description).toBe('string'); - // }); + it('ScanAsca fail case Without extensions', async () => { + const auth = await cxWrapperFactory.createWrapper(cxScanConfig); + const cxCommandOutput: CxCommandOutput = await auth.scanAsca("tsc/tests/data/python-file"); + console.log(" Json object from failure case: " + JSON.stringify(cxCommandOutput)); + + expect(cxCommandOutput.payload[0].error.description).toEqual("The file name must have an extension."); + expect(cxCommandOutput.exitCode).toBe(0); + expect(cxCommandOutput.payload[0].status).toBeUndefined(); + }); + + it('ScanAsca Successful case', async () => { + const auth = await cxWrapperFactory.createWrapper(cxScanConfig); + const cxCommandOutput: CxCommandOutput = await auth.scanAsca("tsc/tests/data/python-vul-file.py"); + console.log("Json object from scanAsca successful case: " + JSON.stringify(cxCommandOutput)); + const scanObject = cxCommandOutput.payload.pop(); + expect(cxCommandOutput.payload).toBeDefined(); + expect(cxCommandOutput.exitCode).toBe(0); + expect(scanObject.status).toEqual(true); + }); + + it('ScanAsca with complex name Successful case', async () => { + const auth = await cxWrapperFactory.createWrapper(cxScanConfig); + const cxCommandOutput: CxCommandOutput = await auth.scanAsca("tsc/tests/data/var express = require('express';.js"); + console.log("Json object from scanAsca successful case: " + JSON.stringify(cxCommandOutput)); + const scanObject = cxCommandOutput.payload.pop(); + expect(cxCommandOutput.payload).toBeDefined(); + expect(cxCommandOutput.exitCode).toBe(0); + expect(scanObject.status).toEqual(true); + }); + + it('ScanAsca Successful case with update version', async () => { + const auth = await cxWrapperFactory.createWrapper(cxScanConfig); + const cxCommandOutput: CxCommandOutput = await auth.scanAsca("tsc/tests/data/python-vul-file.py", true); + console.log("Json object from scanAsca successful case with update version: " + JSON.stringify(cxCommandOutput)); + const scanObject = cxCommandOutput.payload.pop(); + expect(cxCommandOutput.payload).toBeDefined(); + expect(cxCommandOutput.exitCode).toBe(0); + expect(scanObject.status).toEqual(true); + expect(Number.isInteger(scanObject.scanDetails[0].line)).toBe(true); + expect(typeof scanObject.scanDetails[0].description).toBe('string'); + }); });