@@ -5,8 +5,77 @@ import (
55
66 packagev1 "buf.build/gen/go/safedep/api/protocolbuffers/go/safedep/messages/package/v1"
77 "github.com/stretchr/testify/assert"
8+
9+ "github.com/safedep/vet/pkg/models"
810)
911
12+ func TestBuildInsightsV2Request (t * testing.T ) {
13+ t .Run ("scopes openvsx extensions to vscode:open-vsx.org OSV ecosystem" , func (t * testing.T ) {
14+ pkg := & models.Package {
15+ Manifest : models .NewPackageManifestFromLocal (
16+ "/home/user/.cursor/extensions/extensions.json" ,
17+ models .EcosystemOpenVSXExtensions ,
18+ ),
19+ PackageDetails : models .NewPackageDetail (
20+ models .EcosystemOpenVSXExtensions ,
21+ "llvm-vs-code-extensions.vscode-clangd" ,
22+ "0.4.0" ,
23+ ),
24+ }
25+
26+ req := buildInsightsV2Request (pkg )
27+
28+ assert .Equal (t , packagev1 .Ecosystem_ECOSYSTEM_OPENVSX , req .GetPackageVersion ().GetPackage ().GetEcosystem ())
29+ assert .Equal (t , "llvm-vs-code-extensions.vscode-clangd" , req .GetPackageVersion ().GetPackage ().GetName ())
30+ assert .Equal (t , "0.4.0" , req .GetPackageVersion ().GetVersion ())
31+ assert .Equal (t , "vscode:open-vsx.org" , req .GetOsvEcosystem ())
32+ })
33+
34+ t .Run ("scopes vscode extensions to vscode OSV ecosystem" , func (t * testing.T ) {
35+ pkg := & models.Package {
36+ Manifest : models .NewPackageManifestFromLocal (
37+ "/home/user/.vscode/extensions/extensions.json" ,
38+ models .EcosystemVSCodeExtensions ,
39+ ),
40+ PackageDetails : models .NewPackageDetail (
41+ models .EcosystemVSCodeExtensions ,
42+ "publisher.extension" ,
43+ "1.0.0" ,
44+ ),
45+ }
46+
47+ req := buildInsightsV2Request (pkg )
48+
49+ assert .Equal (t , packagev1 .Ecosystem_ECOSYSTEM_VSCODE , req .GetPackageVersion ().GetPackage ().GetEcosystem ())
50+ assert .Equal (t , "vscode" , req .GetOsvEcosystem ())
51+ })
52+
53+ t .Run ("passes raw distro ecosystem when protobuf enum is unspecified" , func (t * testing.T ) {
54+ ecosystem := "Alpine:v3.23"
55+ pkg := & models.Package {
56+ Manifest : models .NewPackageManifestFromLocal ("lib/apk/db/installed" , ecosystem ),
57+ PackageDetails : models .NewPackageDetail (ecosystem , "busybox" , "1.36.1" ),
58+ }
59+
60+ req := buildInsightsV2Request (pkg )
61+
62+ assert .Equal (t , packagev1 .Ecosystem_ECOSYSTEM_UNSPECIFIED , req .GetPackageVersion ().GetPackage ().GetEcosystem ())
63+ assert .Equal (t , ecosystem , req .GetOsvEcosystem ())
64+ })
65+
66+ t .Run ("does not set OSV ecosystem for npm packages" , func (t * testing.T ) {
67+ pkg := & models.Package {
68+ Manifest : models .NewPackageManifestFromLocal ("package-lock.json" , models .EcosystemNpm ),
69+ PackageDetails : models .NewPackageDetail (models .EcosystemNpm , "lodash" , "4.17.21" ),
70+ }
71+
72+ req := buildInsightsV2Request (pkg )
73+
74+ assert .Equal (t , packagev1 .Ecosystem_ECOSYSTEM_NPM , req .GetPackageVersion ().GetPackage ().GetEcosystem ())
75+ assert .Empty (t , req .GetOsvEcosystem ())
76+ })
77+ }
78+
1079func TestCurrentVersionFromAvailableVersions (t * testing.T ) {
1180 t .Run ("prefers registry default version" , func (t * testing.T ) {
1281 versions := []* packagev1.PackageAvailableVersion {
0 commit comments