github.com/nextlinux/gosbom@v0.81.1-0.20230627115839-1ff50c281391/gosbom/pkg/cataloger/deb/parse_dpkg_info_files_test.go (about) 1 package deb 2 3 import ( 4 "os" 5 "testing" 6 7 "github.com/google/go-cmp/cmp" 8 "github.com/nextlinux/gosbom/gosbom/file" 9 "github.com/nextlinux/gosbom/gosbom/pkg" 10 "github.com/stretchr/testify/require" 11 ) 12 13 func TestMD5SumInfoParsing(t *testing.T) { 14 tests := []struct { 15 fixture string 16 expected []pkg.DpkgFileRecord 17 }{ 18 { 19 fixture: "test-fixtures/info/zlib1g.md5sums", 20 expected: []pkg.DpkgFileRecord{ 21 {Path: "/lib/x86_64-linux-gnu/libz.so.1.2.11", Digest: &file.Digest{ 22 Algorithm: "md5", 23 Value: "55f905631797551d4d936a34c7e73474", 24 }}, 25 {Path: "/usr/share/doc/zlib1g/changelog.Debian.gz", Digest: &file.Digest{ 26 Algorithm: "md5", 27 Value: "cede84bda30d2380217f97753c8ccf3a", 28 }}, 29 {Path: "/usr/share/doc/zlib1g/changelog.gz", Digest: &file.Digest{ 30 Algorithm: "md5", 31 Value: "f3c9dafa6da7992c47328b4464f6d122", 32 }}, 33 {Path: "/usr/share/doc/zlib1g/copyright", Digest: &file.Digest{ 34 Algorithm: "md5", 35 Value: "a4fae96070439a5209a62ae5b8017ab2", 36 }}, 37 }, 38 }, 39 } 40 41 for _, test := range tests { 42 t.Run(test.fixture, func(t *testing.T) { 43 f, err := os.Open(test.fixture) 44 require.NoError(t, err) 45 t.Cleanup(func() { require.NoError(t, f.Close()) }) 46 47 actual := parseDpkgMD5Info(f) 48 49 if diff := cmp.Diff(test.expected, actual); diff != "" { 50 t.Errorf("unexpected md5 files (-want +got):\n%s", diff) 51 } 52 53 }) 54 } 55 } 56 57 func TestConffileInfoParsing(t *testing.T) { 58 tests := []struct { 59 fixture string 60 expected []pkg.DpkgFileRecord 61 }{ 62 { 63 fixture: "test-fixtures/info/util-linux.conffiles", 64 expected: []pkg.DpkgFileRecord{ 65 {Path: "/etc/default/hwclock", IsConfigFile: true}, 66 {Path: "/etc/init.d/hwclock.sh", IsConfigFile: true}, 67 {Path: "/etc/pam.d/runuser", IsConfigFile: true}, 68 {Path: "/etc/pam.d/runuser-l", IsConfigFile: true}, 69 {Path: "/etc/pam.d/su", IsConfigFile: true}, 70 {Path: "/etc/pam.d/su-l", IsConfigFile: true}, 71 }, 72 }, 73 } 74 75 for _, test := range tests { 76 t.Run(test.fixture, func(t *testing.T) { 77 f, err := os.Open(test.fixture) 78 require.NoError(t, err) 79 t.Cleanup(func() { require.NoError(t, f.Close()) }) 80 81 actual := parseDpkgConffileInfo(f) 82 83 if diff := cmp.Diff(test.expected, actual); diff != "" { 84 t.Errorf("unexpected md5 files (-want +got):\n%s", diff) 85 } 86 87 }) 88 } 89 }