Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add new structure and branch to types #32

Merged
merged 1 commit into from
Dec 20, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
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: 3 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,11 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
- name: Use Node.js 12
uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node-version }}
node-version: 12
registry-url: https://npm.pkg.github.com/
- run: npm ci
- run: npm run build --if-present
- name: Run tests
Expand Down
23 changes: 1 addition & 22 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

38 changes: 32 additions & 6 deletions src/main/project/CxProject.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,34 @@
export default class CxProject {
ID: string = " ";
Name: string = " ";
CreatedAt: string = " ";
UpdatedAt: string = " ";
Tags: object = {} ;
Groups: any = [] ;
id: string = " ";
name: string = " ";
createdAt: string = " ";
updatedAt: string = " ";
tags: object = {};
groups: any = [];

static parseProject(resultObject: any): CxProject[] {
let projects: CxProject[] = [];
if (resultObject instanceof Array) {
projects = resultObject.map((member: any) => {
let project = new CxProject();
project.id = member.ID;
project.name = member.Name;
project.createdAt = member.CreatedAt;
project.updatedAt = member.UpdatedAt;
project.tags = member.Tags;
project.groups = member.Groups;
return project;
});
} else {
let project = new CxProject();
project.id = resultObject.ID;
project.name = resultObject.Name;
project.createdAt = resultObject.CreatedAt;
project.updatedAt = resultObject.UpdatedAt;
project.tags = resultObject.Tags;
project.groups = resultObject.Groups;
projects.push(project);
}
return projects;
}
}
55 changes: 45 additions & 10 deletions src/main/scan/CxScan.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,46 @@
export default class CxScan {
ID: string = "";
ProjectID: string = "";
Status: string = "";
CreatedAt: string = "";
UpdatedAt: string = "";
Tags: object = {};
Groups: any =[];
Initiator: string = "";
Origin: string = "";
}
id: string = "";
projectID: string = "";
status: string = "";
createdAt: string = "";
updatedAt: string = "";
tags: object = {};
groups: any = [];
initiator: string = "";
origin: string = "";
branch: string = "";

static parseProject(resultObject: any): CxScan[] {
let scans: CxScan[] = [];
if (resultObject instanceof Array) {
scans = resultObject.map((member: any) => {
let scan = new CxScan();
scan.id = member.ID;
scan.projectID = member.ProjectID;
scan.status = member.Status;
scan.createdAt = member.CreatedAt;
scan.updatedAt = member.UpdatedAt;
scan.tags = member.Tags;
scan.groups = member.Groups;
scan.origin = member.Origin;
scan.initiator = member.Initiator;
scan.branch = member.Initiator;
return scan;
});
} else {
let scan = new CxScan();
scan.id = resultObject.ID;
scan.projectID = resultObject.ProjectID;
scan.status = resultObject.Status;
scan.createdAt = resultObject.CreatedAt;
scan.updatedAt = resultObject.UpdatedAt;
scan.tags = resultObject.Tags;
scan.groups = resultObject.Groups;
scan.origin = resultObject.Origin;
scan.initiator = resultObject.Initiator;
scan.branch = resultObject.Initiator;
scans.push(scan);
}
return scans;
}
}
37 changes: 8 additions & 29 deletions src/main/wrapper/ExecutionService.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import {CxCommandOutput} from "./CxCommandOutput";
import CxScan from "../scan/CxScan";
import CxProject from "../project/CxProject";
import { logger } from "./loggerConfig";
import * as fs from "fs"
import * as os from "os";
import * as path from "path";
import CxResult from "../results/CxResult";
import CxProject from "../project/CxProject";

const spawn = require('child_process').spawn;

Expand All @@ -25,7 +25,9 @@ function transformation(commands: string[]):string[] {
}

