auditjs
Version:
Audit dependencies to identify known vulnerabilities and maintenance problems
84 lines • 5.64 kB
JavaScript
"use strict";
/*
* Copyright 2019-Present Sonatype Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const CycloneDXSbomCreator_1 = require("./CycloneDXSbomCreator");
const TestHelper_1 = __importDefault(require("../Tests/TestHelper"));
// Test object with circular dependency, scoped dependency, dependency with dependency
const object = {
name: 'testproject',
version: '1.0.0',
description: 'Test Description',
dependencies: {
testdependency: {
name: 'testdependency',
version: '1.0.1',
bugs: {
url: 'git+ssh://git@github.com/slackhq/csp-html-webpack-plugin.git',
},
dependencies: {
testdependency: {
name: 'testdependency',
version: '1.0.1',
},
},
},
testdependency2: {
name: 'testdependency2',
version: '1.0.2',
repository: {
url: 'git@slack-github.com:anuj/csp-html-webpack-plugin.git',
},
dependencies: {
testdependency: {
name: 'testdependency',
version: '1.0.0',
},
},
},
'@scope/testdependency3': {
name: '@scope/testdependency3',
version: '1.0.2',
},
},
};
const expectedResponse = `<bom xmlns="http://cyclonedx.org/schema/bom/1.1" version="1"><components><component type="library" bom-ref="pkg:npm/testdependency@1.0.1"><name>testdependency</name><version>1.0.1</version><purl>pkg:npm/testdependency@1.0.1</purl><description/><externalReferences><reference type="issue-tracker"><url>git+ssh://git@github.com/slackhq/csp-html-webpack-plugin.git</url></reference></externalReferences></component><component type="library" bom-ref="pkg:npm/testdependency2@1.0.2"><name>testdependency2</name><version>1.0.2</version><purl>pkg:npm/testdependency2@1.0.2</purl><description/></component><component type="library" bom-ref="pkg:npm/testdependency@1.0.0"><name>testdependency</name><version>1.0.0</version><purl>pkg:npm/testdependency@1.0.0</purl><description/></component><component type="library" bom-ref="pkg:npm/%40scope/testdependency3@1.0.2"><group>@scope</group><name>testdependency3</name><version>1.0.2</version><purl>pkg:npm/%40scope/testdependency3@1.0.2</purl><description/></component></components></bom>`;
const expectedSpartanResponse = `<bom xmlns="http://cyclonedx.org/schema/bom/1.1" version="1"><components><component type="library" bom-ref="pkg:npm/testdependency@1.0.1"><name>testdependency</name><version>1.0.1</version><purl>pkg:npm/testdependency@1.0.1</purl></component><component type="library" bom-ref="pkg:npm/testdependency2@1.0.2"><name>testdependency2</name><version>1.0.2</version><purl>pkg:npm/testdependency2@1.0.2</purl></component><component type="library" bom-ref="pkg:npm/testdependency@1.0.0"><name>testdependency</name><version>1.0.0</version><purl>pkg:npm/testdependency@1.0.0</purl></component><component type="library" bom-ref="pkg:npm/%40scope/testdependency3@1.0.2"><group>@scope</group><name>testdependency3</name><version>1.0.2</version><purl>pkg:npm/%40scope/testdependency3@1.0.2</purl></component></components></bom>`;
describe('CycloneDXSbomCreator', () => __awaiter(void 0, void 0, void 0, function* () {
it('should create an sbom string given a minimal valid object', () => __awaiter(void 0, void 0, void 0, function* () {
const sbomCreator = new CycloneDXSbomCreator_1.CycloneDXSbomCreator(process.cwd());
const string = yield sbomCreator.createBom(object);
(0, TestHelper_1.default)(string).to.eq(expectedResponse);
}));
it('should create a spartan sbom string given a minimal valid object', () => __awaiter(void 0, void 0, void 0, function* () {
const sbomCreator = new CycloneDXSbomCreator_1.CycloneDXSbomCreator(process.cwd(), { spartan: true });
const string = yield sbomCreator.createBom(object);
(0, TestHelper_1.default)(string).to.eq(expectedSpartanResponse);
}));
}));
//# sourceMappingURL=CycloneDXSbomCreator.spec.js.map