diff --git a/lib/init-action-post-helper.test.js b/lib/init-action-post-helper.test.js index 613c5cf2d..53df0bcde 100644 --- a/lib/init-action-post-helper.test.js +++ b/lib/init-action-post-helper.test.js @@ -79,21 +79,7 @@ const workflow = __importStar(require("./workflow")); }); }); (0, ava_1.default)("uploads failed SARIF run for typical workflow", async (t) => { - const config = { - codeQLCmd: "codeql", - debugMode: true, - languages: [], - packs: [], - }; - const messages = []; - process.env["GITHUB_JOB"] = "analyze"; - process.env["GITHUB_WORKSPACE"] = - "/home/runner/work/codeql-action/codeql-action"; - sinon.stub(actionsUtil, "getRequiredInput").withArgs("matrix").returns("{}"); - const codeqlObject = await codeql.getCodeQLForTesting(); - sinon.stub(codeql, "getCodeQL").resolves(codeqlObject); - const diagnosticsExportStub = sinon.stub(codeqlObject, "diagnosticsExport"); - sinon.stub(workflow, "getWorkflow").resolves({ + const actionsWorkflow = { name: "CodeQL", on: { push: { @@ -129,16 +115,60 @@ const workflow = __importStar(require("./workflow")); ], }, }, - }); + }; + await testFailedSarifUpload(t, actionsWorkflow, { category: "my-category" }); +}); +(0, ava_1.default)("uploading failed SARIF run fails when workflow does not reference github/codeql-action", async (t) => { + const actionsWorkflow = { + name: "CodeQL", + on: { + push: { + branches: ["main"], + }, + pull_request: { + branches: ["main"], + }, + }, + jobs: { + analyze: { + name: "CodeQL Analysis", + "runs-on": "ubuntu-latest", + steps: [ + { + name: "Checkout repository", + uses: "actions/checkout@v3", + }, + ], + }, + }, + }; + await t.throwsAsync(async () => await testFailedSarifUpload(t, actionsWorkflow)); +}); +async function testFailedSarifUpload(t, actionsWorkflow, { category } = {}) { + const config = { + codeQLCmd: "codeql", + debugMode: true, + languages: [], + packs: [], + }; + const messages = []; + process.env["GITHUB_JOB"] = "analyze"; + process.env["GITHUB_WORKSPACE"] = + "/home/runner/work/codeql-action/codeql-action"; + sinon.stub(actionsUtil, "getRequiredInput").withArgs("matrix").returns("{}"); + const codeqlObject = await codeql.getCodeQLForTesting(); + sinon.stub(codeql, "getCodeQL").resolves(codeqlObject); + const diagnosticsExportStub = sinon.stub(codeqlObject, "diagnosticsExport"); + sinon.stub(workflow, "getWorkflow").resolves(actionsWorkflow); const uploadFromActions = sinon.stub(uploadLib, "uploadFromActions"); uploadFromActions.resolves({ sarifID: "42" }); const waitForProcessing = sinon.stub(uploadLib, "waitForProcessing"); await initActionPostHelper.uploadFailedSarif(config, (0, repository_1.parseRepositoryNwo)("github/codeql-action"), (0, testing_utils_1.createFeatures)([feature_flags_1.Feature.UploadFailedSarifEnabled]), (0, testing_utils_1.getRecordingLogger)(messages)); t.deepEqual(messages, []); - t.true(diagnosticsExportStub.calledOnceWith(sinon.match.string, "my-category")); - t.true(uploadFromActions.calledOnceWith(sinon.match.string, sinon.match.string, "my-category", sinon.match.any)); + t.true(diagnosticsExportStub.calledOnceWith(sinon.match.string, category), `Actual args were: ${diagnosticsExportStub.args}`); + t.true(uploadFromActions.calledOnceWith(sinon.match.string, sinon.match.string, category, sinon.match.any), `Actual args were: ${uploadFromActions.args}`); t.true(waitForProcessing.calledOnceWith(sinon.match.any, "42", sinon.match.any, { isUnsuccessfulExecution: true, })); -}); +} //# sourceMappingURL=init-action-post-helper.test.js.map \ No newline at end of file diff --git a/lib/init-action-post-helper.test.js.map b/lib/init-action-post-helper.test.js.map index 6a661ee88..1764ce607 100644 --- a/lib/init-action-post-helper.test.js.map +++ b/lib/init-action-post-helper.test.js.map @@ -1 +1 @@ -{"version":3,"file":"init-action-post-helper.test.js","sourceRoot":"","sources":["../src/init-action-post-helper.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"init-action-post-helper.test.js","sourceRoot":"","sources":["../src/init-action-post-helper.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/init-action-post-helper.test.ts b/src/init-action-post-helper.test.ts index dce7265d3..1a7ec849d 100644 --- a/src/init-action-post-helper.test.ts +++ b/src/init-action-post-helper.test.ts @@ -1,4 +1,4 @@ -import test from "ava"; +import test, { ExecutionContext } from "ava"; import * as sinon from "sinon"; import * as actionsUtil from "./actions-util"; @@ -86,23 +86,7 @@ test("post: init action with debug mode on", async (t) => { }); test("uploads failed SARIF run for typical workflow", async (t) => { - const config = { - codeQLCmd: "codeql", - debugMode: true, - languages: [], - packs: [], - } as unknown as configUtils.Config; - const messages = []; - process.env["GITHUB_JOB"] = "analyze"; - process.env["GITHUB_WORKSPACE"] = - "/home/runner/work/codeql-action/codeql-action"; - sinon.stub(actionsUtil, "getRequiredInput").withArgs("matrix").returns("{}"); - - const codeqlObject = await codeql.getCodeQLForTesting(); - sinon.stub(codeql, "getCodeQL").resolves(codeqlObject); - const diagnosticsExportStub = sinon.stub(codeqlObject, "diagnosticsExport"); - - sinon.stub(workflow, "getWorkflow").resolves({ + const actionsWorkflow: workflow.Workflow = { name: "CodeQL", on: { push: { @@ -138,7 +122,61 @@ test("uploads failed SARIF run for typical workflow", async (t) => { ], }, }, - }); + }; + await testFailedSarifUpload(t, actionsWorkflow, { category: "my-category" }); +}); + +test("uploading failed SARIF run fails when workflow does not reference github/codeql-action", async (t) => { + const actionsWorkflow: workflow.Workflow = { + name: "CodeQL", + on: { + push: { + branches: ["main"], + }, + pull_request: { + branches: ["main"], + }, + }, + jobs: { + analyze: { + name: "CodeQL Analysis", + "runs-on": "ubuntu-latest", + steps: [ + { + name: "Checkout repository", + uses: "actions/checkout@v3", + }, + ], + }, + }, + }; + await t.throwsAsync( + async () => await testFailedSarifUpload(t, actionsWorkflow) + ); +}); + +async function testFailedSarifUpload( + t: ExecutionContext, + actionsWorkflow: workflow.Workflow, + { category }: { category?: string } = {} +): Promise { + const config = { + codeQLCmd: "codeql", + debugMode: true, + languages: [], + packs: [], + } as unknown as configUtils.Config; + const messages = []; + process.env["GITHUB_JOB"] = "analyze"; + process.env["GITHUB_WORKSPACE"] = + "/home/runner/work/codeql-action/codeql-action"; + sinon.stub(actionsUtil, "getRequiredInput").withArgs("matrix").returns("{}"); + + const codeqlObject = await codeql.getCodeQLForTesting(); + sinon.stub(codeql, "getCodeQL").resolves(codeqlObject); + const diagnosticsExportStub = sinon.stub(codeqlObject, "diagnosticsExport"); + + sinon.stub(workflow, "getWorkflow").resolves(actionsWorkflow); const uploadFromActions = sinon.stub(uploadLib, "uploadFromActions"); uploadFromActions.resolves({ sarifID: "42" } as uploadLib.UploadResult); @@ -152,19 +190,21 @@ test("uploads failed SARIF run for typical workflow", async (t) => { ); t.deepEqual(messages, []); t.true( - diagnosticsExportStub.calledOnceWith(sinon.match.string, "my-category") + diagnosticsExportStub.calledOnceWith(sinon.match.string, category), + `Actual args were: ${diagnosticsExportStub.args}` ); t.true( uploadFromActions.calledOnceWith( sinon.match.string, sinon.match.string, - "my-category", + category, sinon.match.any - ) + ), + `Actual args were: ${uploadFromActions.args}` ); t.true( waitForProcessing.calledOnceWith(sinon.match.any, "42", sinon.match.any, { isUnsuccessfulExecution: true, }) ); -}); +}