mirror of
https://github.com/anchore/syft.git
synced 2025-11-17 16:33:21 +01:00
Add more tests to CPE generation
Signed-off-by: Dan Luhring <dan.luhring@anchore.com>
This commit is contained in:
parent
33e6be0b74
commit
060e60b6dd
@ -138,6 +138,7 @@ func candidateVendors(p pkg.Package) []string {
|
||||
|
||||
func candidateProducts(p pkg.Package) []string {
|
||||
products := []string{p.Name}
|
||||
|
||||
if p.Language == pkg.Java {
|
||||
products = append(products, candidateProductsForJava(p)...)
|
||||
}
|
||||
|
||||
@ -195,7 +195,6 @@ func TestGeneratePackageCPEs(t *testing.T) {
|
||||
for _, d := range missing {
|
||||
t.Errorf("missing CPE: %+v", d)
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
}
|
||||
@ -212,6 +211,32 @@ func TestCandidateProducts(t *testing.T) {
|
||||
},
|
||||
expected: []string{"spring_framework", "springsource_spring_framework" /* <-- known good names | default guess --> */, "springframework"},
|
||||
},
|
||||
{
|
||||
p: pkg.Package{
|
||||
Name: "some-java-package-with-group-id",
|
||||
Type: pkg.JavaPkg,
|
||||
Language: pkg.Java,
|
||||
Metadata: pkg.JavaMetadata{
|
||||
PomProperties: &pkg.PomProperties{
|
||||
GroupID: "com.apple.itunes",
|
||||
},
|
||||
},
|
||||
},
|
||||
expected: []string{"itunes", "some-java-package-with-group-id"},
|
||||
},
|
||||
{
|
||||
p: pkg.Package{
|
||||
Name: "some-jenkins-plugin",
|
||||
Type: pkg.JenkinsPluginPkg,
|
||||
Language: pkg.Java,
|
||||
Metadata: pkg.JavaMetadata{
|
||||
PomProperties: &pkg.PomProperties{
|
||||
GroupID: "com.cloudbees.jenkins.plugins",
|
||||
},
|
||||
},
|
||||
},
|
||||
expected: []string{"some-jenkins-plugin"},
|
||||
},
|
||||
{
|
||||
p: pkg.Package{
|
||||
Name: "handlebars.js",
|
||||
@ -237,7 +262,67 @@ func TestCandidateProducts(t *testing.T) {
|
||||
|
||||
for _, test := range tests {
|
||||
t.Run(fmt.Sprintf("%+v %+v", test.p, test.expected), func(t *testing.T) {
|
||||
assert.Equal(t, test.expected, candidateProducts(test.p))
|
||||
assert.ElementsMatch(t, test.expected, candidateProducts(test.p))
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestCandidateTargetSoftwareAttrs(t *testing.T) {
|
||||
cases := []struct {
|
||||
name string
|
||||
p pkg.Package
|
||||
expected []string
|
||||
}{
|
||||
{
|
||||
name: "Java",
|
||||
p: pkg.Package{
|
||||
Language: pkg.Java,
|
||||
Type: pkg.JavaPkg,
|
||||
},
|
||||
expected: []string{"java", "maven"},
|
||||
},
|
||||
{
|
||||
name: "Jenkins plugin",
|
||||
p: pkg.Package{
|
||||
Language: pkg.Java,
|
||||
Type: pkg.JenkinsPluginPkg,
|
||||
},
|
||||
expected: []string{"jenkins", "cloudbees_jenkins"},
|
||||
},
|
||||
{
|
||||
name: "JavaScript",
|
||||
p: pkg.Package{
|
||||
Language: pkg.JavaScript,
|
||||
},
|
||||
expected: []string{"node.js", "nodejs"},
|
||||
},
|
||||
{
|
||||
name: "Ruby",
|
||||
p: pkg.Package{
|
||||
Language: pkg.Ruby,
|
||||
},
|
||||
expected: []string{"ruby", "rails"},
|
||||
},
|
||||
{
|
||||
name: "Python",
|
||||
p: pkg.Package{
|
||||
Language: pkg.Python,
|
||||
},
|
||||
expected: []string{"python"},
|
||||
},
|
||||
{
|
||||
name: "Other language",
|
||||
p: pkg.Package{
|
||||
Language: pkg.Rust,
|
||||
},
|
||||
expected: nil,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range cases {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
actual := candidateTargetSoftwareAttrs(tc.p)
|
||||
assert.Equal(t, tc.expected, actual)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user