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  }