function transform(n:string) {
return n.replace(/["']/g, "").replace("/[, ]/g",",")
let r = "";
if(n) r = n.replace(/["']/g, "").replace("/[, ]/g",",");
return r;
}

export class ExecutionService {
Expand Down Expand Up @@ -57,41 +59,18 @@ export class ExecutionService {
// Check if the json is valid
if (isJsonString(output_string.toString())) {
let resultObject = JSON.parse(output_string.toString().split('\n')[0]);
// Some cli outputs have array format, must be checked
if (resultObject instanceof Array) {
// Check if there is a specific type for the output and make conversions
switch(output){
case 'CxScan':
let r = resultObject.map((member)=>{return Object.assign( new CxScan(),member);}) ;
cxCommandOutput.payload = r;
let scans = CxScan.parseProject(resultObject)
cxCommandOutput.payload = scans;
break;
case 'CxProject':
r = resultObject.map((member)=>{return Object.assign( new CxProject(),member);}) ;
cxCommandOutput.payload = r;
let projects = CxProject.parseProject(resultObject)
cxCommandOutput.payload = projects;
break;
default:
logger.info(JSON.stringify(resultObject));
cxCommandOutput.payload = resultObject;
}
} else {
let resultArray: any [] = [];
// Check if there is a specific type for the output and make conversions
switch(output){
case 'CxScan':
let r = Object.assign( new CxScan(),resultObject);
resultArray.push(r);
cxCommandOutput.payload = resultArray;
break;
case 'CxProject':
r = Object.assign( new CxProject(),resultObject);
resultArray.push(r);
cxCommandOutput.payload = resultArray;
break;
default:
resultArray.push(resultObject);
cxCommandOutput.payload = resultArray;
}
}
}
});
});
Expand Down
4 changes: 2 additions & 2 deletions src/tests/ProjectTest.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ describe("ProjectList cases",() => {
let data = await auth.scanCreate(params);
let cxCommandOutput: CxCommandOutput = data;
let ScanObject = cxCommandOutput.payload.pop();
cxCommandOutput = await auth.projectShow(ScanObject.ProjectID);
cxCommandOutput = await auth.projectShow(ScanObject.projectID);
console.log(" Json object from ProjectShow Successful case: " + JSON.stringify(cxCommandOutput));
expect(cxCommandOutput.payload.length).toBeGreaterThan(0);
});
Expand All @@ -37,7 +37,7 @@ describe("ProjectList cases",() => {
let data = await auth.scanCreate(params);
let cxCommandOutput: CxCommandOutput = data;
let ScanObject = cxCommandOutput.payload.pop();
cxCommandOutput = await auth.projectBranches(ScanObject.ProjectID,"");
cxCommandOutput = await auth.projectBranches(ScanObject.projectID,"");
console.log("Json object from projectBranches Successful case: " + JSON.stringify(cxCommandOutput))
expect(cxCommandOutput.payload.length).toBeGreaterThan(0);
});
Expand Down
9 changes: 5 additions & 4 deletions src/tests/ResultTest.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ describe("Results cases",() => {
it('Result Test Successful case', async () => {
const auth = new CxWrapper(cxScanConfig);
const cxCommandOutput: CxCommandOutput = await auth.scanList("");
let sampleId = cxCommandOutput.payload.pop().ID;
let sampleId = cxCommandOutput.payload.pop().id;
await auth.getResults(sampleId,"json","jsonList", ".");
const file = await fileExists("./jsonList.json");
expect(file).toBe(true);
Expand All @@ -17,15 +17,16 @@ describe("Results cases",() => {
it('Result List Successful case', async () => {
const auth = new CxWrapper(cxScanConfig);
const cxCommandOutput: CxCommandOutput = await auth.scanList("");
let sampleId = cxCommandOutput.payload.pop().ID;
console.log(JSON.stringify(cxCommandOutput));
let sampleId = cxCommandOutput.payload.pop().id;
const written = await auth.getResultsList(sampleId);
expect(written.status).toEqual("");
});

it('Result summary html file generation successful case', async () => {
const auth = new CxWrapper(cxScanConfig);
const cxCommandOutput: CxCommandOutput = await auth.scanList("");
let sampleId = cxCommandOutput.payload.pop().ID;
let sampleId = cxCommandOutput.payload.pop().id;
await auth.getResults(sampleId,"summaryHTML","test", ".");
const file = await fileExists("./test.html");
expect(file).toBe(true);
Expand All @@ -34,7 +35,7 @@ describe("Results cases",() => {
it('Result summary html string successful case', async () => {
const auth = new CxWrapper(cxScanConfig);
const cxCommandOutput: CxCommandOutput = await auth.scanList("");
let sampleId = cxCommandOutput.payload.pop().ID;
let sampleId = cxCommandOutput.payload.pop().id;
const written = await auth.getResultsSummary(sampleId);
expect(written.payload.length).toBeGreaterThan(0);
});
Expand Down
16 changes: 8 additions & 8 deletions src/tests/ScanTest.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,9 @@ describe("ScanCreate cases",() => {
const auth = new CxWrapper(cxScanConfig);
const cxCommandOutput: CxCommandOutput = await auth.scanCreate(params);
const scanObject = cxCommandOutput.payload.pop();
const scanShowObject = await auth.scanShow(scanObject.ID);
const scanShowObject = await auth.scanShow(scanObject.id);
console.log(" Json object from successful wait mode case: " + JSON.stringify(scanShowObject));
expect(scanShowObject.payload.pop().Status).toEqual("Completed");
expect(scanShowObject.payload.pop().status).toEqual("Completed");
})

it('ScanCreate Failure case', async () => {
Expand All @@ -35,9 +35,9 @@ describe("ScanCreate cases",() => {
const auth = new CxWrapper(cxScanConfig);
const cxCommandOutput: CxCommandOutput = await auth.scanCreate(params);
const scanObject = cxCommandOutput.payload.pop();
const scanShowObject = await auth.scanShow(scanObject.ID);
const scanShowObject = await auth.scanShow(scanObject.id);
console.log(" Json object from failure case: " + JSON.stringify(scanShowObject));
expect(scanShowObject.payload.pop().Status).toEqual("Failed");
expect(scanShowObject.payload.pop().status).toEqual("Failed");
})

it('ScanCreate Successful case with Branch', async () => {
Expand All @@ -49,9 +49,9 @@ describe("ScanCreate cases",() => {
const auth = new CxWrapper(cxScanConfig);
const cxCommandOutput: CxCommandOutput = await auth.scanCreate(params);
const scanObject = cxCommandOutput.payload.pop();
const scanShowObject = await auth.scanShow(scanObject.ID);
const scanShowObject = await auth.scanShow(scanObject.id);
console.log(" Json object from successful wait mode case with branch: " +JSON.stringify(scanShowObject));
expect(scanShowObject.payload.pop().Status).toEqual("Completed");
expect(scanShowObject.payload.pop().status).toEqual("Completed");

})

Expand All @@ -65,8 +65,8 @@ describe("ScanCreate cases",() => {
const auth = new CxWrapper(cxScanConfig);
const cxCommandOutput: CxCommandOutput = await auth.scanCreate(params);
const scanObject = cxCommandOutput.payload.pop();
const scanShowObject = await auth.scanShow(scanObject.ID);
const scanShowObject = await auth.scanShow(scanObject.id);
console.log(" Json object from successful no wait mode case: " + JSON.stringify(scanShowObject));
expect(scanShowObject.payload.pop().Status).toEqual("Running");
expect(scanShowObject.payload.pop().status).toEqual("Running");
})
});