syft/syft/pkg/cataloger/python/package_test.go
Christopher Angelo Phillips 8198a706d6
chore: bump packageurl-go with new parsing rules (#3596)
* chore: bump packageurl-go with new parsing rules
* test: update expectedPURL in unit tests to match new % encoding
---------

Signed-off-by: Christopher Phillips <32073428+spiffcs@users.noreply.github.com>
2025-01-17 16:20:14 -05:00

65 lines
1.4 KiB
Go

package python
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/anchore/syft/syft/pkg"
)
func Test_packageURL(t *testing.T) {
tests := []struct {
testName string
name string
version string
metadata *pkg.PythonPackage
want string
}{
{
testName: "without metadata",
name: "name",
version: "v0.1.0",
want: "pkg:pypi/name@v0.1.0",
},
{
testName: "with vcs info",
name: "name",
version: "v0.1.0",
metadata: &pkg.PythonPackage{
Name: "bogus", // note: ignored
Version: "v0.2.0", // note: ignored
DirectURLOrigin: &pkg.PythonDirectURLOriginInfo{
VCS: "git",
URL: "https://github.com/test/test.git",
CommitID: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
},
},
want: "pkg:pypi/name@v0.1.0?vcs_url=git%2Bhttps%3A%2F%2Fgithub.com%2Ftest%2Ftest.git%40aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
},
}
for _, tt := range tests {
t.Run(tt.testName, func(t *testing.T) {
assert.Equal(t, tt.want, packageURL(tt.name, tt.version, tt.metadata))
})
}
}
func Test_normalization(t *testing.T) {
normalForm := "friendly-bard"
tests := []string{
normalForm,
"Friendly-Bard",
"FRIENDLY-BARD",
"friendly.bard",
"friendly_bard",
"friendly--bard",
"FrIeNdLy-._.-bArD",
}
for _, tt := range tests {
t.Run(tt, func(t *testing.T) {
assert.Equal(t, normalForm, normalize(tt))
})
}
}