1/* IMPORTANT
2 * This snapshot file is auto-generated, but designed for humans.
3 * It should be checked into source control and tracked carefully.
4 * Re-generate by setting TAP_SNAPSHOT=1 and running tests.
5 * Make sure to inspect the output below.  Do not ignore changes!
6 */
7'use strict'
8exports[`test/lib/commands/sbom.js TAP sbom --omit dev > must match snapshot 1`] = `
9{
10  "spdxVersion": "SPDX-2.3",
11  "dataLicense": "CC0-1.0",
12  "SPDXID": "SPDXRef-DOCUMENT",
13  "name": "test-npm-sbom@1.0.0",
14  "documentNamespace": "http://spdx.org/spdxdocs/test-npm-sbom-1.0.0-00000000-0000-0000-0000-000000000000",
15  "creationInfo": {
16    "created": "2020-01-01T00:00:00.000Z",
17    "creators": [
18      "Tool: npm/cli-10.0.0"
19    ]
20  },
21  "documentDescribes": [
22    "SPDXRef-Package-test-npm-sbom-1.0.0"
23  ],
24  "packages": [
25    {
26      "name": "test-npm-sbom",
27      "SPDXID": "SPDXRef-Package-test-npm-sbom-1.0.0",
28      "versionInfo": "1.0.0",
29      "packageFileName": "",
30      "primaryPackagePurpose": "LIBRARY",
31      "downloadLocation": "NOASSERTION",
32      "filesAnalyzed": false,
33      "homepage": "NOASSERTION",
34      "licenseDeclared": "NOASSERTION",
35      "externalRefs": [
36        {
37          "referenceCategory": "PACKAGE-MANAGER",
38          "referenceType": "purl",
39          "referenceLocator": "pkg:npm/test-npm-sbom@1.0.0"
40        }
41      ]
42    },
43    {
44      "name": "foo",
45      "SPDXID": "SPDXRef-Package-foo-1.0.0",
46      "versionInfo": "1.0.0",
47      "packageFileName": "node_modules/foo",
48      "downloadLocation": "NOASSERTION",
49      "filesAnalyzed": false,
50      "homepage": "NOASSERTION",
51      "licenseDeclared": "NOASSERTION",
52      "externalRefs": [
53        {
54          "referenceCategory": "PACKAGE-MANAGER",
55          "referenceType": "purl",
56          "referenceLocator": "pkg:npm/foo@1.0.0"
57        }
58      ]
59    },
60    {
61      "name": "dog",
62      "SPDXID": "SPDXRef-Package-dog-1.0.0",
63      "versionInfo": "1.0.0",
64      "packageFileName": "node_modules/foo/node_modules/dog",
65      "downloadLocation": "NOASSERTION",
66      "filesAnalyzed": false,
67      "homepage": "NOASSERTION",
68      "licenseDeclared": "NOASSERTION",
69      "externalRefs": [
70        {
71          "referenceCategory": "PACKAGE-MANAGER",
72          "referenceType": "purl",
73          "referenceLocator": "pkg:npm/dog@1.0.0"
74        }
75      ]
76    }
77  ],
78  "relationships": [
79    {
80      "spdxElementId": "SPDXRef-DOCUMENT",
81      "relatedSpdxElement": "SPDXRef-Package-test-npm-sbom-1.0.0",
82      "relationshipType": "DESCRIBES"
83    },
84    {
85      "spdxElementId": "SPDXRef-Package-foo-1.0.0",
86      "relatedSpdxElement": "SPDXRef-Package-test-npm-sbom-1.0.0",
87      "relationshipType": "DEPENDENCY_OF"
88    },
89    {
90      "spdxElementId": "SPDXRef-Package-dog-1.0.0",
91      "relatedSpdxElement": "SPDXRef-Package-foo-1.0.0",
92      "relationshipType": "DEPENDENCY_OF"
93    }
94  ]
95}
96`
97
98exports[`test/lib/commands/sbom.js TAP sbom --omit optional > must match snapshot 1`] = `
99{
100  "spdxVersion": "SPDX-2.3",
101  "dataLicense": "CC0-1.0",
102  "SPDXID": "SPDXRef-DOCUMENT",
103  "name": "test-npm-sbom@1.0.0",
104  "documentNamespace": "http://spdx.org/spdxdocs/test-npm-sbom-1.0.0-00000000-0000-0000-0000-000000000000",
105  "creationInfo": {
106    "created": "2020-01-01T00:00:00.000Z",
107    "creators": [
108      "Tool: npm/cli-10.0.0"
109    ]
110  },
111  "documentDescribes": [
112    "SPDXRef-Package-test-npm-sbom-1.0.0"
113  ],
114  "packages": [
115    {
116      "name": "test-npm-sbom",
117      "SPDXID": "SPDXRef-Package-test-npm-sbom-1.0.0",
118      "versionInfo": "1.0.0",
119      "packageFileName": "",
120      "primaryPackagePurpose": "LIBRARY",
121      "downloadLocation": "NOASSERTION",
122      "filesAnalyzed": false,
123      "homepage": "NOASSERTION",
124      "licenseDeclared": "NOASSERTION",
125      "externalRefs": [
126        {
127          "referenceCategory": "PACKAGE-MANAGER",
128          "referenceType": "purl",
129          "referenceLocator": "pkg:npm/test-npm-sbom@1.0.0"
130        }
131      ]
132    },
133    {
134      "name": "chai",
135      "SPDXID": "SPDXRef-Package-chai-1.0.0",
136      "versionInfo": "1.0.0",
137      "packageFileName": "node_modules/chai",
138      "downloadLocation": "NOASSERTION",
139      "filesAnalyzed": false,
140      "homepage": "NOASSERTION",
141      "licenseDeclared": "NOASSERTION",
142      "externalRefs": [
143        {
144          "referenceCategory": "PACKAGE-MANAGER",
145          "referenceType": "purl",
146          "referenceLocator": "pkg:npm/chai@1.0.0"
147        }
148      ]
149    }
150  ],
151  "relationships": [
152    {
153      "spdxElementId": "SPDXRef-DOCUMENT",
154      "relatedSpdxElement": "SPDXRef-Package-test-npm-sbom-1.0.0",
155      "relationshipType": "DESCRIBES"
156    },
157    {
158      "spdxElementId": "SPDXRef-Package-chai-1.0.0",
159      "relatedSpdxElement": "SPDXRef-Package-test-npm-sbom-1.0.0",
160      "relationshipType": "DEPENDENCY_OF"
161    }
162  ]
163}
164`
165
166exports[`test/lib/commands/sbom.js TAP sbom --omit peer > must match snapshot 1`] = `
167{
168  "spdxVersion": "SPDX-2.3",
169  "dataLicense": "CC0-1.0",
170  "SPDXID": "SPDXRef-DOCUMENT",
171  "name": "test-npm-sbom@1.0.0",
172  "documentNamespace": "http://spdx.org/spdxdocs/test-npm-sbom-1.0.0-00000000-0000-0000-0000-000000000000",
173  "creationInfo": {
174    "created": "2020-01-01T00:00:00.000Z",
175    "creators": [
176      "Tool: npm/cli-10.0.0"
177    ]
178  },
179  "documentDescribes": [
180    "SPDXRef-Package-test-npm-sbom-1.0.0"
181  ],
182  "packages": [
183    {
184      "name": "test-npm-sbom",
185      "SPDXID": "SPDXRef-Package-test-npm-sbom-1.0.0",
186      "versionInfo": "1.0.0",
187      "packageFileName": "",
188      "primaryPackagePurpose": "LIBRARY",
189      "downloadLocation": "NOASSERTION",
190      "filesAnalyzed": false,
191      "homepage": "NOASSERTION",
192      "licenseDeclared": "NOASSERTION",
193      "externalRefs": [
194        {
195          "referenceCategory": "PACKAGE-MANAGER",
196          "referenceType": "purl",
197          "referenceLocator": "pkg:npm/test-npm-sbom@1.0.0"
198        }
199      ]
200    },
201    {
202      "name": "chai",
203      "SPDXID": "SPDXRef-Package-chai-1.0.0",
204      "versionInfo": "1.0.0",
205      "packageFileName": "node_modules/chai",
206      "downloadLocation": "NOASSERTION",
207      "filesAnalyzed": false,
208      "homepage": "NOASSERTION",
209      "licenseDeclared": "NOASSERTION",
210      "externalRefs": [
211        {
212          "referenceCategory": "PACKAGE-MANAGER",
213          "referenceType": "purl",
214          "referenceLocator": "pkg:npm/chai@1.0.0"
215        }
216      ]
217    }
218  ],
219  "relationships": [
220    {
221      "spdxElementId": "SPDXRef-DOCUMENT",
222      "relatedSpdxElement": "SPDXRef-Package-test-npm-sbom-1.0.0",
223      "relationshipType": "DESCRIBES"
224    },
225    {
226      "spdxElementId": "SPDXRef-Package-chai-1.0.0",
227      "relatedSpdxElement": "SPDXRef-Package-test-npm-sbom-1.0.0",
228      "relationshipType": "DEPENDENCY_OF"
229    }
230  ]
231}
232`
233
234exports[`test/lib/commands/sbom.js TAP sbom basic sbom - cyclonedx > must match snapshot 1`] = `
235{
236  "$schema": "http://cyclonedx.org/schema/bom-1.5.schema.json",
237  "bomFormat": "CycloneDX",
238  "specVersion": "1.5",
239  "serialNumber": "urn:uuid:00000000-0000-0000-0000-000000000000",
240  "version": 1,
241  "metadata": {
242    "timestamp": "2020-01-01T00:00:00.000Z",
243    "lifecycles": [
244      {
245        "phase": "build"
246      }
247    ],
248    "tools": [
249      {
250        "vendor": "npm",
251        "name": "cli",
252        "version": "10.0.0"
253      }
254    ],
255    "component": {
256      "bom-ref": "test-npm-sbom@1.0.0",
257      "type": "application",
258      "name": "prefix",
259      "version": "1.0.0",
260      "scope": "required",
261      "purl": "pkg:npm/test-npm-sbom@1.0.0",
262      "properties": [
263        {
264          "name": "cdx:npm:package:path",
265          "value": ""
266        }
267      ],
268      "externalReferences": []
269    }
270  },
271  "components": [
272    {
273      "bom-ref": "chai@1.0.0",
274      "type": "library",
275      "name": "chai",
276      "version": "1.0.0",
277      "scope": "required",
278      "purl": "pkg:npm/chai@1.0.0",
279      "properties": [
280        {
281          "name": "cdx:npm:package:path",
282          "value": "node_modules/chai"
283        }
284      ],
285      "externalReferences": []
286    },
287    {
288      "bom-ref": "foo@1.0.0",
289      "type": "library",
290      "name": "foo",
291      "version": "1.0.0",
292      "scope": "required",
293      "purl": "pkg:npm/foo@1.0.0",
294      "properties": [
295        {
296          "name": "cdx:npm:package:path",
297          "value": "node_modules/foo"
298        }
299      ],
300      "externalReferences": []
301    },
302    {
303      "bom-ref": "dog@1.0.0",
304      "type": "library",
305      "name": "dog",
306      "version": "1.0.0",
307      "scope": "required",
308      "purl": "pkg:npm/dog@1.0.0",
309      "properties": [
310        {
311          "name": "cdx:npm:package:path",
312          "value": "node_modules/foo/node_modules/dog"
313        }
314      ],
315      "externalReferences": []
316    }
317  ],
318  "dependencies": [
319    {
320      "ref": "test-npm-sbom@1.0.0",
321      "dependsOn": [
322        "foo@1.0.0",
323        "chai@1.0.0"
324      ]
325    },
326    {
327      "ref": "chai@1.0.0",
328      "dependsOn": []
329    },
330    {
331      "ref": "foo@1.0.0",
332      "dependsOn": [
333        "dog@1.0.0"
334      ]
335    },
336    {
337      "ref": "dog@1.0.0",
338      "dependsOn": []
339    }
340  ]
341}
342`
343
344exports[`test/lib/commands/sbom.js TAP sbom basic sbom - spdx > must match snapshot 1`] = `
345{
346  "spdxVersion": "SPDX-2.3",
347  "dataLicense": "CC0-1.0",
348  "SPDXID": "SPDXRef-DOCUMENT",
349  "name": "test-npm-sbom@1.0.0",
350  "documentNamespace": "http://spdx.org/spdxdocs/test-npm-sbom-1.0.0-00000000-0000-0000-0000-000000000000",
351  "creationInfo": {
352    "created": "2020-01-01T00:00:00.000Z",
353    "creators": [
354      "Tool: npm/cli-10.0.0"
355    ]
356  },
357  "documentDescribes": [
358    "SPDXRef-Package-test-npm-sbom-1.0.0"
359  ],
360  "packages": [
361    {
362      "name": "test-npm-sbom",
363      "SPDXID": "SPDXRef-Package-test-npm-sbom-1.0.0",
364      "versionInfo": "1.0.0",
365      "packageFileName": "",
366      "primaryPackagePurpose": "LIBRARY",
367      "downloadLocation": "NOASSERTION",
368      "filesAnalyzed": false,
369      "homepage": "NOASSERTION",
370      "licenseDeclared": "NOASSERTION",
371      "externalRefs": [
372        {
373          "referenceCategory": "PACKAGE-MANAGER",
374          "referenceType": "purl",
375          "referenceLocator": "pkg:npm/test-npm-sbom@1.0.0"
376        }
377      ]
378    },
379    {
380      "name": "chai",
381      "SPDXID": "SPDXRef-Package-chai-1.0.0",
382      "versionInfo": "1.0.0",
383      "packageFileName": "node_modules/chai",
384      "downloadLocation": "NOASSERTION",
385      "filesAnalyzed": false,
386      "homepage": "NOASSERTION",
387      "licenseDeclared": "NOASSERTION",
388      "externalRefs": [
389        {
390          "referenceCategory": "PACKAGE-MANAGER",
391          "referenceType": "purl",
392          "referenceLocator": "pkg:npm/chai@1.0.0"
393        }
394      ]
395    },
396    {
397      "name": "foo",
398      "SPDXID": "SPDXRef-Package-foo-1.0.0",
399      "versionInfo": "1.0.0",
400      "packageFileName": "node_modules/foo",
401      "downloadLocation": "NOASSERTION",
402      "filesAnalyzed": false,
403      "homepage": "NOASSERTION",
404      "licenseDeclared": "NOASSERTION",
405      "externalRefs": [
406        {
407          "referenceCategory": "PACKAGE-MANAGER",
408          "referenceType": "purl",
409          "referenceLocator": "pkg:npm/foo@1.0.0"
410        }
411      ]
412    },
413    {
414      "name": "dog",
415      "SPDXID": "SPDXRef-Package-dog-1.0.0",
416      "versionInfo": "1.0.0",
417      "packageFileName": "node_modules/foo/node_modules/dog",
418      "downloadLocation": "NOASSERTION",
419      "filesAnalyzed": false,
420      "homepage": "NOASSERTION",
421      "licenseDeclared": "NOASSERTION",
422      "externalRefs": [
423        {
424          "referenceCategory": "PACKAGE-MANAGER",
425          "referenceType": "purl",
426          "referenceLocator": "pkg:npm/dog@1.0.0"
427        }
428      ]
429    }
430  ],
431  "relationships": [
432    {
433      "spdxElementId": "SPDXRef-DOCUMENT",
434      "relatedSpdxElement": "SPDXRef-Package-test-npm-sbom-1.0.0",
435      "relationshipType": "DESCRIBES"
436    },
437    {
438      "spdxElementId": "SPDXRef-Package-foo-1.0.0",
439      "relatedSpdxElement": "SPDXRef-Package-test-npm-sbom-1.0.0",
440      "relationshipType": "DEPENDENCY_OF"
441    },
442    {
443      "spdxElementId": "SPDXRef-Package-chai-1.0.0",
444      "relatedSpdxElement": "SPDXRef-Package-test-npm-sbom-1.0.0",
445      "relationshipType": "DEPENDENCY_OF"
446    },
447    {
448      "spdxElementId": "SPDXRef-Package-dog-1.0.0",
449      "relatedSpdxElement": "SPDXRef-Package-foo-1.0.0",
450      "relationshipType": "DEPENDENCY_OF"
451    }
452  ]
453}
454`
455
456exports[`test/lib/commands/sbom.js TAP sbom extraneous dep > must match snapshot 1`] = `
457{
458  "spdxVersion": "SPDX-2.3",
459  "dataLicense": "CC0-1.0",
460  "SPDXID": "SPDXRef-DOCUMENT",
461  "name": "test-npm-ls@1.0.0",
462  "documentNamespace": "http://spdx.org/spdxdocs/test-npm-sbom-1.0.0-00000000-0000-0000-0000-000000000000",
463  "creationInfo": {
464    "created": "2020-01-01T00:00:00.000Z",
465    "creators": [
466      "Tool: npm/cli-10.0.0"
467    ]
468  },
469  "documentDescribes": [
470    "SPDXRef-Package-test-npm-ls-1.0.0"
471  ],
472  "packages": [
473    {
474      "name": "test-npm-ls",
475      "SPDXID": "SPDXRef-Package-test-npm-ls-1.0.0",
476      "versionInfo": "1.0.0",
477      "packageFileName": "",
478      "primaryPackagePurpose": "LIBRARY",
479      "downloadLocation": "NOASSERTION",
480      "filesAnalyzed": false,
481      "homepage": "NOASSERTION",
482      "licenseDeclared": "NOASSERTION",
483      "externalRefs": [
484        {
485          "referenceCategory": "PACKAGE-MANAGER",
486          "referenceType": "purl",
487          "referenceLocator": "pkg:npm/test-npm-ls@1.0.0"
488        }
489      ]
490    },
491    {
492      "name": "chai",
493      "SPDXID": "SPDXRef-Package-chai-1.0.0",
494      "versionInfo": "1.0.0",
495      "packageFileName": "node_modules/chai",
496      "downloadLocation": "NOASSERTION",
497      "filesAnalyzed": false,
498      "homepage": "NOASSERTION",
499      "licenseDeclared": "NOASSERTION",
500      "externalRefs": [
501        {
502          "referenceCategory": "PACKAGE-MANAGER",
503          "referenceType": "purl",
504          "referenceLocator": "pkg:npm/chai@1.0.0"
505        }
506      ]
507    },
508    {
509      "name": "foo",
510      "SPDXID": "SPDXRef-Package-foo-1.0.0",
511      "versionInfo": "1.0.0",
512      "packageFileName": "node_modules/foo",
513      "downloadLocation": "NOASSERTION",
514      "filesAnalyzed": false,
515      "homepage": "NOASSERTION",
516      "licenseDeclared": "NOASSERTION",
517      "externalRefs": [
518        {
519          "referenceCategory": "PACKAGE-MANAGER",
520          "referenceType": "purl",
521          "referenceLocator": "pkg:npm/foo@1.0.0"
522        }
523      ]
524    },
525    {
526      "name": "dog",
527      "SPDXID": "SPDXRef-Package-dog-1.0.0",
528      "versionInfo": "1.0.0",
529      "packageFileName": "node_modules/foo/node_modules/dog",
530      "downloadLocation": "NOASSERTION",
531      "filesAnalyzed": false,
532      "homepage": "NOASSERTION",
533      "licenseDeclared": "NOASSERTION",
534      "externalRefs": [
535        {
536          "referenceCategory": "PACKAGE-MANAGER",
537          "referenceType": "purl",
538          "referenceLocator": "pkg:npm/dog@1.0.0"
539        }
540      ]
541    }
542  ],
543  "relationships": [
544    {
545      "spdxElementId": "SPDXRef-DOCUMENT",
546      "relatedSpdxElement": "SPDXRef-Package-test-npm-ls-1.0.0",
547      "relationshipType": "DESCRIBES"
548    },
549    {
550      "spdxElementId": "SPDXRef-Package-foo-1.0.0",
551      "relatedSpdxElement": "SPDXRef-Package-test-npm-ls-1.0.0",
552      "relationshipType": "DEPENDENCY_OF"
553    },
554    {
555      "spdxElementId": "SPDXRef-Package-dog-1.0.0",
556      "relatedSpdxElement": "SPDXRef-Package-foo-1.0.0",
557      "relationshipType": "DEPENDENCY_OF"
558    },
559    {
560      "spdxElementId": "SPDXRef-Package-chai-1.0.0",
561      "relatedSpdxElement": "SPDXRef-Package-test-npm-ls-1.0.0",
562      "relationshipType": "OPTIONAL_DEPENDENCY_OF"
563    }
564  ]
565}
566`
567
568exports[`test/lib/commands/sbom.js TAP sbom loading a tree containing workspaces should filter worksapces with --workspace > must match snapshot 1`] = `
569{
570  "spdxVersion": "SPDX-2.3",
571  "dataLicense": "CC0-1.0",
572  "SPDXID": "SPDXRef-DOCUMENT",
573  "name": "workspaces-tree@1.0.0",
574  "documentNamespace": "http://spdx.org/spdxdocs/test-npm-sbom-1.0.0-00000000-0000-0000-0000-000000000000",
575  "creationInfo": {
576    "created": "2020-01-01T00:00:00.000Z",
577    "creators": [
578      "Tool: npm/cli-10.0.0"
579    ]
580  },
581  "documentDescribes": [
582    "SPDXRef-Package-workspaces-tree-1.0.0"
583  ],
584  "packages": [
585    {
586      "name": "workspaces-tree",
587      "SPDXID": "SPDXRef-Package-workspaces-tree-1.0.0",
588      "versionInfo": "1.0.0",
589      "packageFileName": "",
590      "primaryPackagePurpose": "LIBRARY",
591      "downloadLocation": "NOASSERTION",
592      "filesAnalyzed": false,
593      "homepage": "NOASSERTION",
594      "licenseDeclared": "NOASSERTION",
595      "externalRefs": [
596        {
597          "referenceCategory": "PACKAGE-MANAGER",
598          "referenceType": "purl",
599          "referenceLocator": "pkg:npm/workspaces-tree@1.0.0"
600        }
601      ]
602    },
603    {
604      "name": "a",
605      "SPDXID": "SPDXRef-Package-a-1.0.0",
606      "versionInfo": "1.0.0",
607      "packageFileName": "node_modules/a",
608      "downloadLocation": "NOASSERTION",
609      "filesAnalyzed": false,
610      "homepage": "NOASSERTION",
611      "licenseDeclared": "NOASSERTION",
612      "externalRefs": [
613        {
614          "referenceCategory": "PACKAGE-MANAGER",
615          "referenceType": "purl",
616          "referenceLocator": "pkg:npm/a@1.0.0"
617        }
618      ]
619    },
620    {
621      "name": "d",
622      "SPDXID": "SPDXRef-Package-d-1.0.0",
623      "versionInfo": "1.0.0",
624      "packageFileName": "node_modules/d",
625      "downloadLocation": "NOASSERTION",
626      "filesAnalyzed": false,
627      "homepage": "NOASSERTION",
628      "licenseDeclared": "NOASSERTION",
629      "externalRefs": [
630        {
631          "referenceCategory": "PACKAGE-MANAGER",
632          "referenceType": "purl",
633          "referenceLocator": "pkg:npm/d@1.0.0"
634        }
635      ]
636    },
637    {
638      "name": "bar",
639      "SPDXID": "SPDXRef-Package-bar-1.0.0",
640      "versionInfo": "1.0.0",
641      "packageFileName": "node_modules/bar",
642      "downloadLocation": "NOASSERTION",
643      "filesAnalyzed": false,
644      "homepage": "NOASSERTION",
645      "licenseDeclared": "NOASSERTION",
646      "externalRefs": [
647        {
648          "referenceCategory": "PACKAGE-MANAGER",
649          "referenceType": "purl",
650          "referenceLocator": "pkg:npm/bar@1.0.0"
651        }
652      ]
653    },
654    {
655      "name": "baz",
656      "SPDXID": "SPDXRef-Package-baz-1.0.0",
657      "versionInfo": "1.0.0",
658      "packageFileName": "node_modules/baz",
659      "downloadLocation": "NOASSERTION",
660      "filesAnalyzed": false,
661      "homepage": "NOASSERTION",
662      "licenseDeclared": "NOASSERTION",
663      "externalRefs": [
664        {
665          "referenceCategory": "PACKAGE-MANAGER",
666          "referenceType": "purl",
667          "referenceLocator": "pkg:npm/baz@1.0.0"
668        }
669      ]
670    },
671    {
672      "name": "c",
673      "SPDXID": "SPDXRef-Package-c-1.0.0",
674      "versionInfo": "1.0.0",
675      "packageFileName": "node_modules/c",
676      "downloadLocation": "NOASSERTION",
677      "filesAnalyzed": false,
678      "homepage": "NOASSERTION",
679      "licenseDeclared": "NOASSERTION",
680      "externalRefs": [
681        {
682          "referenceCategory": "PACKAGE-MANAGER",
683          "referenceType": "purl",
684          "referenceLocator": "pkg:npm/c@1.0.0"
685        }
686      ]
687    },
688    {
689      "name": "foo",
690      "SPDXID": "SPDXRef-Package-foo-1.1.1",
691      "versionInfo": "1.1.1",
692      "packageFileName": "node_modules/foo",
693      "downloadLocation": "NOASSERTION",
694      "filesAnalyzed": false,
695      "homepage": "NOASSERTION",
696      "licenseDeclared": "NOASSERTION",
697      "externalRefs": [
698        {
699          "referenceCategory": "PACKAGE-MANAGER",
700          "referenceType": "purl",
701          "referenceLocator": "pkg:npm/foo@1.1.1"
702        }
703      ]
704    }
705  ],
706  "relationships": [
707    {
708      "spdxElementId": "SPDXRef-DOCUMENT",
709      "relatedSpdxElement": "SPDXRef-Package-workspaces-tree-1.0.0",
710      "relationshipType": "DESCRIBES"
711    },
712    {
713      "spdxElementId": "SPDXRef-Package-a-1.0.0",
714      "relatedSpdxElement": "SPDXRef-Package-workspaces-tree-1.0.0",
715      "relationshipType": "DEPENDENCY_OF"
716    },
717    {
718      "spdxElementId": "SPDXRef-Package-d-1.0.0",
719      "relatedSpdxElement": "SPDXRef-Package-workspaces-tree-1.0.0",
720      "relationshipType": "DEPENDENCY_OF"
721    },
722    {
723      "spdxElementId": "SPDXRef-Package-c-1.0.0",
724      "relatedSpdxElement": "SPDXRef-Package-a-1.0.0",
725      "relationshipType": "DEPENDENCY_OF"
726    },
727    {
728      "spdxElementId": "SPDXRef-Package-d-1.0.0",
729      "relatedSpdxElement": "SPDXRef-Package-a-1.0.0",
730      "relationshipType": "DEPENDENCY_OF"
731    },
732    {
733      "spdxElementId": "SPDXRef-Package-baz-1.0.0",
734      "relatedSpdxElement": "SPDXRef-Package-a-1.0.0",
735      "relationshipType": "DEV_DEPENDENCY_OF"
736    },
737    {
738      "spdxElementId": "SPDXRef-Package-foo-1.1.1",
739      "relatedSpdxElement": "SPDXRef-Package-d-1.0.0",
740      "relationshipType": "DEPENDENCY_OF"
741    },
742    {
743      "spdxElementId": "SPDXRef-Package-bar-1.0.0",
744      "relatedSpdxElement": "SPDXRef-Package-foo-1.1.1",
745      "relationshipType": "DEPENDENCY_OF"
746    }
747  ]
748}
749`
750
751exports[`test/lib/commands/sbom.js TAP sbom loading a tree containing workspaces should filter workspaces with multiple --workspace flags > must match snapshot 1`] = `
752{
753  "spdxVersion": "SPDX-2.3",
754  "dataLicense": "CC0-1.0",
755  "SPDXID": "SPDXRef-DOCUMENT",
756  "name": "workspaces-tree@1.0.0",
757  "documentNamespace": "http://spdx.org/spdxdocs/test-npm-sbom-1.0.0-00000000-0000-0000-0000-000000000000",
758  "creationInfo": {
759    "created": "2020-01-01T00:00:00.000Z",
760    "creators": [
761      "Tool: npm/cli-10.0.0"
762    ]
763  },
764  "documentDescribes": [
765    "SPDXRef-Package-workspaces-tree-1.0.0"
766  ],
767  "packages": [
768    {
769      "name": "workspaces-tree",
770      "SPDXID": "SPDXRef-Package-workspaces-tree-1.0.0",
771      "versionInfo": "1.0.0",
772      "packageFileName": "",
773      "primaryPackagePurpose": "LIBRARY",
774      "downloadLocation": "NOASSERTION",
775      "filesAnalyzed": false,
776      "homepage": "NOASSERTION",
777      "licenseDeclared": "NOASSERTION",
778      "externalRefs": [
779        {
780          "referenceCategory": "PACKAGE-MANAGER",
781          "referenceType": "purl",
782          "referenceLocator": "pkg:npm/workspaces-tree@1.0.0"
783        }
784      ]
785    },
786    {
787      "name": "e",
788      "SPDXID": "SPDXRef-Package-e-1.0.0",
789      "versionInfo": "1.0.0",
790      "packageFileName": "node_modules/e",
791      "downloadLocation": "NOASSERTION",
792      "filesAnalyzed": false,
793      "homepage": "NOASSERTION",
794      "licenseDeclared": "NOASSERTION",
795      "externalRefs": [
796        {
797          "referenceCategory": "PACKAGE-MANAGER",
798          "referenceType": "purl",
799          "referenceLocator": "pkg:npm/e@1.0.0"
800        }
801      ]
802    },
803    {
804      "name": "f",
805      "SPDXID": "SPDXRef-Package-f-1.0.0",
806      "versionInfo": "1.0.0",
807      "packageFileName": "node_modules/f",
808      "downloadLocation": "NOASSERTION",
809      "filesAnalyzed": false,
810      "homepage": "NOASSERTION",
811      "licenseDeclared": "NOASSERTION",
812      "externalRefs": [
813        {
814          "referenceCategory": "PACKAGE-MANAGER",
815          "referenceType": "purl",
816          "referenceLocator": "pkg:npm/f@1.0.0"
817        }
818      ]
819    }
820  ],
821  "relationships": [
822    {
823      "spdxElementId": "SPDXRef-DOCUMENT",
824      "relatedSpdxElement": "SPDXRef-Package-workspaces-tree-1.0.0",
825      "relationshipType": "DESCRIBES"
826    },
827    {
828      "spdxElementId": "SPDXRef-Package-e-1.0.0",
829      "relatedSpdxElement": "SPDXRef-Package-workspaces-tree-1.0.0",
830      "relationshipType": "DEPENDENCY_OF"
831    },
832    {
833      "spdxElementId": "SPDXRef-Package-f-1.0.0",
834      "relatedSpdxElement": "SPDXRef-Package-workspaces-tree-1.0.0",
835      "relationshipType": "DEPENDENCY_OF"
836    }
837  ]
838}
839`
840
841exports[`test/lib/commands/sbom.js TAP sbom loading a tree containing workspaces should list workspaces properly with default configs > must match snapshot 1`] = `
842{
843  "spdxVersion": "SPDX-2.3",
844  "dataLicense": "CC0-1.0",
845  "SPDXID": "SPDXRef-DOCUMENT",
846  "name": "workspaces-tree@1.0.0",
847  "documentNamespace": "http://spdx.org/spdxdocs/test-npm-sbom-1.0.0-00000000-0000-0000-0000-000000000000",
848  "creationInfo": {
849    "created": "2020-01-01T00:00:00.000Z",
850    "creators": [
851      "Tool: npm/cli-10.0.0"
852    ]
853  },
854  "documentDescribes": [
855    "SPDXRef-Package-workspaces-tree-1.0.0"
856  ],
857  "packages": [
858    {
859      "name": "workspaces-tree",
860      "SPDXID": "SPDXRef-Package-workspaces-tree-1.0.0",
861      "versionInfo": "1.0.0",
862      "packageFileName": "",
863      "primaryPackagePurpose": "LIBRARY",
864      "downloadLocation": "NOASSERTION",
865      "filesAnalyzed": false,
866      "homepage": "NOASSERTION",
867      "licenseDeclared": "NOASSERTION",
868      "externalRefs": [
869        {
870          "referenceCategory": "PACKAGE-MANAGER",
871          "referenceType": "purl",
872          "referenceLocator": "pkg:npm/workspaces-tree@1.0.0"
873        }
874      ]
875    },
876    {
877      "name": "a",
878      "SPDXID": "SPDXRef-Package-a-1.0.0",
879      "versionInfo": "1.0.0",
880      "packageFileName": "node_modules/a",
881      "downloadLocation": "NOASSERTION",
882      "filesAnalyzed": false,
883      "homepage": "NOASSERTION",
884      "licenseDeclared": "NOASSERTION",
885      "externalRefs": [
886        {
887          "referenceCategory": "PACKAGE-MANAGER",
888          "referenceType": "purl",
889          "referenceLocator": "pkg:npm/a@1.0.0"
890        }
891      ]
892    },
893    {
894      "name": "b",
895      "SPDXID": "SPDXRef-Package-b-1.0.0",
896      "versionInfo": "1.0.0",
897      "packageFileName": "node_modules/b",
898      "downloadLocation": "NOASSERTION",
899      "filesAnalyzed": false,
900      "homepage": "NOASSERTION",
901      "licenseDeclared": "NOASSERTION",
902      "externalRefs": [
903        {
904          "referenceCategory": "PACKAGE-MANAGER",
905          "referenceType": "purl",
906          "referenceLocator": "pkg:npm/b@1.0.0"
907        }
908      ]
909    },
910    {
911      "name": "d",
912      "SPDXID": "SPDXRef-Package-d-1.0.0",
913      "versionInfo": "1.0.0",
914      "packageFileName": "node_modules/d",
915      "downloadLocation": "NOASSERTION",
916      "filesAnalyzed": false,
917      "homepage": "NOASSERTION",
918      "licenseDeclared": "NOASSERTION",
919      "externalRefs": [
920        {
921          "referenceCategory": "PACKAGE-MANAGER",
922          "referenceType": "purl",
923          "referenceLocator": "pkg:npm/d@1.0.0"
924        }
925      ]
926    },
927    {
928      "name": "e",
929      "SPDXID": "SPDXRef-Package-e-1.0.0",
930      "versionInfo": "1.0.0",
931      "packageFileName": "node_modules/e",
932      "downloadLocation": "NOASSERTION",
933      "filesAnalyzed": false,
934      "homepage": "NOASSERTION",
935      "licenseDeclared": "NOASSERTION",
936      "externalRefs": [
937        {
938          "referenceCategory": "PACKAGE-MANAGER",
939          "referenceType": "purl",
940          "referenceLocator": "pkg:npm/e@1.0.0"
941        }
942      ]
943    },
944    {
945      "name": "f",
946      "SPDXID": "SPDXRef-Package-f-1.0.0",
947      "versionInfo": "1.0.0",
948      "packageFileName": "node_modules/f",
949      "downloadLocation": "NOASSERTION",
950      "filesAnalyzed": false,
951      "homepage": "NOASSERTION",
952      "licenseDeclared": "NOASSERTION",
953      "externalRefs": [
954        {
955          "referenceCategory": "PACKAGE-MANAGER",
956          "referenceType": "purl",
957          "referenceLocator": "pkg:npm/f@1.0.0"
958        }
959      ]
960    },
961    {
962      "name": "bar",
963      "SPDXID": "SPDXRef-Package-bar-1.0.0",
964      "versionInfo": "1.0.0",
965      "packageFileName": "node_modules/bar",
966      "downloadLocation": "NOASSERTION",
967      "filesAnalyzed": false,
968      "homepage": "NOASSERTION",
969      "licenseDeclared": "NOASSERTION",
970      "externalRefs": [
971        {
972          "referenceCategory": "PACKAGE-MANAGER",
973          "referenceType": "purl",
974          "referenceLocator": "pkg:npm/bar@1.0.0"
975        }
976      ]
977    },
978    {
979      "name": "baz",
980      "SPDXID": "SPDXRef-Package-baz-1.0.0",
981      "versionInfo": "1.0.0",
982      "packageFileName": "node_modules/baz",
983      "downloadLocation": "NOASSERTION",
984      "filesAnalyzed": false,
985      "homepage": "NOASSERTION",
986      "licenseDeclared": "NOASSERTION",
987      "externalRefs": [
988        {
989          "referenceCategory": "PACKAGE-MANAGER",
990          "referenceType": "purl",
991          "referenceLocator": "pkg:npm/baz@1.0.0"
992        }
993      ]
994    },
995    {
996      "name": "c",
997      "SPDXID": "SPDXRef-Package-c-1.0.0",
998      "versionInfo": "1.0.0",
999      "packageFileName": "node_modules/c",
1000      "downloadLocation": "NOASSERTION",
1001      "filesAnalyzed": false,
1002      "homepage": "NOASSERTION",
1003      "licenseDeclared": "NOASSERTION",
1004      "externalRefs": [
1005        {
1006          "referenceCategory": "PACKAGE-MANAGER",
1007          "referenceType": "purl",
1008          "referenceLocator": "pkg:npm/c@1.0.0"
1009        }
1010      ]
1011    },
1012    {
1013      "name": "foo",
1014      "SPDXID": "SPDXRef-Package-foo-1.1.1",
1015      "versionInfo": "1.1.1",
1016      "packageFileName": "node_modules/foo",
1017      "downloadLocation": "NOASSERTION",
1018      "filesAnalyzed": false,
1019      "homepage": "NOASSERTION",
1020      "licenseDeclared": "NOASSERTION",
1021      "externalRefs": [
1022        {
1023          "referenceCategory": "PACKAGE-MANAGER",
1024          "referenceType": "purl",
1025          "referenceLocator": "pkg:npm/foo@1.1.1"
1026        }
1027      ]
1028    },
1029    {
1030      "name": "pacote",
1031      "SPDXID": "SPDXRef-Package-pacote-1.0.0",
1032      "versionInfo": "1.0.0",
1033      "packageFileName": "node_modules/pacote",
1034      "downloadLocation": "NOASSERTION",
1035      "filesAnalyzed": false,
1036      "homepage": "NOASSERTION",
1037      "licenseDeclared": "NOASSERTION",
1038      "externalRefs": [
1039        {
1040          "referenceCategory": "PACKAGE-MANAGER",
1041          "referenceType": "purl",
1042          "referenceLocator": "pkg:npm/pacote@1.0.0"
1043        }
1044      ]
1045    }
1046  ],
1047  "relationships": [
1048    {
1049      "spdxElementId": "SPDXRef-DOCUMENT",
1050      "relatedSpdxElement": "SPDXRef-Package-workspaces-tree-1.0.0",
1051      "relationshipType": "DESCRIBES"
1052    },
1053    {
1054      "spdxElementId": "SPDXRef-Package-a-1.0.0",
1055      "relatedSpdxElement": "SPDXRef-Package-workspaces-tree-1.0.0",
1056      "relationshipType": "DEPENDENCY_OF"
1057    },
1058    {
1059      "spdxElementId": "SPDXRef-Package-b-1.0.0",
1060      "relatedSpdxElement": "SPDXRef-Package-workspaces-tree-1.0.0",
1061      "relationshipType": "DEPENDENCY_OF"
1062    },
1063    {
1064      "spdxElementId": "SPDXRef-Package-d-1.0.0",
1065      "relatedSpdxElement": "SPDXRef-Package-workspaces-tree-1.0.0",
1066      "relationshipType": "DEPENDENCY_OF"
1067    },
1068    {
1069      "spdxElementId": "SPDXRef-Package-e-1.0.0",
1070      "relatedSpdxElement": "SPDXRef-Package-workspaces-tree-1.0.0",
1071      "relationshipType": "DEPENDENCY_OF"
1072    },
1073    {
1074      "spdxElementId": "SPDXRef-Package-f-1.0.0",
1075      "relatedSpdxElement": "SPDXRef-Package-workspaces-tree-1.0.0",
1076      "relationshipType": "DEPENDENCY_OF"
1077    },
1078    {
1079      "spdxElementId": "SPDXRef-Package-pacote-1.0.0",
1080      "relatedSpdxElement": "SPDXRef-Package-workspaces-tree-1.0.0",
1081      "relationshipType": "DEPENDENCY_OF"
1082    },
1083    {
1084      "spdxElementId": "SPDXRef-Package-c-1.0.0",
1085      "relatedSpdxElement": "SPDXRef-Package-a-1.0.0",
1086      "relationshipType": "DEPENDENCY_OF"
1087    },
1088    {
1089      "spdxElementId": "SPDXRef-Package-d-1.0.0",
1090      "relatedSpdxElement": "SPDXRef-Package-a-1.0.0",
1091      "relationshipType": "DEPENDENCY_OF"
1092    },
1093    {
1094      "spdxElementId": "SPDXRef-Package-baz-1.0.0",
1095      "relatedSpdxElement": "SPDXRef-Package-a-1.0.0",
1096      "relationshipType": "DEV_DEPENDENCY_OF"
1097    },
1098    {
1099      "spdxElementId": "SPDXRef-Package-foo-1.1.1",
1100      "relatedSpdxElement": "SPDXRef-Package-d-1.0.0",
1101      "relationshipType": "DEPENDENCY_OF"
1102    },
1103    {
1104      "spdxElementId": "SPDXRef-Package-bar-1.0.0",
1105      "relatedSpdxElement": "SPDXRef-Package-foo-1.1.1",
1106      "relationshipType": "DEPENDENCY_OF"
1107    }
1108  ]
1109}
1110`
1111
1112exports[`test/lib/commands/sbom.js TAP sbom loading a tree containing workspaces should not list workspaces with --no-workspaces > must match snapshot 1`] = `
1113{
1114  "spdxVersion": "SPDX-2.3",
1115  "dataLicense": "CC0-1.0",
1116  "SPDXID": "SPDXRef-DOCUMENT",
1117  "name": "workspaces-tree@1.0.0",
1118  "documentNamespace": "http://spdx.org/spdxdocs/test-npm-sbom-1.0.0-00000000-0000-0000-0000-000000000000",
1119  "creationInfo": {
1120    "created": "2020-01-01T00:00:00.000Z",
1121    "creators": [
1122      "Tool: npm/cli-10.0.0"
1123    ]
1124  },
1125  "documentDescribes": [
1126    "SPDXRef-Package-workspaces-tree-1.0.0"
1127  ],
1128  "packages": [
1129    {
1130      "name": "workspaces-tree",
1131      "SPDXID": "SPDXRef-Package-workspaces-tree-1.0.0",
1132      "versionInfo": "1.0.0",
1133      "packageFileName": "",
1134      "primaryPackagePurpose": "LIBRARY",
1135      "downloadLocation": "NOASSERTION",
1136      "filesAnalyzed": false,
1137      "homepage": "NOASSERTION",
1138      "licenseDeclared": "NOASSERTION",
1139      "externalRefs": [
1140        {
1141          "referenceCategory": "PACKAGE-MANAGER",
1142          "referenceType": "purl",
1143          "referenceLocator": "pkg:npm/workspaces-tree@1.0.0"
1144        }
1145      ]
1146    },
1147    {
1148      "name": "pacote",
1149      "SPDXID": "SPDXRef-Package-pacote-1.0.0",
1150      "versionInfo": "1.0.0",
1151      "packageFileName": "node_modules/pacote",
1152      "downloadLocation": "NOASSERTION",
1153      "filesAnalyzed": false,
1154      "homepage": "NOASSERTION",
1155      "licenseDeclared": "NOASSERTION",
1156      "externalRefs": [
1157        {
1158          "referenceCategory": "PACKAGE-MANAGER",
1159          "referenceType": "purl",
1160          "referenceLocator": "pkg:npm/pacote@1.0.0"
1161        }
1162      ]
1163    }
1164  ],
1165  "relationships": [
1166    {
1167      "spdxElementId": "SPDXRef-DOCUMENT",
1168      "relatedSpdxElement": "SPDXRef-Package-workspaces-tree-1.0.0",
1169      "relationshipType": "DESCRIBES"
1170    },
1171    {
1172      "spdxElementId": "SPDXRef-Package-pacote-1.0.0",
1173      "relatedSpdxElement": "SPDXRef-Package-workspaces-tree-1.0.0",
1174      "relationshipType": "DEPENDENCY_OF"
1175    }
1176  ]
1177}
1178`
1179
1180exports[`test/lib/commands/sbom.js TAP sbom lock file only - missing lock file > must match snapshot 1`] = `
1181
1182`
1183
1184exports[`test/lib/commands/sbom.js TAP sbom lock file only > must match snapshot 1`] = `
1185{
1186  "spdxVersion": "SPDX-2.3",
1187  "dataLicense": "CC0-1.0",
1188  "SPDXID": "SPDXRef-DOCUMENT",
1189  "name": "test-npm-ls@1.0.0",
1190  "documentNamespace": "http://spdx.org/spdxdocs/test-npm-sbom-1.0.0-00000000-0000-0000-0000-000000000000",
1191  "creationInfo": {
1192    "created": "2020-01-01T00:00:00.000Z",
1193    "creators": [
1194      "Tool: npm/cli-10.0.0"
1195    ]
1196  },
1197  "documentDescribes": [
1198    "SPDXRef-Package-test-npm-ls-1.0.0"
1199  ],
1200  "packages": [
1201    {
1202      "name": "test-npm-ls",
1203      "SPDXID": "SPDXRef-Package-test-npm-ls-1.0.0",
1204      "versionInfo": "1.0.0",
1205      "packageFileName": "",
1206      "primaryPackagePurpose": "LIBRARY",
1207      "downloadLocation": "NOASSERTION",
1208      "filesAnalyzed": false,
1209      "homepage": "NOASSERTION",
1210      "licenseDeclared": "NOASSERTION",
1211      "externalRefs": [
1212        {
1213          "referenceCategory": "PACKAGE-MANAGER",
1214          "referenceType": "purl",
1215          "referenceLocator": "pkg:npm/test-npm-ls@1.0.0"
1216        }
1217      ]
1218    },
1219    {
1220      "name": "chai",
1221      "SPDXID": "SPDXRef-Package-chai-1.0.0",
1222      "versionInfo": "1.0.0",
1223      "packageFileName": "node_modules/chai",
1224      "downloadLocation": "NOASSERTION",
1225      "filesAnalyzed": false,
1226      "homepage": "NOASSERTION",
1227      "licenseDeclared": "NOASSERTION",
1228      "externalRefs": [
1229        {
1230          "referenceCategory": "PACKAGE-MANAGER",
1231          "referenceType": "purl",
1232          "referenceLocator": "pkg:npm/chai@1.0.0"
1233        }
1234      ]
1235    },
1236    {
1237      "name": "dog",
1238      "SPDXID": "SPDXRef-Package-dog-1.0.0",
1239      "versionInfo": "1.0.0",
1240      "packageFileName": "node_modules/dog",
1241      "downloadLocation": "NOASSERTION",
1242      "filesAnalyzed": false,
1243      "homepage": "NOASSERTION",
1244      "licenseDeclared": "NOASSERTION",
1245      "externalRefs": [
1246        {
1247          "referenceCategory": "PACKAGE-MANAGER",
1248          "referenceType": "purl",
1249          "referenceLocator": "pkg:npm/dog@1.0.0"
1250        }
1251      ]
1252    },
1253    {
1254      "name": "foo",
1255      "SPDXID": "SPDXRef-Package-foo-1.0.0",
1256      "versionInfo": "1.0.0",
1257      "packageFileName": "node_modules/foo",
1258      "downloadLocation": "NOASSERTION",
1259      "filesAnalyzed": false,
1260      "homepage": "NOASSERTION",
1261      "licenseDeclared": "NOASSERTION",
1262      "externalRefs": [
1263        {
1264          "referenceCategory": "PACKAGE-MANAGER",
1265          "referenceType": "purl",
1266          "referenceLocator": "pkg:npm/foo@1.0.0"
1267        }
1268      ]
1269    }
1270  ],
1271  "relationships": [
1272    {
1273      "spdxElementId": "SPDXRef-DOCUMENT",
1274      "relatedSpdxElement": "SPDXRef-Package-test-npm-ls-1.0.0",
1275      "relationshipType": "DESCRIBES"
1276    },
1277    {
1278      "spdxElementId": "SPDXRef-Package-foo-1.0.0",
1279      "relatedSpdxElement": "SPDXRef-Package-test-npm-ls-1.0.0",
1280      "relationshipType": "DEPENDENCY_OF"
1281    },
1282    {
1283      "spdxElementId": "SPDXRef-Package-chai-1.0.0",
1284      "relatedSpdxElement": "SPDXRef-Package-test-npm-ls-1.0.0",
1285      "relationshipType": "DEPENDENCY_OF"
1286    },
1287    {
1288      "spdxElementId": "SPDXRef-Package-dog-1.0.0",
1289      "relatedSpdxElement": "SPDXRef-Package-foo-1.0.0",
1290      "relationshipType": "DEPENDENCY_OF"
1291    }
1292  ]
1293}
1294`
1295
1296exports[`test/lib/commands/sbom.js TAP sbom missing (optional) dep > must match snapshot 1`] = `
1297{
1298  "spdxVersion": "SPDX-2.3",
1299  "dataLicense": "CC0-1.0",
1300  "SPDXID": "SPDXRef-DOCUMENT",
1301  "name": "test-npm-ls@1.0.0",
1302  "documentNamespace": "http://spdx.org/spdxdocs/test-npm-sbom-1.0.0-00000000-0000-0000-0000-000000000000",
1303  "creationInfo": {
1304    "created": "2020-01-01T00:00:00.000Z",
1305    "creators": [
1306      "Tool: npm/cli-10.0.0"
1307    ]
1308  },
1309  "documentDescribes": [
1310    "SPDXRef-Package-test-npm-ls-1.0.0"
1311  ],
1312  "packages": [
1313    {
1314      "name": "test-npm-ls",
1315      "SPDXID": "SPDXRef-Package-test-npm-ls-1.0.0",
1316      "versionInfo": "1.0.0",
1317      "packageFileName": "",
1318      "primaryPackagePurpose": "LIBRARY",
1319      "downloadLocation": "NOASSERTION",
1320      "filesAnalyzed": false,
1321      "homepage": "NOASSERTION",
1322      "licenseDeclared": "NOASSERTION",
1323      "externalRefs": [
1324        {
1325          "referenceCategory": "PACKAGE-MANAGER",
1326          "referenceType": "purl",
1327          "referenceLocator": "pkg:npm/test-npm-ls@1.0.0"
1328        }
1329      ]
1330    },
1331    {
1332      "name": "chai",
1333      "SPDXID": "SPDXRef-Package-chai-1.0.0",
1334      "versionInfo": "1.0.0",
1335      "packageFileName": "node_modules/chai",
1336      "downloadLocation": "NOASSERTION",
1337      "filesAnalyzed": false,
1338      "homepage": "NOASSERTION",
1339      "licenseDeclared": "NOASSERTION",
1340      "externalRefs": [
1341        {
1342          "referenceCategory": "PACKAGE-MANAGER",
1343          "referenceType": "purl",
1344          "referenceLocator": "pkg:npm/chai@1.0.0"
1345        }
1346      ]
1347    },
1348    {
1349      "name": "foo",
1350      "SPDXID": "SPDXRef-Package-foo-1.0.0",
1351      "versionInfo": "1.0.0",
1352      "packageFileName": "node_modules/foo",
1353      "downloadLocation": "NOASSERTION",
1354      "filesAnalyzed": false,
1355      "homepage": "NOASSERTION",
1356      "licenseDeclared": "NOASSERTION",
1357      "externalRefs": [
1358        {
1359          "referenceCategory": "PACKAGE-MANAGER",
1360          "referenceType": "purl",
1361          "referenceLocator": "pkg:npm/foo@1.0.0"
1362        }
1363      ]
1364    },
1365    {
1366      "name": "dog",
1367      "SPDXID": "SPDXRef-Package-dog-1.0.0",
1368      "versionInfo": "1.0.0",
1369      "packageFileName": "node_modules/foo/node_modules/dog",
1370      "downloadLocation": "NOASSERTION",
1371      "filesAnalyzed": false,
1372      "homepage": "NOASSERTION",
1373      "licenseDeclared": "NOASSERTION",
1374      "externalRefs": [
1375        {
1376          "referenceCategory": "PACKAGE-MANAGER",
1377          "referenceType": "purl",
1378          "referenceLocator": "pkg:npm/dog@1.0.0"
1379        }
1380      ]
1381    }
1382  ],
1383  "relationships": [
1384    {
1385      "spdxElementId": "SPDXRef-DOCUMENT",
1386      "relatedSpdxElement": "SPDXRef-Package-test-npm-ls-1.0.0",
1387      "relationshipType": "DESCRIBES"
1388    },
1389    {
1390      "spdxElementId": "SPDXRef-Package-foo-1.0.0",
1391      "relatedSpdxElement": "SPDXRef-Package-test-npm-ls-1.0.0",
1392      "relationshipType": "DEPENDENCY_OF"
1393    },
1394    {
1395      "spdxElementId": "SPDXRef-Package-chai-1.0.0",
1396      "relatedSpdxElement": "SPDXRef-Package-test-npm-ls-1.0.0",
1397      "relationshipType": "DEPENDENCY_OF"
1398    },
1399    {
1400      "spdxElementId": "SPDXRef-Package-dog-1.0.0",
1401      "relatedSpdxElement": "SPDXRef-Package-foo-1.0.0",
1402      "relationshipType": "DEPENDENCY_OF"
1403    }
1404  ]
1405}
1406`
1407
1408exports[`test/lib/commands/sbom.js TAP sbom missing format > must match snapshot 1`] = `
1409
1410`
1411