github.com/anchore/syft@v1.4.2-0.20240516191711-1bec1fc5d397/internal/sbomsync/builder_test.go (about) 1 package sbomsync 2 3 import ( 4 "testing" 5 6 "github.com/magiconair/properties/assert" 7 8 "github.com/anchore/syft/syft/artifact" 9 "github.com/anchore/syft/syft/pkg" 10 "github.com/anchore/syft/syft/sbom" 11 ) 12 13 func TestNewBuilder(t *testing.T) { 14 tests := []struct { 15 name string 16 sbom sbom.SBOM 17 }{ 18 { 19 "TestNewBuilder with empty sbom", 20 sbom.SBOM{ 21 Artifacts: sbom.Artifacts{ 22 Packages: pkg.NewCollection(), 23 }, 24 }, 25 }, 26 } 27 for _, tt := range tests { 28 t.Run(tt.name, func(t *testing.T) { 29 builder := NewBuilder(&tt.sbom) 30 builder.AddPackages(pkg.Package{}) 31 accessor := builder.(Accessor) 32 accessor.ReadFromSBOM(func(s *sbom.SBOM) { 33 packageCount := s.Artifacts.Packages.PackageCount() 34 assert.Equal(t, packageCount, 1, "expected 1 package in sbom") 35 }) 36 }) 37 } 38 } 39 40 func Test_sbomBuilder_DeletePackages(t *testing.T) { 41 testPackage := pkg.Package{ 42 Name: "test", 43 Version: "1.0.0", 44 Type: pkg.DebPkg, 45 } 46 testPackage.SetID() 47 48 keepMe := pkg.Package{ 49 Name: "keepMe", 50 Version: "1.0.0", 51 Type: pkg.DebPkg, 52 } 53 54 prexistingRelationships := []artifact.Relationship{ 55 { 56 From: testPackage, 57 To: testPackage, 58 Type: artifact.DependencyOfRelationship, 59 }, 60 } 61 62 tests := []struct { 63 name string 64 sbom sbom.SBOM 65 }{ 66 { 67 "Test_sbomBuilder_DeletePackages deletes a given package", 68 sbom.SBOM{ 69 Artifacts: sbom.Artifacts{ 70 Packages: pkg.NewCollection(), 71 }, 72 }, 73 }, 74 } 75 for _, tt := range tests { 76 t.Run(tt.name, func(t *testing.T) { 77 builder := NewBuilder(&tt.sbom) 78 builder.AddPackages(testPackage, keepMe) 79 accessor := builder.(Accessor) 80 accessor.WriteToSBOM(func(s *sbom.SBOM) { 81 s.Relationships = prexistingRelationships 82 }) 83 84 builder.DeletePackages(testPackage.ID()) 85 newAccess := builder.(Accessor) 86 newAccess.ReadFromSBOM(func(s *sbom.SBOM) { 87 packageCount := s.Artifacts.Packages.PackageCount() 88 89 // deleted target package 90 assert.Equal(t, packageCount, 1, "expected 1 packages in sbom") 91 relationshipCount := len(s.Relationships) 92 93 // deleted relationships that reference the deleted package 94 assert.Equal(t, relationshipCount, 0, "expected 0 relationships in sbom") 95 }) 96 }) 97 } 98 }