go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/providers/os/resources/packages/solaris_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 TestFmriParser(t *testing.T) {
    19  	// pkg://solaris/entire@0.5.11-0.175.2.0.0.34.0:20140303T182643Z
    20  	// Name: entire
    21  	// Publisher: solaris
    22  	// Version: 0.5.11
    23  	// Branch: 0.175.2.0.0.34.0
    24  
    25  	sp, err := packages.ParseSolarisFmri("pkg://solaris/entire@0.5.11,5.11-0.175.1.0.0.24.2:20120919T190135Z")
    26  	require.NoError(t, err)
    27  	assert.Equal(t, "entire", sp.Name)
    28  	assert.Equal(t, "solaris", sp.Publisher)
    29  	assert.Equal(t, "0.5.11", sp.Version)
    30  	assert.Equal(t, "5.11-0.175.1.0.0.24.2", sp.Branch)
    31  
    32  	// pkg://solaris/x11/library/libxscrnsaver@1.2.2,5.11-0.175.1.0.0.24.1317:20120904T180021Z
    33  	// 	 vagrant@solaris-vagrant:~$ pkg info x11/library/libxscrnsaver
    34  	//           Name: x11/library/libxscrnsaver
    35  	//        Summary: libXss - X11 Screen Saver extension client library
    36  	//    Description: Xlib-based client API for the MIT-SCREEN-SAVER extension to the
    37  	//                 X11 protocol
    38  	//       Category: System/X11
    39  	//          State: Installed
    40  	//      Publisher: solaris
    41  	//        Version: 1.2.2
    42  	//  Build Release: 5.11
    43  	//         Branch: 0.175.1.0.0.24.1317
    44  	// Packaging Date: September  4, 2012 06:00:21 PM
    45  	//           Size: 101.36 kB
    46  	//           FMRI: pkg://solaris/x11/library/libxscrnsaver@1.2.2,5.11-0.175.1.0.0.24.1317:20120904T180021Z
    47  
    48  	sp, err = packages.ParseSolarisFmri("pkg://solaris/x11/library/libxscrnsaver@1.2.2,5.11-0.175.1.0.0.24.1317:20120904T180021Z")
    49  	require.NoError(t, err)
    50  	assert.Equal(t, "x11/library/libxscrnsaver", sp.Name)
    51  	assert.Equal(t, "solaris", sp.Publisher)
    52  	assert.Equal(t, "1.2.2", sp.Version)
    53  	assert.Equal(t, "5.11-0.175.1.0.0.24.1317", sp.Branch)
    54  }
    55  
    56  func TestSolarisPackageParser(t *testing.T) {
    57  	pkgList := `FMRI                                                                         IFO
    58  pkg://solaris/archiver/gnu-tar@1.26,5.11-0.175.1.0.0.24.0:20120904T170545Z   i--
    59  pkg://solaris/compress/bzip2@1.0.6,5.11-0.175.1.0.0.24.0:20120904T170602Z    i--
    60  pkg://solaris/compress/gzip@1.4,5.11-0.175.1.0.0.24.0:20120904T170603Z       i--
    61  pkg://solaris/compress/p7zip@9.20.1,5.11-0.175.1.0.0.24.0:20120904T170605Z   i--`
    62  
    63  	m := packages.ParseSolarisPackages(strings.NewReader(pkgList))
    64  
    65  	assert.Equal(t, 4, len(m), "detected the right amount of packages")
    66  	var p packages.Package
    67  	p = packages.Package{
    68  		Name:    "archiver/gnu-tar",
    69  		Version: "1.26",
    70  		Format:  packages.SolarisPkgFormat,
    71  	}
    72  	assert.Contains(t, m, p, "pkg detected")
    73  
    74  	p = packages.Package{
    75  		Name:    "compress/bzip2",
    76  		Version: "1.0.6",
    77  		Format:  packages.SolarisPkgFormat,
    78  	}
    79  	assert.Contains(t, m, p, "pkg detected")
    80  
    81  	p = packages.Package{
    82  		Name:    "compress/p7zip",
    83  		Version: "9.20.1",
    84  		Format:  packages.SolarisPkgFormat,
    85  	}
    86  	assert.Contains(t, m, p, "pkg detected")
    87  }
    88  
    89  func TestSolarisManager(t *testing.T) {
    90  	filepath, _ := filepath.Abs("./testdata/packages_solaris11.toml")
    91  	conn, err := mock.New(filepath, &inventory.Asset{
    92  		Platform: &inventory.Platform{
    93  			Name: "solaris",
    94  		},
    95  	})
    96  	require.NoError(t, err)
    97  
    98  	pkgManager, err := packages.ResolveSystemPkgManager(conn)
    99  	require.NoError(t, err)
   100  
   101  	pkgList, err := pkgManager.List()
   102  	require.NoError(t, err)
   103  
   104  	assert.Equal(t, 146, len(pkgList))
   105  	p := packages.Package{
   106  		Name:    "compress/p7zip",
   107  		Version: "9.20.1",
   108  		Format:  packages.SolarisPkgFormat,
   109  	}
   110  	assert.Contains(t, pkgList, p, "pkg detected")
   111  }