ce7cb702218693d08ea6d83464d2457c9250027c
This commit is contained in:
commit
34c5f8963c
1 changed files with 145336 additions and 0 deletions
55
services/mirrored-image/controller/inventory_test.go
Normal file
55
services/mirrored-image/controller/inventory_test.go
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
package main
|
||||
|
||||
import "testing"
|
||||
|
||||
func inventoryFixture() *securityData {
|
||||
return &securityData{
|
||||
Layer: &securityLayer{Name: testDigest, Features: &[]securityFeature{{Name: "busybox", Version: "1.37.0-r30", AddedBy: testDigest}}},
|
||||
Inventory: &scanInventory{Hash: testDigest,
|
||||
Packages: map[string]*scanPackage{"p": {ID: "p", Name: "busybox", Version: "1.37.0-r30", Kind: "binary", Source: &scanPackage{Name: "busybox", Kind: "source"}}},
|
||||
Distributions: map[string]*scanDistribution{"d": {ID: "d", DID: "alpine", Version: "3.23", Name: "Alpine Linux", PrettyName: "Alpine Linux v3.23"}},
|
||||
Environments: map[string][]*scanEnvironment{"p": {{PackageDB: "lib/apk/db/installed", IntroducedIn: testDigest, DistributionID: "d"}}},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func TestInventory(t *testing.T) {
|
||||
for _, test := range []struct {
|
||||
name string
|
||||
mutate func(*securityData)
|
||||
}{
|
||||
{"qualified", func(*securityData) {}},
|
||||
{"missing", func(d *securityData) { d.Inventory = nil }},
|
||||
{"identity", func(d *securityData) { d.Inventory.Hash = childDigest }},
|
||||
{"layer identity", func(d *securityData) { d.Layer.Name = childDigest }},
|
||||
{"empty", func(d *securityData) { d.Inventory.Packages = nil }},
|
||||
{"no distribution", func(d *securityData) { d.Inventory.Distributions = nil }},
|
||||
{"Amazon Linux", func(d *securityData) { d.Inventory.Distributions["d"].DID = "amzn" }},
|
||||
{"RHEL", func(d *securityData) { d.Inventory.Distributions["d"].DID = "rhel" }},
|
||||
{"unknown", func(d *securityData) { d.Inventory.Distributions["d"].DID = "unknown" }},
|
||||
{"unqualified release", func(d *securityData) { d.Inventory.Distributions["d"].Version = "3.2" }},
|
||||
{"missing package", func(d *securityData) { d.Inventory.Packages["p"] = nil }},
|
||||
{"invalid version", func(d *securityData) { d.Inventory.Packages["p"].Version = "invalid" }},
|
||||
{"missing source", func(d *securityData) { d.Inventory.Packages["p"].Source = nil }},
|
||||
{"empty source", func(d *securityData) { d.Inventory.Packages["p"].Source.Name = "" }},
|
||||
{"foreign package", func(d *securityData) { d.Inventory.Packages["p"].Kind = "python" }},
|
||||
{"missing environment", func(d *securityData) { d.Inventory.Environments["p"] = nil }},
|
||||
{"foreign layer", func(d *securityData) { d.Inventory.Environments["p"][0].IntroducedIn = childDigest }},
|
||||
{"foreign database", func(d *securityData) { d.Inventory.Environments["p"][0].PackageDB = "var/lib/rpm" }},
|
||||
{"second environment", func(d *securityData) {
|
||||
d.Inventory.Environments["p"] = append(d.Inventory.Environments["p"], &scanEnvironment{PackageDB: "var/lib/rpm"})
|
||||
}},
|
||||
{"missing features", func(d *securityData) { *d.Layer.Features = nil }},
|
||||
{"wrong feature", func(d *securityData) { (*d.Layer.Features)[0].Version = "1-r1" }},
|
||||
{"duplicate feature", func(d *securityData) { *d.Layer.Features = append(*d.Layer.Features, (*d.Layer.Features)[0]) }},
|
||||
} {
|
||||
t.Run(test.name, func(t *testing.T) {
|
||||
data := inventoryFixture()
|
||||
test.mutate(data)
|
||||
err := checkInventory(data, testDigest, map[string]bool{testDigest: true})
|
||||
if (err == nil) != (test.name == "qualified") {
|
||||
t.Fatalf("unexpected inventory verdict: %v", err)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue