mirror of
https://github.com/anchore/syft.git
synced 2025-11-19 09:23:15 +01:00
* migrate pkg.ID and pkg.Relationship to artifact package Signed-off-by: Alex Goodman <alex.goodman@anchore.com> * return relationships from tasks Signed-off-by: Alex Goodman <alex.goodman@anchore.com> * fix more tests Signed-off-by: Alex Goodman <alex.goodman@anchore.com> * add artifact.Identifiable by Identity() method Signed-off-by: Alex Goodman <alex.goodman@anchore.com> * fix linting Signed-off-by: Alex Goodman <alex.goodman@anchore.com> * remove catalog ID assignment Signed-off-by: Alex Goodman <alex.goodman@anchore.com> * adjust spdx helpers to use copy of packages Signed-off-by: Alex Goodman <alex.goodman@anchore.com> * stabilize package ID relative to encode-decode format cycles Signed-off-by: Alex Goodman <alex.goodman@anchore.com> * rename Identity() to ID() Signed-off-by: Alex Goodman <alex.goodman@anchore.com> * use zero value for nils in ID generation Signed-off-by: Alex Goodman <alex.goodman@anchore.com> * enable source.Location to be identifiable Signed-off-by: Alex Goodman <alex.goodman@anchore.com> * hoist up package relationship discovery to analysis stage Signed-off-by: Alex Goodman <alex.goodman@anchore.com> * update ownership-by-file-overlap relationship description Signed-off-by: Alex Goodman <alex.goodman@anchore.com> * add test reminders to put new relationships under test Signed-off-by: Alex Goodman <alex.goodman@anchore.com> * adjust PHP composer.lock parser function to return relationships Signed-off-by: Alex Goodman <alex.goodman@anchore.com>
83 lines
1.7 KiB
Go
83 lines
1.7 KiB
Go
package pkg
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func must(c CPE, e error) CPE {
|
|
if e != nil {
|
|
panic(e)
|
|
}
|
|
return c
|
|
}
|
|
|
|
func TestNewCPE(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
input string
|
|
expected CPE
|
|
}{
|
|
{
|
|
name: "gocase",
|
|
input: `cpe:/a:10web:form_maker:1.0.0::~~~wordpress~~`,
|
|
expected: must(NewCPE(`cpe:2.3:a:10web:form_maker:1.0.0:*:*:*:*:wordpress:*:*`)),
|
|
},
|
|
{
|
|
name: "dashes",
|
|
input: `cpe:/a:7-zip:7-zip:4.56:beta:~~~windows~~`,
|
|
expected: must(NewCPE(`cpe:2.3:a:7-zip:7-zip:4.56:beta:*:*:*:windows:*:*`)),
|
|
},
|
|
{
|
|
name: "URL escape characters",
|
|
input: `cpe:/a:%240.99_kindle_books_project:%240.99_kindle_books:6::~~~android~~`,
|
|
expected: must(NewCPE(`cpe:2.3:a:$0.99_kindle_books_project:$0.99_kindle_books:6:*:*:*:*:android:*:*`)),
|
|
},
|
|
}
|
|
|
|
for _, test := range tests {
|
|
t.Run(test.name, func(t *testing.T) {
|
|
actual, err := NewCPE(test.input)
|
|
if err != nil {
|
|
t.Fatalf("got an error while creating CPE: %+v", err)
|
|
}
|
|
|
|
if actual.BindToFmtString() != test.expected.BindToFmtString() {
|
|
t.Errorf("mismatched entries:\n\texpected:%+v\n\t actual:%+v\n", test.expected.BindToFmtString(), actual.BindToFmtString())
|
|
}
|
|
|
|
})
|
|
}
|
|
}
|
|
|
|
func Test_normalizeCpeField(t *testing.T) {
|
|
|
|
tests := []struct {
|
|
field string
|
|
expected string
|
|
}{
|
|
{
|
|
field: "something",
|
|
expected: "something",
|
|
},
|
|
{
|
|
field: "some\\thing",
|
|
expected: `some\thing`,
|
|
},
|
|
{
|
|
field: "*",
|
|
expected: "",
|
|
},
|
|
{
|
|
field: "",
|
|
expected: "",
|
|
},
|
|
}
|
|
for _, test := range tests {
|
|
t.Run(test.field, func(t *testing.T) {
|
|
assert.Equal(t, test.expected, normalizeCpeField(test.field))
|
|
})
|
|
}
|
|
}
|