Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions src/main/oss/CxManifestStatus.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
export enum CxManifestStatus {
malicious = "Malicious",
ok = "Ok",
unknown = "Unknown"
}
46 changes: 46 additions & 0 deletions src/main/oss/CxOss.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
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;


static parseResult(resultObject: any): CxOssResult[] {
let ossResults: CxOssResult[] = [];
if (resultObject instanceof Array) {
ossResults = resultObject.map((member: any) => {
const ossResult = new CxOssResult();
ossResult.packageManager = member.PackageManager;
ossResult.packageName = member.PackageName;
ossResult.version = member.Version;
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;
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);
}
return ossResults;
}
}
2 changes: 2 additions & 0 deletions src/main/wrapper/CxConstants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ export enum CxConstants {
CMD_ASCA = "asca",
SOURCE_FILE = "--file-source",
ASCA_UPDATE_VERSION = "--asca-latest-version",
CMD_OSS = "oss-realtime",
PROJECT_ID = "--project-id",
SIMILARITY_ID = "--similarity-id",
QUERY_ID = "--query-id",
Expand All @@ -87,6 +88,7 @@ export enum CxConstants {
ENGINE = "--engine",
SCAN_TYPE = "CxScan",
SCAN_ASCA = "CxAsca",
SCAN_OSS = "CxOss",
PROJECT_TYPE = "CxProject",
PREDICATE_TYPE = "CxPredicate",
CODE_BASHING_TYPE = "CxCodeBashing",
Expand Down
7 changes: 7 additions & 0 deletions src/main/wrapper/CxWrapper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,13 @@ export class CxWrapper {
return await exec.executeCommands(this.config.pathToExecutable, commands, CxConstants.SCAN_ASCA);
}

async scanOss(sourceFile: string): Promise<CxCommandOutput> {
const commands: string[] = [CxConstants.CMD_SCAN, CxConstants.CMD_OSS, CxConstants.SOURCE, sourceFile];
commands.push(...this.initializeCommands(false));
const exec = new ExecutionService();
return await exec.executeCommands(this.config.pathToExecutable, commands, CxConstants.SCAN_OSS);
}

async scanCancel(id: string): Promise<CxCommandOutput> {
const commands: string[] = [CxConstants.CMD_SCAN, CxConstants.SUB_CMD_CANCEL, CxConstants.SCAN_ID, id];
commands.push(...this.initializeCommands(false));
Expand Down
5 changes: 5 additions & 0 deletions src/main/wrapper/ExecutionService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import CxScaRealTime from "../scaRealtime/CxScaRealTime";
import CxChat from "../chat/CxChat";
import CxMask from "../mask/CxMask";
import CxAsca from "../asca/CxAsca";
import CxOssResult from "../oss/CxOss";

let skipValue = false;
const fileSourceFlag = "--file-source"
Expand Down Expand Up @@ -205,6 +206,10 @@ export class ExecutionService {
const asca = CxAsca.parseScan(resultObject);
cxCommandOutput.payload = [asca];
break;
case CxConstants.SCAN_OSS:
const oss = CxOssResult.parseResult(resultObject);
cxCommandOutput.payload = [oss];
break;
case CxConstants.PROJECT_TYPE:
const projects = CxProject.parseProject(resultObject);
cxCommandOutput.payload = projects;
Expand Down
8 changes: 8 additions & 0 deletions src/tests/ScanTest.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -166,5 +166,13 @@ describe("ScanCreate cases", () => {
expect(Number.isInteger(scanObject.scanDetails[0].line)).toBe(true);
expect(typeof scanObject.scanDetails[0].description).toBe('string');
});

it('ScanOss Successful case', async () => {
const auth = new CxWrapper(cxScanConfig);
const cxCommandOutput: CxCommandOutput = await auth.scanOss("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);
});

});
8 changes: 8 additions & 0 deletions tsc/tests/data/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"name": "test",
"version": "0.0.1",
"description": "AST CLI Javascript wrapper tests",
"dependencies": {
"log4js": "^6.9.1"
}
}
Loading