@sectester/reporter 0.48.1 → 0.50.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +4 -3
- package/src/__fixtures__/junit-reports.d.ts +6 -6
- package/src/__fixtures__/junit-reports.js.map +1 -1
- package/src/index.d.ts +1 -1
- package/src/index.js +2 -1
- package/src/index.js.map +1 -1
- package/src/{reporters/gitlab/builders → junit}/JUnitReportBuilder.d.ts +2 -2
- package/src/junit/JUnitReportBuilder.js.map +1 -0
- package/src/junit/build-junit-xml.d.ts +2 -0
- package/src/junit/build-junit-xml.js.map +1 -0
- package/src/junit/index.d.ts +3 -0
- package/src/junit/index.js +8 -0
- package/src/junit/index.js.map +1 -0
- package/src/{reporters/gitlab/types/TestReport.d.ts → junit/types.d.ts} +0 -1
- package/src/{reporters/gitlab/types/TestReport.js → junit/types.js} +1 -1
- package/src/junit/types.js.map +1 -0
- package/src/reporters/bitbucket/BitbucketReporter.d.ts +13 -0
- package/src/reporters/bitbucket/BitbucketReporter.js +55 -0
- package/src/reporters/bitbucket/BitbucketReporter.js.map +1 -0
- package/src/reporters/bitbucket/api/BitbucketApiClient.d.ts +12 -0
- package/src/reporters/bitbucket/api/BitbucketApiClient.js +91 -0
- package/src/reporters/bitbucket/api/BitbucketApiClient.js.map +1 -0
- package/src/reporters/bitbucket/api/BitbucketClient.d.ts +6 -0
- package/src/reporters/bitbucket/api/BitbucketClient.js +5 -0
- package/src/reporters/bitbucket/api/BitbucketClient.js.map +1 -0
- package/src/reporters/bitbucket/api/BitbucketConfig.d.ts +19 -0
- package/src/reporters/bitbucket/api/BitbucketConfig.js +5 -0
- package/src/reporters/bitbucket/api/BitbucketConfig.js.map +1 -0
- package/src/reporters/bitbucket/api/index.d.ts +2 -0
- package/src/reporters/bitbucket/api/index.js +8 -0
- package/src/reporters/bitbucket/api/index.js.map +1 -0
- package/src/reporters/bitbucket/api/register.d.ts +1 -0
- package/src/reporters/bitbucket/api/register.js +28 -0
- package/src/reporters/bitbucket/api/register.js.map +1 -0
- package/src/reporters/bitbucket/builders/BaseReportBuilder.d.ts +13 -0
- package/src/reporters/bitbucket/builders/BaseReportBuilder.js +42 -0
- package/src/reporters/bitbucket/builders/BaseReportBuilder.js.map +1 -0
- package/src/reporters/bitbucket/builders/MultiItemsReportBuilder.d.ts +12 -0
- package/src/reporters/bitbucket/builders/MultiItemsReportBuilder.js +87 -0
- package/src/reporters/bitbucket/builders/MultiItemsReportBuilder.js.map +1 -0
- package/src/reporters/bitbucket/builders/ReportBuilder.d.ts +8 -0
- package/src/reporters/bitbucket/builders/ReportBuilder.js +3 -0
- package/src/reporters/bitbucket/builders/ReportBuilder.js.map +1 -0
- package/src/reporters/bitbucket/builders/SingleItemReportBuilder.d.ts +10 -0
- package/src/reporters/bitbucket/builders/SingleItemReportBuilder.js +44 -0
- package/src/reporters/bitbucket/builders/SingleItemReportBuilder.js.map +1 -0
- package/src/reporters/bitbucket/builders/index.d.ts +4 -0
- package/src/reporters/bitbucket/builders/index.js +10 -0
- package/src/reporters/bitbucket/builders/index.js.map +1 -0
- package/src/reporters/bitbucket/index.d.ts +2 -0
- package/src/reporters/bitbucket/index.js +7 -0
- package/src/reporters/bitbucket/index.js.map +1 -0
- package/src/reporters/bitbucket/types/Report.d.ts +24 -0
- package/src/reporters/bitbucket/types/Report.js +3 -0
- package/src/reporters/bitbucket/types/Report.js.map +1 -0
- package/src/reporters/bitbucket/types/ReportAnnotation.d.ts +15 -0
- package/src/reporters/bitbucket/types/ReportAnnotation.js +3 -0
- package/src/reporters/bitbucket/types/ReportAnnotation.js.map +1 -0
- package/src/reporters/bitbucket/types/index.d.ts +2 -0
- package/src/reporters/bitbucket/types/index.js +3 -0
- package/src/reporters/bitbucket/types/index.js.map +1 -0
- package/src/reporters/gitlab/GitLabReporter.js +2 -1
- package/src/reporters/gitlab/GitLabReporter.js.map +1 -1
- package/src/reporters/gitlab/api/GitLabCIArtifacts.d.ts +3 -2
- package/src/reporters/gitlab/api/GitLabCIArtifacts.js.map +1 -1
- package/src/reporters/gitlab/api/GitLabCodeQualityFileWriter.d.ts +3 -2
- package/src/reporters/gitlab/api/GitLabCodeQualityFileWriter.js +2 -2
- package/src/reporters/gitlab/api/GitLabCodeQualityFileWriter.js.map +1 -1
- package/src/reporters/gitlab/builders/index.d.ts +0 -1
- package/src/reporters/gitlab/builders/index.js +1 -3
- package/src/reporters/gitlab/builders/index.js.map +1 -1
- package/src/reporters/gitlab/types/index.d.ts +0 -1
- package/src/reporters/index.d.ts +1 -0
- package/src/reporters/index.js +1 -0
- package/src/reporters/index.js.map +1 -1
- package/src/reporters/gitlab/builders/JUnitReportBuilder.js.map +0 -1
- package/src/reporters/gitlab/types/TestReport.js.map +0 -1
- package/src/reporters/gitlab/utils/build-junit-xml.d.ts +0 -2
- package/src/reporters/gitlab/utils/build-junit-xml.js.map +0 -1
- package/src/reporters/gitlab/utils/index.d.ts +0 -1
- package/src/reporters/gitlab/utils/index.js +0 -6
- package/src/reporters/gitlab/utils/index.js.map +0 -1
- /package/src/{reporters/gitlab/builders → junit}/JUnitReportBuilder.js +0 -0
- /package/src/{reporters/gitlab/utils → junit}/build-junit-xml.js +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sectester/reporter",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.50.0",
|
|
4
4
|
"description": "Provide an abstraction for generating test results as part of the particular test frameworks.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -36,11 +36,12 @@
|
|
|
36
36
|
"dependencies": {
|
|
37
37
|
"@octokit/types": "^13.5.0",
|
|
38
38
|
"chalk": "^4.1.2",
|
|
39
|
-
"fast-xml-parser": "^5.
|
|
39
|
+
"fast-xml-parser": "^5.3.6",
|
|
40
40
|
"reflect-metadata": "^0.2.2",
|
|
41
41
|
"tslib": "~2.6.3",
|
|
42
42
|
"tsyringe": "^4.8.0",
|
|
43
|
-
"tty-table": "^4.2.3"
|
|
43
|
+
"tty-table": "^4.2.3",
|
|
44
|
+
"undici": "^6.24.1"
|
|
44
45
|
},
|
|
45
46
|
"peerDependencies": {
|
|
46
47
|
"@sectester/scan": ">=0.16.0 <1.0.0"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { JUnitTestSuites, JUnitTestSuite, JUnitTestCase } from '../junit';
|
|
2
2
|
export declare const createVulnerabilityTestCase: (method: string, endpoint: string, vulnerability: string, time?: number) => JUnitTestCase;
|
|
3
3
|
export declare const createTestCaseWithSystemOut: (baseTestCase: JUnitTestCase, systemOut: string) => JUnitTestCase;
|
|
4
4
|
export declare const createTestCaseWithSpecialChars: (failure: string) => JUnitTestCase;
|
|
@@ -7,8 +7,8 @@ export declare const createTestSuite: (name: string, testCases: JUnitTestCase[],
|
|
|
7
7
|
export declare const brightTestSuite: JUnitTestSuite;
|
|
8
8
|
export declare const criticalBrightTestSuite: JUnitTestSuite;
|
|
9
9
|
export declare const highBrightTestSuite: JUnitTestSuite;
|
|
10
|
-
export declare const minimalTestReport:
|
|
11
|
-
export declare const testReportWithSystemOut:
|
|
12
|
-
export declare const testReportWithSpecialCharacters:
|
|
13
|
-
export declare const testReportWithoutFailures:
|
|
14
|
-
export declare const multipleTestSuitesReport:
|
|
10
|
+
export declare const minimalTestReport: JUnitTestSuites;
|
|
11
|
+
export declare const testReportWithSystemOut: JUnitTestSuites;
|
|
12
|
+
export declare const testReportWithSpecialCharacters: JUnitTestSuites;
|
|
13
|
+
export declare const testReportWithoutFailures: JUnitTestSuites;
|
|
14
|
+
export declare const multipleTestSuitesReport: JUnitTestSuites;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"junit-reports.js","sourceRoot":"","sources":["../../../../../packages/reporter/src/__fixtures__/junit-reports.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"junit-reports.js","sourceRoot":"","sources":["../../../../../packages/reporter/src/__fixtures__/junit-reports.ts"],"names":[],"mappings":";;;AAEO,MAAM,2BAA2B,GAAG,CACzC,MAAc,EACd,QAAgB,EAChB,aAAqB,EACrB,OAAe,CAAC,EACD,EAAE,CAAC,CAAC;IACnB,IAAI;IACJ,SAAS,EAAE,GAAG,MAAM,IAAI,QAAQ,EAAE;IAClC,IAAI,EAAE,aAAa;IACnB,IAAI,EAAE,cAAc;IACpB,OAAO,EAAE,GAAG,aAAa,2BAA2B,MAAM,IAAI,QAAQ,EAAE;CACzE,CAAC,CAAC;AAXU,QAAA,2BAA2B,+BAWrC;AAEI,MAAM,2BAA2B,GAAG,CACzC,YAA2B,EAC3B,SAAiB,EACF,EAAE,CAAC,CAAC;IACnB,GAAG,YAAY;IACf,SAAS;CACV,CAAC,CAAC;AANU,QAAA,2BAA2B,+BAMrC;AAEI,MAAM,8BAA8B,GAAG,CAC5C,OAAe,EACA,EAAE,CAAC,CAAC;IACnB,OAAO;IACP,SAAS,EAAE,oCAAoC;IAC/C,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,cAAc;IACpB,IAAI,EAAE,CAAC;CACR,CAAC,CAAC;AARU,QAAA,8BAA8B,kCAQxC;AAEI,MAAM,qBAAqB,GAAG,CACnC,SAAiB,EACjB,IAAY,EACZ,OAAe,GAAG,EACH,EAAE,CAAC,CAAC;IACnB,SAAS;IACT,IAAI;IACJ,IAAI;IACJ,IAAI,EAAE,cAAc;CACrB,CAAC,CAAC;AATU,QAAA,qBAAqB,yBAS/B;AAEI,MAAM,eAAe,GAAG,CAC7B,IAAY,EACZ,SAA0B,EAC1B,QAAiB,EACD,EAAE,CAAC,CAAC;IACpB,IAAI;IACJ,SAAS;IACT,KAAK,EAAE,SAAS,CAAC,MAAM;IACvB,QAAQ,EAAE,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM;CAChE,CAAC,CAAC;AATU,QAAA,eAAe,mBASzB;AAEU,QAAA,eAAe,GAAG,IAAA,uBAAe,EAAC,cAAc,EAAE;IAC7D,IAAA,mCAA2B,EAAC,MAAM,EAAE,+BAA+B,EAAE,MAAM,CAAC;CAC7E,CAAC,CAAC;AACU,QAAA,uBAAuB,GAAG,IAAA,uBAAe,EACpD,uBAAuB,EACvB,CAAC,IAAA,mCAA2B,EAAC,MAAM,EAAE,+BAA+B,EAAE,MAAM,CAAC,CAAC,CAC/E,CAAC;AACW,QAAA,mBAAmB,GAAG,IAAA,uBAAe,EAAC,mBAAmB,EAAE;IACtE,IAAA,mCAA2B,EAAC,KAAK,EAAE,iCAAiC,EAAE,KAAK,CAAC;CAC7E,CAAC,CAAC;AAEU,QAAA,iBAAiB,GAAoB;IAChD,UAAU,EAAE,CAAC,uBAAe,CAAC;CAC9B,CAAC;AAEW,QAAA,uBAAuB,GAAoB;IACtD,UAAU,EAAE;QACV,IAAA,uBAAe,EAAC,cAAc,EAAE;YAC9B,IAAA,mCAA2B,EACzB,IAAA,mCAA2B,EACzB,KAAK,EACL,gCAAgC,EAChC,KAAK,CACN,EACD,kCAAkC,CACnC;SACF,CAAC;KACH;CACF,CAAC;AAEW,QAAA,+BAA+B,GAAoB;IAC9D,UAAU,EAAE;QACV,IAAA,uBAAe,EAAC,qBAAqB,EAAE;YACrC,IAAA,sCAA8B,EAC5B,0EAA0E,CAC3E;SACF,CAAC;KACH;CACF,CAAC;AAEW,QAAA,yBAAyB,GAAoB;IACxD,UAAU,EAAE;QACV,IAAA,uBAAe,EACb,cAAc,EACd,CAAC,IAAA,6BAAqB,EAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC,EACpE,CAAC,CACF;KACF;CACF,CAAC;AAEW,QAAA,wBAAwB,GAAoB;IACvD,UAAU,EAAE,CAAC,+BAAuB,EAAE,2BAAmB,CAAC;CAC3D,CAAC"}
|
package/src/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { PlainTextFormatter } from './formatters';
|
|
2
2
|
export { Reporter, Formatter } from './lib';
|
|
3
|
-
export { GitHubCheckRunReporter, GitLabReporter, StdReporter } from './reporters';
|
|
3
|
+
export { BitbucketReporter, GitHubCheckRunReporter, GitLabReporter, StdReporter } from './reporters';
|
package/src/index.js
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.StdReporter = exports.GitLabReporter = exports.GitHubCheckRunReporter = exports.Formatter = exports.Reporter = exports.PlainTextFormatter = void 0;
|
|
3
|
+
exports.StdReporter = exports.GitLabReporter = exports.GitHubCheckRunReporter = exports.BitbucketReporter = exports.Formatter = exports.Reporter = exports.PlainTextFormatter = void 0;
|
|
4
4
|
var formatters_1 = require("./formatters");
|
|
5
5
|
Object.defineProperty(exports, "PlainTextFormatter", { enumerable: true, get: function () { return formatters_1.PlainTextFormatter; } });
|
|
6
6
|
var lib_1 = require("./lib");
|
|
7
7
|
Object.defineProperty(exports, "Reporter", { enumerable: true, get: function () { return lib_1.Reporter; } });
|
|
8
8
|
Object.defineProperty(exports, "Formatter", { enumerable: true, get: function () { return lib_1.Formatter; } });
|
|
9
9
|
var reporters_1 = require("./reporters");
|
|
10
|
+
Object.defineProperty(exports, "BitbucketReporter", { enumerable: true, get: function () { return reporters_1.BitbucketReporter; } });
|
|
10
11
|
Object.defineProperty(exports, "GitHubCheckRunReporter", { enumerable: true, get: function () { return reporters_1.GitHubCheckRunReporter; } });
|
|
11
12
|
Object.defineProperty(exports, "GitLabReporter", { enumerable: true, get: function () { return reporters_1.GitLabReporter; } });
|
|
12
13
|
Object.defineProperty(exports, "StdReporter", { enumerable: true, get: function () { return reporters_1.StdReporter; } });
|
package/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/reporter/src/index.ts"],"names":[],"mappings":";;;AAAA,2CAAkD;AAAzC,gHAAA,kBAAkB,OAAA;AAC3B,6BAA4C;AAAnC,+FAAA,QAAQ,OAAA;AAAE,gGAAA,SAAS,OAAA;AAC5B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/reporter/src/index.ts"],"names":[],"mappings":";;;AAAA,2CAAkD;AAAzC,gHAAA,kBAAkB,OAAA;AAC3B,6BAA4C;AAAnC,+FAAA,QAAQ,OAAA;AAAE,gGAAA,SAAS,OAAA;AAC5B,yCAKqB;AAJnB,8GAAA,iBAAiB,OAAA;AACjB,mHAAA,sBAAsB,OAAA;AACtB,2GAAA,cAAc,OAAA;AACd,wGAAA,WAAW,OAAA"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { JUnitTestSuites } from './types';
|
|
2
2
|
import { type Issue } from '@sectester/scan';
|
|
3
3
|
export declare class JUnitReportBuilder {
|
|
4
4
|
private readonly issues;
|
|
5
5
|
private readonly testFilePath;
|
|
6
6
|
constructor(issues: Issue[], testFilePath: string);
|
|
7
|
-
build():
|
|
7
|
+
build(): JUnitTestSuites;
|
|
8
8
|
private createTestSuite;
|
|
9
9
|
private convertIssueToTestCase;
|
|
10
10
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JUnitReportBuilder.js","sourceRoot":"","sources":["../../../../../packages/reporter/src/junit/JUnitReportBuilder.ts"],"names":[],"mappings":";;;AAGA,MAAa,kBAAkB;IAC7B,YACmB,MAAe,EACf,YAAoB;QADpB,WAAM,GAAN,MAAM,CAAS;QACf,iBAAY,GAAZ,YAAY,CAAQ;IACpC,CAAC;IAEG,KAAK;QACV,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAEzC,OAAO;YACL,UAAU,EAAE,CAAC,SAAS,CAAC;SACxB,CAAC;IACJ,CAAC;IAEO,eAAe;QACrB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CACxC,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CACnC,CAAC;QACF,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;QAE3D,OAAO;YACL,SAAS;YACT,QAAQ;YACR,IAAI,EAAE,cAAc;YACpB,KAAK,EAAE,SAAS,CAAC,MAAM;YACvB,IAAI,EAAE,CAAC,CAAC,+BAA+B;SACxC,CAAC;IACJ,CAAC;IAEO,sBAAsB,CAAC,KAAY;QACzC,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;QACxC,MAAM,OAAO,GAAG,GAAG,IAAI,2BAA2B,eAAe,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,eAAe,CAAC,GAAG,EAAE,CAAC;QAEhH,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QAC7C,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC;QAClB,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC;QAEpB,OAAO;YACL,OAAO;YACP,IAAI;YACJ,SAAS,EAAE,GAAG,eAAe,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,OAAO,CAAC,QAAQ,EAAE,EAAE;YAC1E,IAAI,EAAE,IAAI,CAAC,YAAY;YACvB,IAAI,EAAE,CAAC;YACP,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;SACjC,CAAC;IACJ,CAAC;CACF;AA9CD,gDA8CC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-junit-xml.js","sourceRoot":"","sources":["../../../../../packages/reporter/src/junit/build-junit-xml.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.JUnitReportBuilder = exports.buildJUnitXML = void 0;
|
|
4
|
+
var build_junit_xml_1 = require("./build-junit-xml");
|
|
5
|
+
Object.defineProperty(exports, "buildJUnitXML", { enumerable: true, get: function () { return build_junit_xml_1.buildJUnitXML; } });
|
|
6
|
+
var JUnitReportBuilder_1 = require("./JUnitReportBuilder");
|
|
7
|
+
Object.defineProperty(exports, "JUnitReportBuilder", { enumerable: true, get: function () { return JUnitReportBuilder_1.JUnitReportBuilder; } });
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/reporter/src/junit/index.ts"],"names":[],"mappings":";;;AAAA,qDAAkD;AAAzC,gHAAA,aAAa,OAAA;AACtB,2DAA0D;AAAjD,wHAAA,kBAAkB,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../packages/reporter/src/junit/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Reporter } from '../../lib';
|
|
2
|
+
import { BitbucketClient } from './api';
|
|
3
|
+
import { TestFilePathResolver } from '../../utils';
|
|
4
|
+
import type { Scan } from '@sectester/scan';
|
|
5
|
+
export declare class BitbucketReporter implements Reporter {
|
|
6
|
+
private readonly bitbucketClient;
|
|
7
|
+
private readonly testFilePathResolver;
|
|
8
|
+
constructor(bitbucketClient: BitbucketClient, testFilePathResolver: TestFilePathResolver);
|
|
9
|
+
report(scan: Scan): Promise<void>;
|
|
10
|
+
private submitBitbucketReport;
|
|
11
|
+
private generateTestReport;
|
|
12
|
+
private createReportBuilder;
|
|
13
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BitbucketReporter = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const api_1 = require("./api");
|
|
6
|
+
const builders_1 = require("./builders");
|
|
7
|
+
const utils_1 = require("../../utils");
|
|
8
|
+
const junit_1 = require("../../junit");
|
|
9
|
+
const tsyringe_1 = require("tsyringe");
|
|
10
|
+
const promises_1 = require("node:fs/promises");
|
|
11
|
+
const node_crypto_1 = require("node:crypto");
|
|
12
|
+
let BitbucketReporter = class BitbucketReporter {
|
|
13
|
+
constructor(bitbucketClient, testFilePathResolver) {
|
|
14
|
+
this.bitbucketClient = bitbucketClient;
|
|
15
|
+
this.testFilePathResolver = testFilePathResolver;
|
|
16
|
+
}
|
|
17
|
+
async report(scan) {
|
|
18
|
+
const issues = await scan.issues();
|
|
19
|
+
if (issues.length === 0)
|
|
20
|
+
return;
|
|
21
|
+
const builder = this.createReportBuilder(scan, issues);
|
|
22
|
+
const { report, annotations } = builder.build();
|
|
23
|
+
const reportId = builder.getReportId();
|
|
24
|
+
await Promise.all([
|
|
25
|
+
this.submitBitbucketReport(reportId, report, annotations),
|
|
26
|
+
this.generateTestReport(issues)
|
|
27
|
+
]);
|
|
28
|
+
}
|
|
29
|
+
async submitBitbucketReport(reportId, report, annotations) {
|
|
30
|
+
await this.bitbucketClient.createOrUpdateReport(reportId, report);
|
|
31
|
+
await this.bitbucketClient.createAnnotations(reportId, annotations);
|
|
32
|
+
}
|
|
33
|
+
async generateTestReport(issues) {
|
|
34
|
+
const testFilePath = this.testFilePathResolver.getTestFilePath();
|
|
35
|
+
const junitBuilder = new junit_1.JUnitReportBuilder(issues, testFilePath);
|
|
36
|
+
const testReport = junitBuilder.build();
|
|
37
|
+
const reportXml = (0, junit_1.buildJUnitXML)(testReport);
|
|
38
|
+
const fileName = `bb-test-report-${(0, node_crypto_1.randomUUID)()}.xml`;
|
|
39
|
+
await (0, promises_1.writeFile)(fileName, reportXml, 'utf-8');
|
|
40
|
+
}
|
|
41
|
+
createReportBuilder(scan, issues) {
|
|
42
|
+
const testFilePath = this.testFilePathResolver.getTestFilePath();
|
|
43
|
+
return issues.length === 1
|
|
44
|
+
? new builders_1.SingleItemReportBuilder(issues[0], testFilePath)
|
|
45
|
+
: new builders_1.MultiItemsReportBuilder(scan, issues, testFilePath);
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
exports.BitbucketReporter = BitbucketReporter;
|
|
49
|
+
exports.BitbucketReporter = BitbucketReporter = tslib_1.__decorate([
|
|
50
|
+
(0, tsyringe_1.injectable)(),
|
|
51
|
+
tslib_1.__param(0, (0, tsyringe_1.inject)(api_1.BITBUCKET_CLIENT)),
|
|
52
|
+
tslib_1.__param(1, (0, tsyringe_1.inject)(utils_1.TEST_FILE_PATH_RESOLVER)),
|
|
53
|
+
tslib_1.__metadata("design:paramtypes", [Object, Object])
|
|
54
|
+
], BitbucketReporter);
|
|
55
|
+
//# sourceMappingURL=BitbucketReporter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BitbucketReporter.js","sourceRoot":"","sources":["../../../../../../packages/reporter/src/reporters/bitbucket/BitbucketReporter.ts"],"names":[],"mappings":";;;;AACA,+BAA0D;AAC1D,yCAIoB;AACpB,uCAA4E;AAE5E,uCAAgE;AAChE,uCAA8C;AAE9C,+CAA6C;AAC7C,6CAAyC;AAGlC,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IAC5B,YAC6C,eAAgC,EAE1D,oBAA0C;QAFhB,oBAAe,GAAf,eAAe,CAAiB;QAE1D,yBAAoB,GAApB,oBAAoB,CAAsB;IAC1D,CAAC;IAEG,KAAK,CAAC,MAAM,CAAC,IAAU;QAC5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACnC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAEhC,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACvD,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;QAChD,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QAEvC,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC;YACzD,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;SAChC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,qBAAqB,CACjC,QAAgB,EAChB,MAAc,EACd,WAA+B;QAE/B,MAAM,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAClE,MAAM,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IACtE,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,MAAe;QAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,eAAe,EAAE,CAAC;QACjE,MAAM,YAAY,GAAG,IAAI,0BAAkB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAClE,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,IAAA,qBAAa,EAAC,UAAU,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,kBAAkB,IAAA,wBAAU,GAAE,MAAM,CAAC;QAEtD,MAAM,IAAA,oBAAS,EAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;IAEO,mBAAmB,CAAC,IAAU,EAAE,MAAe;QACrD,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,eAAe,EAAE,CAAC;QAEjE,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC;YACxB,CAAC,CAAC,IAAI,kCAAuB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC;YACtD,CAAC,CAAC,IAAI,kCAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;IAC9D,CAAC;CACF,CAAA;AA/CY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,qBAAU,GAAE;IAGR,mBAAA,IAAA,iBAAM,EAAC,sBAAgB,CAAC,CAAA;IACxB,mBAAA,IAAA,iBAAM,EAAC,+BAAuB,CAAC,CAAA;;GAHvB,iBAAiB,CA+C7B"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type Report, type ReportAnnotation } from '../types';
|
|
2
|
+
import { BitbucketConfig } from './BitbucketConfig';
|
|
3
|
+
import type { BitbucketClient } from './BitbucketClient';
|
|
4
|
+
export declare class BitbucketApiClient implements BitbucketClient {
|
|
5
|
+
private readonly config;
|
|
6
|
+
private readonly proxyAgent;
|
|
7
|
+
constructor(config: BitbucketConfig);
|
|
8
|
+
createOrUpdateReport(reportId: string, report: Report): Promise<void>;
|
|
9
|
+
createAnnotations(reportId: string, annotations: ReportAnnotation[]): Promise<void>;
|
|
10
|
+
private buildUrl;
|
|
11
|
+
private getHeaders;
|
|
12
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BitbucketApiClient = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const BitbucketConfig_1 = require("./BitbucketConfig");
|
|
6
|
+
const undici_1 = require("undici");
|
|
7
|
+
const tsyringe_1 = require("tsyringe");
|
|
8
|
+
let BitbucketApiClient = class BitbucketApiClient {
|
|
9
|
+
constructor(config) {
|
|
10
|
+
var _a;
|
|
11
|
+
this.config = config;
|
|
12
|
+
if (this.config.usePipelinesProxy) {
|
|
13
|
+
this.proxyAgent = new undici_1.ProxyAgent({
|
|
14
|
+
uri: (_a = this.config.proxyUrl) !== null && _a !== void 0 ? _a : 'http://localhost:29418',
|
|
15
|
+
proxyTunnel: false
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
async createOrUpdateReport(reportId, report) {
|
|
20
|
+
var _a;
|
|
21
|
+
const url = this.buildUrl(`/repositories/${this.config.workspace}/${this.config.repo}/commit/${this.config.commitSha}/reports/${reportId}`);
|
|
22
|
+
const res = await (0, undici_1.fetch)(url, {
|
|
23
|
+
method: 'PUT',
|
|
24
|
+
headers: this.getHeaders(),
|
|
25
|
+
body: JSON.stringify(report),
|
|
26
|
+
dispatcher: this.proxyAgent
|
|
27
|
+
});
|
|
28
|
+
if (res.status === 400) {
|
|
29
|
+
const body = (await res.json());
|
|
30
|
+
// If the error is due to exceeding the maximum number of reports, we can ignore it
|
|
31
|
+
if (body['key'] === 'report-service.report.max-reports') {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
else if (!res.ok) {
|
|
36
|
+
const errorBody = await res.text();
|
|
37
|
+
throw new Error(`Bitbucket API error: ${res.status} ${res.statusText}: ${errorBody}`);
|
|
38
|
+
}
|
|
39
|
+
await ((_a = res.body) === null || _a === void 0 ? void 0 : _a.cancel());
|
|
40
|
+
}
|
|
41
|
+
async createAnnotations(reportId, annotations) {
|
|
42
|
+
var _a;
|
|
43
|
+
if (annotations.length === 0) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
const url = this.buildUrl(`/repositories/${this.config.workspace}/${this.config.repo}/commit/${this.config.commitSha}/reports/${reportId}/annotations`);
|
|
47
|
+
const res = await (0, undici_1.fetch)(url, {
|
|
48
|
+
method: 'POST',
|
|
49
|
+
headers: this.getHeaders(),
|
|
50
|
+
body: JSON.stringify(annotations),
|
|
51
|
+
dispatcher: this.proxyAgent
|
|
52
|
+
});
|
|
53
|
+
if (res.status === 400) {
|
|
54
|
+
// It can happen that the report was not created due to exceeding the maximum number of reports, in which case we can ignore the error,
|
|
55
|
+
// or we accidentally sent too many annotations
|
|
56
|
+
// or exceeded some field length limits
|
|
57
|
+
// In all cases, we cannot do anything about it, so we just ignore the error
|
|
58
|
+
}
|
|
59
|
+
else if (!res.ok) {
|
|
60
|
+
const errorBody = await res.text();
|
|
61
|
+
throw new Error(`Bitbucket API error: ${res.status} ${res.statusText}: ${errorBody}`);
|
|
62
|
+
}
|
|
63
|
+
await ((_a = res.body) === null || _a === void 0 ? void 0 : _a.cancel());
|
|
64
|
+
}
|
|
65
|
+
buildUrl(path) {
|
|
66
|
+
// When using the Pipelines proxy, use http:// instead of https://
|
|
67
|
+
const baseUrl = this.config.usePipelinesProxy
|
|
68
|
+
? 'http://api.bitbucket.org/2.0'
|
|
69
|
+
: 'https://api.bitbucket.org/2.0';
|
|
70
|
+
return `${baseUrl}${path}`;
|
|
71
|
+
}
|
|
72
|
+
getHeaders() {
|
|
73
|
+
const headers = {
|
|
74
|
+
'content-Type': 'application/json',
|
|
75
|
+
'accept': 'application/json'
|
|
76
|
+
};
|
|
77
|
+
// Only add authorization header when not using the Pipelines proxy
|
|
78
|
+
// The proxy automatically adds authentication
|
|
79
|
+
if (!this.config.usePipelinesProxy && this.config.token) {
|
|
80
|
+
headers['authorization'] = `Bearer ${this.config.token}`;
|
|
81
|
+
}
|
|
82
|
+
return headers;
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
exports.BitbucketApiClient = BitbucketApiClient;
|
|
86
|
+
exports.BitbucketApiClient = BitbucketApiClient = tslib_1.__decorate([
|
|
87
|
+
(0, tsyringe_1.injectable)(),
|
|
88
|
+
tslib_1.__param(0, (0, tsyringe_1.inject)(BitbucketConfig_1.BITBUCKET_CONFIG)),
|
|
89
|
+
tslib_1.__metadata("design:paramtypes", [Object])
|
|
90
|
+
], BitbucketApiClient);
|
|
91
|
+
//# sourceMappingURL=BitbucketApiClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BitbucketApiClient.js","sourceRoot":"","sources":["../../../../../../../packages/reporter/src/reporters/bitbucket/api/BitbucketApiClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Report, ReportAnnotation } from '../types';
|
|
2
|
+
export interface BitbucketClient {
|
|
3
|
+
createOrUpdateReport(reportId: string, report: Report): Promise<void>;
|
|
4
|
+
createAnnotations(reportId: string, annotations: ReportAnnotation[]): Promise<void>;
|
|
5
|
+
}
|
|
6
|
+
export declare const BITBUCKET_CLIENT: unique symbol;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BitbucketClient.js","sourceRoot":"","sources":["../../../../../../../packages/reporter/src/reporters/bitbucket/api/BitbucketClient.ts"],"names":[],"mappings":";;;AAUa,QAAA,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface BitbucketConfig {
|
|
2
|
+
token?: string;
|
|
3
|
+
workspace: string;
|
|
4
|
+
repo: string;
|
|
5
|
+
commitSha: string;
|
|
6
|
+
/**
|
|
7
|
+
* Whether to use the Bitbucket Pipelines proxy for authentication.
|
|
8
|
+
* When running in Bitbucket Pipelines, requests can be sent through
|
|
9
|
+
* a proxy at localhost:29418 which automatically adds authentication.
|
|
10
|
+
*/
|
|
11
|
+
usePipelinesProxy?: boolean;
|
|
12
|
+
/**
|
|
13
|
+
* The proxy URL to use for Bitbucket Pipelines authentication.
|
|
14
|
+
*
|
|
15
|
+
* @default http://localhost:29418
|
|
16
|
+
*/
|
|
17
|
+
proxyUrl?: string;
|
|
18
|
+
}
|
|
19
|
+
export declare const BITBUCKET_CONFIG: unique symbol;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BitbucketConfig.js","sourceRoot":"","sources":["../../../../../../../packages/reporter/src/reporters/bitbucket/api/BitbucketConfig.ts"],"names":[],"mappings":";;;AAmBa,QAAA,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BITBUCKET_CONFIG = exports.BITBUCKET_CLIENT = void 0;
|
|
4
|
+
var BitbucketClient_1 = require("./BitbucketClient");
|
|
5
|
+
Object.defineProperty(exports, "BITBUCKET_CLIENT", { enumerable: true, get: function () { return BitbucketClient_1.BITBUCKET_CLIENT; } });
|
|
6
|
+
var BitbucketConfig_1 = require("./BitbucketConfig");
|
|
7
|
+
Object.defineProperty(exports, "BITBUCKET_CONFIG", { enumerable: true, get: function () { return BitbucketConfig_1.BITBUCKET_CONFIG; } });
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/reporter/src/reporters/bitbucket/api/index.ts"],"names":[],"mappings":";;;AAAA,qDAA2E;AAAlE,mHAAA,gBAAgB,OAAA;AACzB,qDAAsE;AAA5C,mHAAA,gBAAgB,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
require("reflect-metadata");
|
|
5
|
+
const BitbucketClient_1 = require("./BitbucketClient");
|
|
6
|
+
const BitbucketConfig_1 = require("./BitbucketConfig");
|
|
7
|
+
const BitbucketApiClient_1 = require("./BitbucketApiClient");
|
|
8
|
+
const tsyringe_1 = require("tsyringe");
|
|
9
|
+
let commitSha;
|
|
10
|
+
if (process.env.BITBUCKET_COMMIT) {
|
|
11
|
+
commitSha = process.env.BITBUCKET_COMMIT;
|
|
12
|
+
}
|
|
13
|
+
else if (process.env.BITBUCKET_PR_DESTINATION_COMMIT) {
|
|
14
|
+
commitSha = process.env.BITBUCKET_PR_DESTINATION_COMMIT;
|
|
15
|
+
}
|
|
16
|
+
// Detect if running in Bitbucket Pipelines
|
|
17
|
+
const usePipelinesProxy = typeof process.env.BITBUCKET_BRANCH === 'string';
|
|
18
|
+
const workspace = (_a = process.env.BITBUCKET_WORKSPACE) !== null && _a !== void 0 ? _a : process.env.BITBUCKET_REPO_OWNER;
|
|
19
|
+
tsyringe_1.container.register(BitbucketConfig_1.BITBUCKET_CONFIG, {
|
|
20
|
+
useValue: {
|
|
21
|
+
commitSha,
|
|
22
|
+
workspace,
|
|
23
|
+
usePipelinesProxy,
|
|
24
|
+
repo: process.env.BITBUCKET_REPO_SLUG
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
tsyringe_1.container.register(BitbucketClient_1.BITBUCKET_CLIENT, { useClass: BitbucketApiClient_1.BitbucketApiClient });
|
|
28
|
+
//# sourceMappingURL=register.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../../../../../../packages/reporter/src/reporters/bitbucket/api/register.ts"],"names":[],"mappings":";;;AAAA,4BAA0B;AAC1B,uDAAqD;AACrD,uDAAqD;AACrD,6DAA0D;AAC1D,uCAAqC;AAErC,IAAI,SAA6B,CAAC;AAElC,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACjC,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;AAC3C,CAAC;KAAM,IAAI,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,CAAC;IACvD,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC;AAC1D,CAAC;AAED,2CAA2C;AAC3C,MAAM,iBAAiB,GAAG,OAAO,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,QAAQ,CAAC;AAE3E,MAAM,SAAS,GACb,MAAA,OAAO,CAAC,GAAG,CAAC,mBAAmB,mCAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;AAEtE,oBAAS,CAAC,QAAQ,CAAC,kCAAgB,EAAE;IACnC,QAAQ,EAAE;QACR,SAAS;QACT,SAAS;QACT,iBAAiB;QACjB,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB;KACtC;CACF,CAAC,CAAC;AACH,oBAAS,CAAC,QAAQ,CAAC,kCAAgB,EAAE,EAAE,QAAQ,EAAE,uCAAkB,EAAE,CAAC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ReportBuilder, ReportBuildResult } from './ReportBuilder';
|
|
2
|
+
import type { ReportAnnotation, AnnotationSeverity } from '../types';
|
|
3
|
+
import type { Issue } from '@sectester/scan';
|
|
4
|
+
import { Severity } from '@sectester/scan';
|
|
5
|
+
export declare abstract class BaseReportBuilder implements ReportBuilder {
|
|
6
|
+
protected readonly testFilePath: string;
|
|
7
|
+
protected readonly reportId: string;
|
|
8
|
+
constructor(testFilePath: string);
|
|
9
|
+
abstract build(): ReportBuildResult;
|
|
10
|
+
getReportId(): string;
|
|
11
|
+
protected convertIssueToAnnotation(issue: Issue): ReportAnnotation;
|
|
12
|
+
protected mapSeverity(severity: Severity): AnnotationSeverity;
|
|
13
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BaseReportBuilder = void 0;
|
|
4
|
+
const scan_1 = require("@sectester/scan");
|
|
5
|
+
class BaseReportBuilder {
|
|
6
|
+
constructor(testFilePath) {
|
|
7
|
+
this.testFilePath = testFilePath;
|
|
8
|
+
this.reportId = `sectester-${Date.now()}`;
|
|
9
|
+
}
|
|
10
|
+
getReportId() {
|
|
11
|
+
return this.reportId;
|
|
12
|
+
}
|
|
13
|
+
convertIssueToAnnotation(issue) {
|
|
14
|
+
const { originalRequest, name, severity, link, details } = issue;
|
|
15
|
+
return {
|
|
16
|
+
details,
|
|
17
|
+
link,
|
|
18
|
+
title: name,
|
|
19
|
+
external_id: issue.id,
|
|
20
|
+
annotation_type: 'VULNERABILITY',
|
|
21
|
+
summary: `${name} vulnerability found at ${originalRequest.method} ${originalRequest.url}`,
|
|
22
|
+
result: 'FAILED',
|
|
23
|
+
severity: this.mapSeverity(severity),
|
|
24
|
+
path: this.testFilePath,
|
|
25
|
+
line: 1
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
mapSeverity(severity) {
|
|
29
|
+
switch (severity) {
|
|
30
|
+
case scan_1.Severity.CRITICAL:
|
|
31
|
+
return 'CRITICAL';
|
|
32
|
+
case scan_1.Severity.HIGH:
|
|
33
|
+
return 'HIGH';
|
|
34
|
+
case scan_1.Severity.MEDIUM:
|
|
35
|
+
return 'MEDIUM';
|
|
36
|
+
case scan_1.Severity.LOW:
|
|
37
|
+
return 'LOW';
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.BaseReportBuilder = BaseReportBuilder;
|
|
42
|
+
//# sourceMappingURL=BaseReportBuilder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseReportBuilder.js","sourceRoot":"","sources":["../../../../../../../packages/reporter/src/reporters/bitbucket/builders/BaseReportBuilder.ts"],"names":[],"mappings":";;;AAGA,0CAA2C;AAE3C,MAAsB,iBAAiB;IAGrC,YAA+B,YAAoB;QAApB,iBAAY,GAAZ,YAAY,CAAQ;QACjD,IAAI,CAAC,QAAQ,GAAG,aAAa,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IAC5C,CAAC;IAIM,WAAW;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAES,wBAAwB,CAAC,KAAY;QAC7C,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;QAEjE,OAAO;YACL,OAAO;YACP,IAAI;YACJ,KAAK,EAAE,IAAI;YACX,WAAW,EAAE,KAAK,CAAC,EAAE;YACrB,eAAe,EAAE,eAAe;YAChC,OAAO,EAAE,GAAG,IAAI,2BAA2B,eAAe,CAAC,MAAM,IAAI,eAAe,CAAC,GAAG,EAAE;YAC1F,MAAM,EAAE,QAAQ;YAChB,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;YACpC,IAAI,EAAE,IAAI,CAAC,YAAY;YACvB,IAAI,EAAE,CAAC;SACR,CAAC;IACJ,CAAC;IAES,WAAW,CAAC,QAAkB;QACtC,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,eAAQ,CAAC,QAAQ;gBACpB,OAAO,UAAU,CAAC;YACpB,KAAK,eAAQ,CAAC,IAAI;gBAChB,OAAO,MAAM,CAAC;YAChB,KAAK,eAAQ,CAAC,MAAM;gBAClB,OAAO,QAAQ,CAAC;YAClB,KAAK,eAAQ,CAAC,GAAG;gBACf,OAAO,KAAK,CAAC;QACjB,CAAC;IACH,CAAC;CACF;AA1CD,8CA0CC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { BaseReportBuilder } from './BaseReportBuilder';
|
|
2
|
+
import { ReportBuildResult } from './ReportBuilder';
|
|
3
|
+
import type { Issue, Scan } from '@sectester/scan';
|
|
4
|
+
export declare class MultiItemsReportBuilder extends BaseReportBuilder {
|
|
5
|
+
private readonly scan;
|
|
6
|
+
private readonly issues;
|
|
7
|
+
constructor(scan: Scan, issues: Issue[], testFilePath: string);
|
|
8
|
+
build(): ReportBuildResult;
|
|
9
|
+
private buildReport;
|
|
10
|
+
private countSeverities;
|
|
11
|
+
private buildDetails;
|
|
12
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MultiItemsReportBuilder = void 0;
|
|
4
|
+
const BaseReportBuilder_1 = require("./BaseReportBuilder");
|
|
5
|
+
const scan_1 = require("@sectester/scan");
|
|
6
|
+
class MultiItemsReportBuilder extends BaseReportBuilder_1.BaseReportBuilder {
|
|
7
|
+
constructor(scan, issues, testFilePath) {
|
|
8
|
+
super(testFilePath);
|
|
9
|
+
this.scan = scan;
|
|
10
|
+
this.issues = issues;
|
|
11
|
+
}
|
|
12
|
+
build() {
|
|
13
|
+
const report = this.buildReport();
|
|
14
|
+
const annotations = this.issues.map(issue => this.convertIssueToAnnotation(issue));
|
|
15
|
+
return { report, annotations };
|
|
16
|
+
}
|
|
17
|
+
buildReport() {
|
|
18
|
+
const severityCounts = this.countSeverities();
|
|
19
|
+
return {
|
|
20
|
+
title: `SecTester (${this.issues.length} issues)`,
|
|
21
|
+
details: this.buildDetails(),
|
|
22
|
+
reporter: 'SecTester',
|
|
23
|
+
link: this.scan.link,
|
|
24
|
+
report_type: 'SECURITY',
|
|
25
|
+
result: 'FAILED',
|
|
26
|
+
data: [
|
|
27
|
+
{
|
|
28
|
+
title: 'Total Issues',
|
|
29
|
+
type: 'NUMBER',
|
|
30
|
+
value: this.issues.length
|
|
31
|
+
},
|
|
32
|
+
...(severityCounts[scan_1.Severity.CRITICAL] > 0
|
|
33
|
+
? [
|
|
34
|
+
{
|
|
35
|
+
title: 'Critical',
|
|
36
|
+
type: 'NUMBER',
|
|
37
|
+
value: severityCounts[scan_1.Severity.CRITICAL]
|
|
38
|
+
}
|
|
39
|
+
]
|
|
40
|
+
: []),
|
|
41
|
+
...(severityCounts[scan_1.Severity.HIGH] > 0
|
|
42
|
+
? [
|
|
43
|
+
{
|
|
44
|
+
title: 'High',
|
|
45
|
+
type: 'NUMBER',
|
|
46
|
+
value: severityCounts[scan_1.Severity.HIGH]
|
|
47
|
+
}
|
|
48
|
+
]
|
|
49
|
+
: []),
|
|
50
|
+
...(severityCounts[scan_1.Severity.MEDIUM] > 0
|
|
51
|
+
? [
|
|
52
|
+
{
|
|
53
|
+
title: 'Medium',
|
|
54
|
+
type: 'NUMBER',
|
|
55
|
+
value: severityCounts[scan_1.Severity.MEDIUM]
|
|
56
|
+
}
|
|
57
|
+
]
|
|
58
|
+
: []),
|
|
59
|
+
...(severityCounts[scan_1.Severity.LOW] > 0
|
|
60
|
+
? [
|
|
61
|
+
{
|
|
62
|
+
title: 'Low',
|
|
63
|
+
type: 'NUMBER',
|
|
64
|
+
value: severityCounts[scan_1.Severity.LOW]
|
|
65
|
+
}
|
|
66
|
+
]
|
|
67
|
+
: [])
|
|
68
|
+
]
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
countSeverities() {
|
|
72
|
+
return this.issues.reduce((counts, issue) => {
|
|
73
|
+
counts[issue.severity] = counts[issue.severity] + 1;
|
|
74
|
+
return counts;
|
|
75
|
+
}, {
|
|
76
|
+
[scan_1.Severity.CRITICAL]: 0,
|
|
77
|
+
[scan_1.Severity.HIGH]: 0,
|
|
78
|
+
[scan_1.Severity.MEDIUM]: 0,
|
|
79
|
+
[scan_1.Severity.LOW]: 0
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
buildDetails() {
|
|
83
|
+
return `SecTester found ${this.issues.length} issues`;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
exports.MultiItemsReportBuilder = MultiItemsReportBuilder;
|
|
87
|
+
//# sourceMappingURL=MultiItemsReportBuilder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MultiItemsReportBuilder.js","sourceRoot":"","sources":["../../../../../../../packages/reporter/src/reporters/bitbucket/builders/MultiItemsReportBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReportBuilder.js","sourceRoot":"","sources":["../../../../../../../packages/reporter/src/reporters/bitbucket/builders/ReportBuilder.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { BaseReportBuilder } from './BaseReportBuilder';
|
|
2
|
+
import { ReportBuildResult } from './ReportBuilder';
|
|
3
|
+
import type { Issue } from '@sectester/scan';
|
|
4
|
+
export declare class SingleItemReportBuilder extends BaseReportBuilder {
|
|
5
|
+
private readonly issue;
|
|
6
|
+
constructor(issue: Issue, testFilePath: string);
|
|
7
|
+
build(): ReportBuildResult;
|
|
8
|
+
private buildReport;
|
|
9
|
+
private buildEndpoint;
|
|
10
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SingleItemReportBuilder = void 0;
|
|
4
|
+
const BaseReportBuilder_1 = require("./BaseReportBuilder");
|
|
5
|
+
class SingleItemReportBuilder extends BaseReportBuilder_1.BaseReportBuilder {
|
|
6
|
+
constructor(issue, testFilePath) {
|
|
7
|
+
super(testFilePath);
|
|
8
|
+
this.issue = issue;
|
|
9
|
+
}
|
|
10
|
+
build() {
|
|
11
|
+
const report = this.buildReport();
|
|
12
|
+
const annotations = [this.convertIssueToAnnotation(this.issue)];
|
|
13
|
+
return { report, annotations };
|
|
14
|
+
}
|
|
15
|
+
buildReport() {
|
|
16
|
+
return {
|
|
17
|
+
title: `SecTester - ${this.buildEndpoint()}`,
|
|
18
|
+
details: this.issue.details,
|
|
19
|
+
reporter: 'SecTester',
|
|
20
|
+
report_type: 'SECURITY',
|
|
21
|
+
result: 'FAILED',
|
|
22
|
+
link: this.issue.link,
|
|
23
|
+
data: [
|
|
24
|
+
{
|
|
25
|
+
title: 'Vulnerability',
|
|
26
|
+
type: 'TEXT',
|
|
27
|
+
value: this.issue.name
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
title: 'Severity',
|
|
31
|
+
type: 'TEXT',
|
|
32
|
+
value: this.issue.severity
|
|
33
|
+
}
|
|
34
|
+
]
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
buildEndpoint() {
|
|
38
|
+
const method = this.issue.originalRequest.method.toUpperCase();
|
|
39
|
+
const pathname = new URL(this.issue.originalRequest.url).pathname;
|
|
40
|
+
return `${method} ${pathname}`;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.SingleItemReportBuilder = SingleItemReportBuilder;
|
|
44
|
+
//# sourceMappingURL=SingleItemReportBuilder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SingleItemReportBuilder.js","sourceRoot":"","sources":["../../../../../../../packages/reporter/src/reporters/bitbucket/builders/SingleItemReportBuilder.ts"],"names":[],"mappings":";;;AACA,2DAAwD;AAIxD,MAAa,uBAAwB,SAAQ,qCAAiB;IAC5D,YACmB,KAAY,EAC7B,YAAoB;QAEpB,KAAK,CAAC,YAAY,CAAC,CAAC;QAHH,UAAK,GAAL,KAAK,CAAO;IAI/B,CAAC;IAEM,KAAK;QACV,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAClC,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAEhE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IACjC,CAAC;IAEO,WAAW;QACjB,OAAO;YACL,KAAK,EAAE,eAAe,IAAI,CAAC,aAAa,EAAE,EAAE;YAC5C,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;YAC3B,QAAQ,EAAE,WAAW;YACrB,WAAW,EAAE,UAAU;YACvB,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;YACrB,IAAI,EAAE;gBACJ;oBACE,KAAK,EAAE,eAAe;oBACtB,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;iBACvB;gBACD;oBACE,KAAK,EAAE,UAAU;oBACjB,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ;iBAC3B;aACF;SACF,CAAC;IACJ,CAAC;IAEO,aAAa;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QAC/D,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;QAElE,OAAO,GAAG,MAAM,IAAI,QAAQ,EAAE,CAAC;IACjC,CAAC;CACF;AA5CD,0DA4CC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MultiItemsReportBuilder = exports.SingleItemReportBuilder = exports.BaseReportBuilder = void 0;
|
|
4
|
+
var BaseReportBuilder_1 = require("./BaseReportBuilder");
|
|
5
|
+
Object.defineProperty(exports, "BaseReportBuilder", { enumerable: true, get: function () { return BaseReportBuilder_1.BaseReportBuilder; } });
|
|
6
|
+
var SingleItemReportBuilder_1 = require("./SingleItemReportBuilder");
|
|
7
|
+
Object.defineProperty(exports, "SingleItemReportBuilder", { enumerable: true, get: function () { return SingleItemReportBuilder_1.SingleItemReportBuilder; } });
|
|
8
|
+
var MultiItemsReportBuilder_1 = require("./MultiItemsReportBuilder");
|
|
9
|
+
Object.defineProperty(exports, "MultiItemsReportBuilder", { enumerable: true, get: function () { return MultiItemsReportBuilder_1.MultiItemsReportBuilder; } });
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/reporter/src/reporters/bitbucket/builders/index.ts"],"names":[],"mappings":";;;AACA,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA;AAC1B,qEAAoE;AAA3D,kIAAA,uBAAuB,OAAA;AAChC,qEAAoE;AAA3D,kIAAA,uBAAuB,OAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BitbucketReporter = void 0;
|
|
4
|
+
require("./api/register");
|
|
5
|
+
var BitbucketReporter_1 = require("./BitbucketReporter");
|
|
6
|
+
Object.defineProperty(exports, "BitbucketReporter", { enumerable: true, get: function () { return BitbucketReporter_1.BitbucketReporter; } });
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/reporter/src/reporters/bitbucket/index.ts"],"names":[],"mappings":";;;AAAA,0BAAwB;AACxB,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export type ReportType = 'SECURITY' | 'COVERAGE' | 'TEST' | 'BUG';
|
|
2
|
+
export type ReportResult = 'PASSED' | 'FAILED' | 'PENDING';
|
|
3
|
+
export type ReportDataType = 'BOOLEAN' | 'DATE' | 'DURATION' | 'LINK' | 'NUMBER' | 'PERCENTAGE' | 'TEXT';
|
|
4
|
+
export interface ReportDataLink {
|
|
5
|
+
text: string;
|
|
6
|
+
href: string;
|
|
7
|
+
}
|
|
8
|
+
export interface ReportData {
|
|
9
|
+
title: string;
|
|
10
|
+
type?: ReportDataType;
|
|
11
|
+
value: boolean | number | string | ReportDataLink;
|
|
12
|
+
}
|
|
13
|
+
export interface Report {
|
|
14
|
+
title: string;
|
|
15
|
+
details?: string;
|
|
16
|
+
external_id?: string;
|
|
17
|
+
reporter?: string;
|
|
18
|
+
link?: string;
|
|
19
|
+
remote_link_enabled?: boolean;
|
|
20
|
+
logo_url?: string;
|
|
21
|
+
report_type?: ReportType;
|
|
22
|
+
result?: ReportResult;
|
|
23
|
+
data?: ReportData[];
|
|
24
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Report.js","sourceRoot":"","sources":["../../../../../../../packages/reporter/src/reporters/bitbucket/types/Report.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export type AnnotationType = 'VULNERABILITY' | 'CODE_SMELL' | 'BUG';
|
|
2
|
+
export type AnnotationResult = 'PASSED' | 'FAILED' | 'SKIPPED' | 'IGNORED';
|
|
3
|
+
export type AnnotationSeverity = 'CRITICAL' | 'HIGH' | 'MEDIUM' | 'LOW';
|
|
4
|
+
export interface ReportAnnotation {
|
|
5
|
+
external_id: string;
|
|
6
|
+
title?: string;
|
|
7
|
+
annotation_type?: AnnotationType;
|
|
8
|
+
summary?: string;
|
|
9
|
+
details?: string;
|
|
10
|
+
result?: AnnotationResult;
|
|
11
|
+
severity?: AnnotationSeverity;
|
|
12
|
+
path?: string;
|
|
13
|
+
line?: number;
|
|
14
|
+
link?: string;
|
|
15
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReportAnnotation.js","sourceRoot":"","sources":["../../../../../../../packages/reporter/src/reporters/bitbucket/types/ReportAnnotation.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/reporter/src/reporters/bitbucket/types/index.ts"],"names":[],"mappings":""}
|
|
@@ -4,6 +4,7 @@ exports.GitLabReporter = void 0;
|
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const api_1 = require("./api");
|
|
6
6
|
const builders_1 = require("./builders");
|
|
7
|
+
const junit_1 = require("../../junit");
|
|
7
8
|
const utils_1 = require("../../utils");
|
|
8
9
|
const tsyringe_1 = require("tsyringe");
|
|
9
10
|
let GitLabReporter = class GitLabReporter {
|
|
@@ -48,7 +49,7 @@ let GitLabReporter = class GitLabReporter {
|
|
|
48
49
|
return new builders_1.CodeQualityReportBuilder(issues, testFilePath);
|
|
49
50
|
}
|
|
50
51
|
createJUnitReportBuilder(issues, testFilePath) {
|
|
51
|
-
return new
|
|
52
|
+
return new junit_1.JUnitReportBuilder(issues, testFilePath);
|
|
52
53
|
}
|
|
53
54
|
};
|
|
54
55
|
exports.GitLabReporter = GitLabReporter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GitLabReporter.js","sourceRoot":"","sources":["../../../../../../packages/reporter/src/reporters/gitlab/GitLabReporter.ts"],"names":[],"mappings":";;;;AACA,+BAA2D;AAE3D,
|
|
1
|
+
{"version":3,"file":"GitLabReporter.js","sourceRoot":"","sources":["../../../../../../packages/reporter/src/reporters/gitlab/GitLabReporter.ts"],"names":[],"mappings":";;;;AACA,+BAA2D;AAE3D,yCAAsD;AACtD,uCAAiD;AACjD,uCAA4E;AAC5E,uCAA8C;AAIvC,IAAM,cAAc,GAApB,MAAM,cAAc;IACzB,YAEmB,iBAAoC,EAEpC,MAAoB,EAEpB,oBAA0C;QAJ1C,sBAAiB,GAAjB,iBAAiB,CAAmB;QAEpC,WAAM,GAAN,MAAM,CAAc;QAEpB,yBAAoB,GAApB,oBAAoB,CAAsB;IAC1D,CAAC;IAEG,KAAK,CAAC,MAAM,CAAC,IAAU;;QAC5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QAEnC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,YAAY,GAAG,MAAA,IAAI,CAAC,MAAM,CAAC,YAAY,mCAAI,MAAM,CAAC;YAExD,QAAQ,YAAY,EAAE,CAAC;gBACrB,KAAK,cAAc;oBACjB,MAAM,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;oBAC7C,MAAM;gBACR,KAAK,MAAM;oBACT,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;oBACtC,MAAM;gBACR,KAAK,MAAM,CAAC;gBACZ;oBACE,MAAM,OAAO,CAAC,GAAG,CAAC;wBAChB,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC;wBACtC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;qBAChC,CAAC,CAAC;oBACH,MAAM;YACV,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,yBAAyB,CAAC,MAAe;QACrD,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,eAAe,EAAE,CAAC;QACjE,MAAM,iBAAiB,GAAG,IAAI,CAAC,8BAA8B,CAC3D,MAAM,EACN,YAAY,CACb,CAAC,KAAK,EAAE,CAAC;QACV,MAAM,IAAI,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,CAAC;IACzE,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,MAAe;QAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,eAAe,EAAE,CAAC;QACjE,MAAM,UAAU,GAAG,IAAI,CAAC,wBAAwB,CAC9C,MAAM,EACN,YAAY,CACb,CAAC,KAAK,EAAE,CAAC;QACV,MAAM,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;IAC3D,CAAC;IAEO,8BAA8B,CACpC,MAAe,EACf,YAAoB;QAEpB,OAAO,IAAI,mCAAwB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC5D,CAAC;IAEO,wBAAwB,CAC9B,MAAe,EACf,YAAoB;QAEpB,OAAO,IAAI,0BAAkB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACtD,CAAC;CACF,CAAA;AAjEY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,qBAAU,GAAE;IAGR,mBAAA,IAAA,iBAAM,EAAC,yBAAmB,CAAC,CAAA;IAE3B,mBAAA,IAAA,iBAAM,EAAC,mBAAa,CAAC,CAAA;IAErB,mBAAA,IAAA,iBAAM,EAAC,+BAAuB,CAAC,CAAA;;GANvB,cAAc,CAiE1B"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import type { CodeQualityReport
|
|
1
|
+
import type { CodeQualityReport } from '../types';
|
|
2
|
+
import type { JUnitTestSuites } from '../../../junit';
|
|
2
3
|
export interface GitLabCIArtifacts {
|
|
3
4
|
writeCodeQualityReport(report: CodeQualityReport): Promise<void>;
|
|
4
|
-
writeTestReport(report:
|
|
5
|
+
writeTestReport(report: JUnitTestSuites): Promise<void>;
|
|
5
6
|
}
|
|
6
7
|
export declare const GITLAB_CI_ARTIFACTS: unique symbol;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GitLabCIArtifacts.js","sourceRoot":"","sources":["../../../../../../../packages/reporter/src/reporters/gitlab/api/GitLabCIArtifacts.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"GitLabCIArtifacts.js","sourceRoot":"","sources":["../../../../../../../packages/reporter/src/reporters/gitlab/api/GitLabCIArtifacts.ts"],"names":[],"mappings":";;;AAQa,QAAA,mBAAmB,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import type { CodeQualityReport
|
|
1
|
+
import type { CodeQualityReport } from '../types';
|
|
2
2
|
import type { GitLabCIArtifacts } from './GitLabCIArtifacts';
|
|
3
3
|
import type { GitLabConfig } from './GitLabConfig';
|
|
4
|
+
import { JUnitTestSuites } from '../../../junit';
|
|
4
5
|
export declare class GitLabCIArtifactsFileWriter implements GitLabCIArtifacts {
|
|
5
6
|
private readonly config;
|
|
6
7
|
constructor(config: GitLabConfig);
|
|
7
8
|
writeCodeQualityReport(report: CodeQualityReport): Promise<void>;
|
|
8
|
-
writeTestReport(report:
|
|
9
|
+
writeTestReport(report: JUnitTestSuites): Promise<void>;
|
|
9
10
|
private generateUniqueFileName;
|
|
10
11
|
}
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.GitLabCIArtifactsFileWriter = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const GitLabConfig_1 = require("./GitLabConfig");
|
|
6
|
-
const
|
|
6
|
+
const junit_1 = require("../../../junit");
|
|
7
7
|
const tsyringe_1 = require("tsyringe");
|
|
8
8
|
const promises_1 = require("node:fs/promises");
|
|
9
9
|
const node_crypto_1 = require("node:crypto");
|
|
@@ -30,7 +30,7 @@ let GitLabCIArtifactsFileWriter = class GitLabCIArtifactsFileWriter {
|
|
|
30
30
|
// reports:
|
|
31
31
|
// junit: gl-test-report-*.xml
|
|
32
32
|
// Note: Filenames are automatically made unique for concurrent test runs
|
|
33
|
-
const reportXml = (0,
|
|
33
|
+
const reportXml = (0, junit_1.buildJUnitXML)(report);
|
|
34
34
|
await (0, promises_1.writeFile)(fileName, reportXml, 'utf-8');
|
|
35
35
|
}
|
|
36
36
|
generateUniqueFileName() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GitLabCodeQualityFileWriter.js","sourceRoot":"","sources":["../../../../../../../packages/reporter/src/reporters/gitlab/api/GitLabCodeQualityFileWriter.ts"],"names":[],"mappings":";;;;AAGA,iDAA+C;AAC/C,
|
|
1
|
+
{"version":3,"file":"GitLabCodeQualityFileWriter.js","sourceRoot":"","sources":["../../../../../../../packages/reporter/src/reporters/gitlab/api/GitLabCodeQualityFileWriter.ts"],"names":[],"mappings":";;;;AAGA,iDAA+C;AAC/C,0CAAgE;AAChE,uCAA8C;AAC9C,+CAA6C;AAC7C,6CAAyC;AACzC,yCAA8C;AAGvC,IAAM,2BAA2B,GAAjC,MAAM,2BAA2B;IACtC,YAAoD,MAAoB;QAApB,WAAM,GAAN,MAAM,CAAc;IAAG,CAAC;IAErE,KAAK,CAAC,sBAAsB,CACjC,MAAyB;QAEzB,4DAA4D;QAC5D,gGAAgG;QAChG,eAAe;QACf,eAAe;QACf,iDAAiD;QACjD,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,yBAAyB,CAAC;QACvD,MAAM,IAAA,oBAAS,EAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IAEM,KAAK,CAAC,eAAe,CAAC,MAAuB;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC/C,wEAAwE;QACxE,gGAAgG;QAChG,eAAe;QACf,eAAe;QACf,oCAAoC;QACpC,yEAAyE;QACzE,MAAM,SAAS,GAAG,IAAA,qBAAa,EAAC,MAAM,CAAC,CAAC;QACxC,MAAM,IAAA,oBAAS,EAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;IAEO,sBAAsB;QAC5B,MAAM,GAAG,GAAG,IAAA,mBAAO,EAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,IAAA,oBAAQ,EAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QAC/D,MAAM,QAAQ,GAAG,GAAG,QAAQ,IAAI,IAAA,wBAAU,GAAE,IAAI,GAAG,EAAE,CAAC;QAEtD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAA;AAnCY,kEAA2B;sCAA3B,2BAA2B;IADvC,IAAA,qBAAU,GAAE;IAEE,mBAAA,IAAA,iBAAM,EAAC,4BAAa,CAAC,CAAA;;GADvB,2BAA2B,CAmCvC"}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.CodeQualityReportBuilder = void 0;
|
|
4
4
|
var CodeQualityReportBuilder_1 = require("./CodeQualityReportBuilder");
|
|
5
5
|
Object.defineProperty(exports, "CodeQualityReportBuilder", { enumerable: true, get: function () { return CodeQualityReportBuilder_1.CodeQualityReportBuilder; } });
|
|
6
|
-
var JUnitReportBuilder_1 = require("./JUnitReportBuilder");
|
|
7
|
-
Object.defineProperty(exports, "JUnitReportBuilder", { enumerable: true, get: function () { return JUnitReportBuilder_1.JUnitReportBuilder; } });
|
|
8
6
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/reporter/src/reporters/gitlab/builders/index.ts"],"names":[],"mappings":";;;AAAA,uEAAsE;AAA7D,oIAAA,wBAAwB,OAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/reporter/src/reporters/gitlab/builders/index.ts"],"names":[],"mappings":";;;AAAA,uEAAsE;AAA7D,oIAAA,wBAAwB,OAAA"}
|
package/src/reporters/index.d.ts
CHANGED
package/src/reporters/index.js
CHANGED
|
@@ -3,5 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const tslib_1 = require("tslib");
|
|
4
4
|
tslib_1.__exportStar(require("./github"), exports);
|
|
5
5
|
tslib_1.__exportStar(require("./gitlab"), exports);
|
|
6
|
+
tslib_1.__exportStar(require("./bitbucket"), exports);
|
|
6
7
|
tslib_1.__exportStar(require("./std"), exports);
|
|
7
8
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/reporter/src/reporters/index.ts"],"names":[],"mappings":";;;AAAA,mDAAyB;AACzB,mDAAyB;AACzB,gDAAsB"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/reporter/src/reporters/index.ts"],"names":[],"mappings":";;;AAAA,mDAAyB;AACzB,mDAAyB;AACzB,sDAA4B;AAC5B,gDAAsB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"JUnitReportBuilder.js","sourceRoot":"","sources":["../../../../../../../packages/reporter/src/reporters/gitlab/builders/JUnitReportBuilder.ts"],"names":[],"mappings":";;;AAGA,MAAa,kBAAkB;IAC7B,YACmB,MAAe,EACf,YAAoB;QADpB,WAAM,GAAN,MAAM,CAAS;QACf,iBAAY,GAAZ,YAAY,CAAQ;IACpC,CAAC;IAEG,KAAK;QACV,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAEzC,OAAO;YACL,UAAU,EAAE,CAAC,SAAS,CAAC;SACxB,CAAC;IACJ,CAAC;IAEO,eAAe;QACrB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CACxC,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CACnC,CAAC;QACF,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;QAE3D,OAAO;YACL,SAAS;YACT,QAAQ;YACR,IAAI,EAAE,cAAc;YACpB,KAAK,EAAE,SAAS,CAAC,MAAM;YACvB,IAAI,EAAE,CAAC,CAAC,+BAA+B;SACxC,CAAC;IACJ,CAAC;IAEO,sBAAsB,CAAC,KAAY;QACzC,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;QACxC,MAAM,OAAO,GAAG,GAAG,IAAI,2BAA2B,eAAe,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,eAAe,CAAC,GAAG,EAAE,CAAC;QAEhH,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QAC7C,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC;QAClB,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC;QAEpB,OAAO;YACL,OAAO;YACP,IAAI;YACJ,SAAS,EAAE,GAAG,eAAe,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,OAAO,CAAC,QAAQ,EAAE,EAAE;YAC1E,IAAI,EAAE,IAAI,CAAC,YAAY;YACvB,IAAI,EAAE,CAAC;YACP,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;SACjC,CAAC;IACJ,CAAC;CACF;AA9CD,gDA8CC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TestReport.js","sourceRoot":"","sources":["../../../../../../../packages/reporter/src/reporters/gitlab/types/TestReport.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"build-junit-xml.js","sourceRoot":"","sources":["../../../../../../../packages/reporter/src/reporters/gitlab/utils/build-junit-xml.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { buildJUnitXML } from './build-junit-xml';
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.buildJUnitXML = void 0;
|
|
4
|
-
var build_junit_xml_1 = require("./build-junit-xml");
|
|
5
|
-
Object.defineProperty(exports, "buildJUnitXML", { enumerable: true, get: function () { return build_junit_xml_1.buildJUnitXML; } });
|
|
6
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/reporter/src/reporters/gitlab/utils/index.ts"],"names":[],"mappings":";;;AAAA,qDAAkD;AAAzC,gHAAA,aAAa,OAAA"}
|
|
File without changes
|
|
File without changes
|