go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/providers/os/resources/packages/opkg_packages_test.go (about) 1 // Copyright (c) Mondoo, Inc. 2 // SPDX-License-Identifier: BUSL-1.1 3 4 package packages_test 5 6 import ( 7 "path/filepath" 8 "strings" 9 "testing" 10 11 "github.com/stretchr/testify/assert" 12 "github.com/stretchr/testify/require" 13 "go.mondoo.com/cnquery/providers-sdk/v1/inventory" 14 "go.mondoo.com/cnquery/providers/os/connection/mock" 15 "go.mondoo.com/cnquery/providers/os/resources/packages" 16 ) 17 18 func TestOpkgListCommandParser(t *testing.T) { 19 pkgList := `base-files - 169-50072 20 busybox - 1.24.2-1 21 dnsmasq - 2.78-1 22 dropbear - 2017.75-1 23 firewall - 2016-11-29-1` 24 25 m := packages.ParseOpkgListPackagesCommand(strings.NewReader(pkgList)) 26 27 assert.Equal(t, 5, len(m), "detected the right amount of packages") 28 var p packages.Package 29 p = packages.Package{ 30 Name: "busybox", 31 Version: "1.24.2-1", 32 Format: packages.OpkgPkgFormat, 33 } 34 assert.Contains(t, m, p, "pkg detected") 35 36 p = packages.Package{ 37 Name: "dnsmasq", 38 Version: "2.78-1", 39 Format: packages.OpkgPkgFormat, 40 } 41 assert.Contains(t, m, p, "pkg detected") 42 43 p = packages.Package{ 44 Name: "firewall", 45 Version: "2016-11-29-1", 46 Format: packages.OpkgPkgFormat, 47 } 48 assert.Contains(t, m, p, "pkg detected") 49 } 50 51 func TestOpkgStatusParser(t *testing.T) { 52 mock, err := mock.New("./testdata/packages_opkg_statusfile.toml", nil) 53 require.NoError(t, err) 54 f, err := mock.FileSystem().Open("/usr/lib/opkg/status") 55 require.NoError(t, err) 56 defer f.Close() 57 58 m, err := packages.ParseOpkgPackages(f) 59 require.NoError(t, err) 60 assert.Equal(t, 8, len(m), "detected the right amount of packages") 61 62 p := packages.Package{ 63 Name: "libuci20130104", 64 Version: "2023-03-05-04d0c46c-1", 65 Arch: "x86_64", 66 Status: "install user installed", 67 Origin: "", 68 Description: "", 69 Format: "opkg", 70 } 71 assert.Contains(t, m, p, "libuci20130104 detected") 72 } 73 74 func TestOpkgManager(t *testing.T) { 75 filepath, _ := filepath.Abs("./testdata/packages_opkg.toml") 76 conn, err := mock.New(filepath, &inventory.Asset{ 77 Platform: &inventory.Platform{ 78 Name: "openwrt", 79 }, 80 }) 81 require.NoError(t, err) 82 83 pkgManager, err := packages.ResolveSystemPkgManager(conn) 84 require.NoError(t, err) 85 86 pkgList, err := pkgManager.List() 87 require.NoError(t, err) 88 89 assert.Equal(t, 66, len(pkgList)) 90 p := packages.Package{ 91 Name: "libjson-script", 92 Version: "2016-11-29-77a629375d7387a33a59509d9d751a8798134cab", 93 Format: "opkg", 94 } 95 assert.Contains(t, pkgList, p, "pkg detected") 96 }