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  }