Skip to content

Commit 97746db

Browse files
authored
feat: include Snyk CLI as a generator tool in SBOM documents (#4945)
1 parent ea0f51e commit 97746db

File tree

4 files changed

+34
-3
lines changed

4 files changed

+34
-3
lines changed

cliv2/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ require (
1111
github.com/rs/zerolog v1.31.0
1212
github.com/snyk/cli-extension-dep-graph v0.0.0-20230926124856-b0fdf1ee6f73
1313
github.com/snyk/cli-extension-iac-rules v0.0.0-20230601153200-c572cfce46ce
14-
github.com/snyk/cli-extension-sbom v0.0.0-20230926124903-9705d7d47d8f
14+
github.com/snyk/cli-extension-sbom v0.0.0-20231123083311-52b1cecc1a7a
1515
github.com/snyk/container-cli v0.0.0-20230920093251-fe865879a91f
1616
github.com/snyk/go-application-framework v0.0.0-20231121110922-9719383f0706
1717
github.com/snyk/go-httpauth v0.0.0-20231117135515-eb445fea7530

cliv2/go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -661,8 +661,8 @@ github.com/snyk/cli-extension-dep-graph v0.0.0-20230926124856-b0fdf1ee6f73 h1:rw
661661
github.com/snyk/cli-extension-dep-graph v0.0.0-20230926124856-b0fdf1ee6f73/go.mod h1:QF3v8HBpOpyudYNCuR8LqfULutO76c91sBdLzD+pBJU=
662662
github.com/snyk/cli-extension-iac-rules v0.0.0-20230601153200-c572cfce46ce h1:WchwuyPX4mEr7tFCGD6EsjwTDipFWfLxs4Wps6KB3b4=
663663
github.com/snyk/cli-extension-iac-rules v0.0.0-20230601153200-c572cfce46ce/go.mod h1:5/IYYTgf32pST7St4GhS3KNz32WE17Ys+Hdb5Pqxex0=
664-
github.com/snyk/cli-extension-sbom v0.0.0-20230926124903-9705d7d47d8f h1:U3DQ9wnHJzs8NcM+kkjxDkOa/zkqLeiUs+eL/dLHsic=
665-
github.com/snyk/cli-extension-sbom v0.0.0-20230926124903-9705d7d47d8f/go.mod h1:O/cjwCbKhJQWyXHPmNbZ7ToQKnhyw0VUp1Qhim3WEcw=
664+
github.com/snyk/cli-extension-sbom v0.0.0-20231123083311-52b1cecc1a7a h1:oRrk9bvMXdAVhRt84Y8G06+Op7fYQYrRuslngG9BPZk=
665+
github.com/snyk/cli-extension-sbom v0.0.0-20231123083311-52b1cecc1a7a/go.mod h1:IwRGWjRuNkY08O7NJb7u3JuQkroEB8Qi1MlASpZVu1Q=
666666
github.com/snyk/container-cli v0.0.0-20230920093251-fe865879a91f h1:ghajT5PEiLP8XNFIdc7Yn4Th74RH/9Q++dDOp6Cb9eo=
667667
github.com/snyk/container-cli v0.0.0-20230920093251-fe865879a91f/go.mod h1:38w+dcAQp9eG3P5t2eNS9eG0reut10AeJjLv5lJ5lpM=
668668
github.com/snyk/go-application-framework v0.0.0-20231121110922-9719383f0706 h1:z/g5P0kS7bedN07rNChlPEifKvAe9+hufGEEifPNcJg=

test/acceptance/fake-server.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -521,6 +521,7 @@ export const fakeServer = (basePath: string, snykToken: string): FakeServer => {
521521
(req, res) => {
522522
const depGraph: void | Record<string, any> = req.body.depGraph;
523523
const depGraphs: void | Record<string, any>[] = req.body.depGraphs;
524+
const tools: void | Record<string, any>[] = req.body.tools;
524525
let bom: Record<string, unknown> = { bomFormat: 'CycloneDX' };
525526

526527
if (Array.isArray(depGraphs) && req.body.subject) {
@@ -542,6 +543,13 @@ export const fakeServer = (basePath: string, snykToken: string): FakeServer => {
542543
};
543544
}
544545

546+
if (Array.isArray(tools)) {
547+
bom.metadata = {
548+
...(bom.metadata as any),
549+
tools: [...tools, { name: 'fake-server' }],
550+
};
551+
}
552+
545553
res.status(200).send(bom);
546554
},
547555
);

test/jest/acceptance/snyk-sbom/sbom.spec.ts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,4 +54,27 @@ describe('snyk sbom (mocked server only)', () => {
5454
expect(bom.metadata.component.name).toEqual('npm-package');
5555
expect(bom.components).toHaveLength(3);
5656
});
57+
58+
test('`sbom` includes a tool name in the document', async () => {
59+
const project = await createProjectFromWorkspace('npm-package');
60+
61+
const { stdout } = await runSnykCLI(
62+
`sbom --org aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee --format cyclonedx1.4+json --debug`,
63+
{
64+
cwd: project.path(),
65+
env,
66+
},
67+
);
68+
const bom = JSON.parse(stdout);
69+
70+
expect(bom.metadata.tools).toEqual(
71+
expect.arrayContaining([
72+
{
73+
vendor: 'Snyk',
74+
name: 'snyk-cli',
75+
version: expect.any(String),
76+
},
77+
]),
78+
);
79+
});
5780
});

0 commit comments

Comments
 (0)