Skip to content
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
24 changes: 14 additions & 10 deletions src/providers/java_maven.js
Original file line number Diff line number Diff line change
Expand Up @@ -77,10 +77,10 @@ function createSbomFileFromTextFormat(dotGraphList, ignoredDeps) {
parseDependencyTree(root, 0, lines.slice(1), sbom);
return sbom.filterIgnoredDepsIncludingVersion(ignoredDeps).getAsJsonString();
}

const DEP_REGEX = /(?:([-a-zA-Z0-9._]+):([-a-zA-Z0-9._]+):[-a-zA-Z0-9._]+:([-a-zA-Z0-9._]+):[-a-zA-Z]+)/
const ROOT_REGEX = /(?:([-a-zA-Z0-9._]+):([-a-zA-Z0-9._]+):[-a-zA-Z0-9._]+:([-a-zA-Z0-9._]+))/
const CONFLICT_REGEX = /.*- omitted for conflict with (\S+)\)/
const DEP_REGEX = /(([-a-zA-Z0-9._]{2,})|[0-9])/g
// const DEP_REGEX = /(?:([-a-zA-Z0-9._]+):([-a-zA-Z0-9._]+):[-a-zA-Z0-9._]+:([-a-zA-Z0-9._]+):[-a-zA-Z]+)/
// const ROOT_REGEX = /(?:([-a-zA-Z0-9._]+):([-a-zA-Z0-9._]+):[-a-zA-Z0-9._]+:([-a-zA-Z0-9._]+))/
const CONFLICT_REGEX = /.*omitted for conflict with (\S+)\)/

/**
* Recursively populates the SBOM instance with the parsed graph
Expand Down Expand Up @@ -133,19 +133,23 @@ function getDepth(line) {
* @private
*/
function parseDep(line) {
let match = line.match(ROOT_REGEX);
if (!match) {
match = line.match(DEP_REGEX);
}

let match = line.match(DEP_REGEX);
if(!match) {
throw new Error(`Unable generate SBOM from dependency tree. Line: ${line} cannot be parsed into a PackageURL`);
}
let version = match[3];
let version
if(match.length >=5 && ['compile','provided','runtime'].includes(match[5])) {
version = `${match[4]}-${match[3]}`
}
else {
version = match[3]
}
let override = line.match(CONFLICT_REGEX);
if (override) {
version = override[1];
}
return toPurl(match[1], match[2], version);
return toPurl(match[0], match[1], version);
}

/**
Expand Down
39 changes: 25 additions & 14 deletions test/it/end-to-end.js
Original file line number Diff line number Diff line change
Expand Up @@ -76,9 +76,12 @@ suite('Integration Tests', () => {
{
process.env["EXHORT_PYTHON_VIRTUAL_ENV"] = ""
}
let reportParsedFromHtml = JSON.parse(html.substring(html.indexOf("\"report\":") +9,html.indexOf("\"ossIssueTemplate\"") -1));

let parsedSummaryFromHtml = getParsedKeyFromHtml(html,"\"summary\"",10)
let parsedScannedFromHtml = getParsedKeyFromHtml(html, "\"scanned\"",10)
let parsedStatusFromHtml = getParsedKeyFromHtml(html, "\"status\"",9)
let parsedScannedFromHtml = reportParsedFromHtml.scanned
let parsedStatusFromHtmlSnyk = reportParsedFromHtml.providers["snyk"].status
let parsedStatusFromHtmlossIndex = reportParsedFromHtml.providers["oss-index"].status
expect( typeof html).equals("string")
expect(html).include("html").include("svg")
expect(parsedScannedFromHtml.total).greaterThan(0)
Expand All @@ -88,7 +91,8 @@ suite('Integration Tests', () => {
expect(parsedScannedFromHtml.transitive).greaterThan(0)
}
expect(parsedSummaryFromHtml.total).greaterThanOrEqual(0)
expect(parsedStatusFromHtml.code).equals(200)
expect(parsedStatusFromHtmlSnyk.code).equals(200)
expect(parsedStatusFromHtmlossIndex.code).equals(401)
// parsedSummaryFromHtml.providerStatuses.forEach(provider => expect(provider.status).equals(200))
}).timeout(15000);

Expand All @@ -108,31 +112,38 @@ suite('Integration Tests', () => {
});
}).beforeAll(() => process.env["EXHORT_DEV_MODE"] = "true");

// suite('Developer Test End to End', () => {
// suite('Integration Tests - Developer Test End to End', () => {
// // let opts = {
// // EXHORT_DEV_MODE: "true",
// // EXHORT_SNYK_TOKEN: "ee64316c-a4ba-4ca0-a785-18cb05ed3f25"
// //
// // }
//
// test(`Stack Analysis json`, async () => {
// // process.env["EXHORT_DEBUG"]= "true"
// // process.env["EXHORT_DEV_MODE"]= "false"
// process.env["EXHORT_DEBUG"]= "true"
// process.env["EXHORT_DEV_MODE"]= "true"
// // process.env["EXHORT_GO_PATH"]= "/home/zgrinber/test-go/go/bin/go"
// // process.env["RHDA_TOKEN"] = "34JKLDS-4234809-66666666666"
// // process.env["RHDA_SOURCE"] = "Zvika Client"
// // let result = await index.stackAnalysis("/tmp/rajan-0410/go.mod", false, opts);
// let opts = {
// MATCH_MANIFEST_VERSIONS: 'false'
// MATCH_MANIFEST_VERSIONS: 'false',
// EXHORT_DEV_MODE: 'true',
// EXHORT_OSS_INDEX_TOKEN: '2bb579b7894f13f180f0ebb591be7c8febbcf699',
// EXHORT_OSS_INDEX_USER: 'zgrinber@redhat.com'
// }
//
// process.env["EXHORT_PYTHON_VIRTUAL_ENV"] = "true"
// process.env["EXHORT_PYTHON_INSTALL_BEST_EFFORTS"] = "true"
// process.env["MATCH_MANIFEST_VERSIONS"] = "false"
// let pomPath = `/tmp/251023/requirements.txt`
// let providedDataForStack = await index.stackAnalysis(pomPath)
// console.log(JSON.stringify(providedDataForStack.summary,null , 4))
// expect(providedDataForStack.summary.dependencies.scanned).greaterThan(0)
// // process.env["EXHORT_PYTHON_VIRTUAL_ENV"] = "true"
// // process.env["EXHORT_PYTHON_INSTALL_BEST_EFFORTS"] = "true"
// // process.env["MATCH_MANIFEST_VERSIONS"] = "false"
// let pomPath = `/tmp/071223/pom.xml`
// let providedDataForStack;
// providedDataForStack = await index.stackAnalysis(pomPath, false,opts);
// // console.log(JSON.stringify(providedDataForStack,null , 4))
// // fs.writeFileSync(`/tmp/301123/report.html`,providedDataForStack)
// // providedDataForStack = await index.componentAnalysis("go.mod",fs.readFileSync(pomPath).toString())
// // console.log(JSON.stringify(providedDataForStack,null , 4))
// // expect(providedDataForStack.summary.dependencies.scanned).greaterThan(0)
// }).timeout(15000);
//
//
Expand Down