go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/providers/os/resources/groups/manager_test.go (about) 1 // Copyright (c) Mondoo, Inc. 2 // SPDX-License-Identifier: BUSL-1.1 3 4 package groups_test 5 6 import ( 7 "testing" 8 9 "github.com/stretchr/testify/assert" 10 "github.com/stretchr/testify/require" 11 "go.mondoo.com/cnquery/providers-sdk/v1/inventory" 12 "go.mondoo.com/cnquery/providers/os/connection/mock" 13 "go.mondoo.com/cnquery/providers/os/resources/groups" 14 ) 15 16 func TestManagerDebian(t *testing.T) { 17 mock, err := mock.New("./testdata/debian.toml", &inventory.Asset{ 18 Platform: &inventory.Platform{ 19 Family: []string{"unix", "linux", "debian"}, 20 }, 21 }) 22 require.NoError(t, err) 23 24 mm, err := groups.ResolveManager(mock) 25 require.NoError(t, err) 26 groupList, err := mm.List() 27 require.NoError(t, err) 28 29 grp := findGroup(groupList, "0") 30 assert.Equal(t, "0", grp.ID) 31 assert.Equal(t, int64(0), grp.Gid) 32 assert.Equal(t, "root", grp.Name) 33 assert.Equal(t, []string{}, grp.Members) 34 35 assert.Equal(t, 23, len(groupList)) 36 } 37 38 func TestManagerMacos(t *testing.T) { 39 mock, err := mock.New("./testdata/osx.toml", &inventory.Asset{ 40 Platform: &inventory.Platform{ 41 Family: []string{"darwin"}, 42 }, 43 }) 44 require.NoError(t, err) 45 46 mm, err := groups.ResolveManager(mock) 47 require.NoError(t, err) 48 groupList, err := mm.List() 49 require.NoError(t, err) 50 51 grp := findGroup(groupList, "216") 52 assert.Equal(t, "216", grp.ID) 53 assert.Equal(t, int64(216), grp.Gid) 54 assert.Equal(t, "_postgres", grp.Name) 55 assert.Equal(t, []string{"_devicemgr", "_calendar", "_teamsserver", "_xserverdocs"}, grp.Members) 56 57 assert.Equal(t, 3, len(groupList)) 58 } 59 60 func TestManagerFreebsd(t *testing.T) { 61 mock, err := mock.New("./testdata/freebsd12.toml", &inventory.Asset{ 62 Platform: &inventory.Platform{ 63 Family: []string{"unix", "bsd"}, 64 }, 65 }) 66 require.NoError(t, err) 67 68 mm, err := groups.ResolveManager(mock) 69 require.NoError(t, err) 70 groupList, err := mm.List() 71 require.NoError(t, err) 72 73 grp := findGroup(groupList, "0") 74 assert.Equal(t, "0", grp.ID) 75 assert.Equal(t, int64(0), grp.Gid) 76 assert.Equal(t, "wheel", grp.Name) 77 assert.Equal(t, []string{"root", "vagrant"}, grp.Members) 78 79 assert.Equal(t, 36, len(groupList)) 80 } 81 82 func TestManagerWindows(t *testing.T) { 83 mock, err := mock.New("./testdata/windows.toml", &inventory.Asset{ 84 Platform: &inventory.Platform{ 85 Family: []string{"windows"}, 86 }, 87 }) 88 require.NoError(t, err) 89 90 mm, err := groups.ResolveManager(mock) 91 require.NoError(t, err) 92 groupList, err := mm.List() 93 require.NoError(t, err) 94 95 grp := findGroup(groupList, "S-1-5-32-544") 96 assert.Equal(t, "S-1-5-32-544", grp.ID) 97 assert.Equal(t, int64(-1), grp.Gid) 98 assert.Equal(t, "Administrators", grp.Name) 99 assert.Equal(t, []string{}, grp.Members) 100 101 assert.Equal(t, 25, len(groupList)) 102 } 103 104 func findGroup(groupList []*groups.Group, id string) *groups.Group { 105 if len(groupList) == 0 { 106 return nil 107 } 108 109 for i := range groupList { 110 if groupList[i].ID == id { 111 return groupList[i] 112 } 113 } 114 return nil 115 }