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 }