go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/providers/os/resources/packages/apk_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  	"testing"
     8  
     9  	"github.com/stretchr/testify/assert"
    10  	"go.mondoo.com/cnquery/providers/os/connection/mock"
    11  	"go.mondoo.com/cnquery/providers/os/resources/packages"
    12  )
    13  
    14  func TestAlpineApkdbParser(t *testing.T) {
    15  	mock, err := mock.New("./testdata/packages_apk.toml", nil)
    16  	if err != nil {
    17  		t.Fatal(err)
    18  	}
    19  	f, err := mock.FileSystem().Open("/lib/apk/db/installed")
    20  	if err != nil {
    21  		t.Fatal(err)
    22  	}
    23  	defer f.Close()
    24  
    25  	m := packages.ParseApkDbPackages(f)
    26  	assert.Equal(t, 7, len(m), "detected the right amount of packages")
    27  
    28  	var p packages.Package
    29  	p = packages.Package{
    30  		Name:        "musl",
    31  		Version:     "1510953106:1.1.18-r2",
    32  		Arch:        "x86_64",
    33  		Description: "the musl c library (libc) implementation",
    34  		Origin:      "musl",
    35  		Format:      packages.AlpinePkgFormat,
    36  	}
    37  	assert.Contains(t, m, p, "musl detected")
    38  
    39  	p = packages.Package{
    40  		Name:        "libressl2.6-libcrypto",
    41  		Version:     "1510257703:2.6.3-r0",
    42  		Arch:        "x86_64",
    43  		Description: "libressl libcrypto library",
    44  		Origin:      "libressl",
    45  		Format:      packages.AlpinePkgFormat,
    46  	}
    47  	assert.Contains(t, m, p, "libcrypto detected")
    48  
    49  	p = packages.Package{
    50  		Name:        "libressl2.6-libssl",
    51  		Version:     "1510257703:2.6.3-r0",
    52  		Arch:        "x86_64",
    53  		Description: "libressl libssl library",
    54  		Origin:      "libressl",
    55  		Format:      packages.AlpinePkgFormat,
    56  	}
    57  	assert.Contains(t, m, p, "libssl detected")
    58  
    59  	p = packages.Package{
    60  		Name:        "apk-tools",
    61  		Version:     "1515485577:2.8.2-r0",
    62  		Arch:        "x86_64",
    63  		Description: "Alpine Package Keeper - package manager for alpine",
    64  		Origin:      "apk-tools",
    65  		Format:      packages.AlpinePkgFormat,
    66  	}
    67  	assert.Contains(t, m, p, "apk-tools detected")
    68  
    69  	p = packages.Package{
    70  		Name:        "busybox",
    71  		Version:     "1513075346:1.27.2-r7",
    72  		Arch:        "x86_64",
    73  		Description: "Size optimized toolbox of many common UNIX utilities",
    74  		Origin:      "busybox",
    75  		Format:      packages.AlpinePkgFormat,
    76  	}
    77  	assert.Contains(t, m, p, "apk-tools detected")
    78  
    79  	p = packages.Package{
    80  		Name:        "alpine-baselayout",
    81  		Version:     "1510075862:3.0.5-r2",
    82  		Arch:        "x86_64",
    83  		Description: "Alpine base dir structure and init scripts",
    84  		Origin:      "alpine-baselayout",
    85  		Format:      packages.AlpinePkgFormat,
    86  	}
    87  	assert.Contains(t, m, p, "apk-tools detected")
    88  }
    89  
    90  func TestApkUpdateParser(t *testing.T) {
    91  	mock, err := mock.New("./testdata/updates_apk.toml", nil)
    92  	if err != nil {
    93  		t.Fatal(err)
    94  	}
    95  	c, err := mock.RunCommand("apk version -v -l '<'")
    96  	if err != nil {
    97  		t.Fatal(err)
    98  	}
    99  	assert.Nil(t, err)
   100  
   101  	m, err := packages.ParseApkUpdates(c.Stdout)
   102  	assert.Nil(t, err)
   103  	assert.Equal(t, 2, len(m), "detected the right amount of package updates")
   104  
   105  	update := m["busybox"]
   106  	assert.Equal(t, "busybox", update.Name, "pkg name detected")
   107  	assert.Equal(t, "1.28.4-r0", update.Version, "pkg version detected")
   108  	assert.Equal(t, "1.28.4-r1", update.Available, "pkg available version detected")
   109  
   110  	update = m["ssl_client"]
   111  	assert.Equal(t, "ssl_client", update.Name, "pkg name detected")
   112  	assert.Equal(t, "1.28.4-r0", update.Version, "pkg version detected")
   113  	assert.Equal(t, "1.28.4-r1", update.Available, "pkg available version detected")
   114  }