go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/providers/os/resources/groups/ps1getlocalgroup_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/os/connection/mock" 12 "go.mondoo.com/cnquery/providers/os/resources/groups" 13 ) 14 15 func TestWindowsGroupsParserFromMock(t *testing.T) { 16 mock, err := mock.New("./testdata/windows.toml", nil) 17 require.NoError(t, err) 18 19 f, err := mock.RunCommand("powershell -c \"Get-LocalGroup | ConvertTo-Json\"") 20 require.NoError(t, err) 21 22 localGroups, err := groups.ParseWindowsLocalGroups(f.Stdout) 23 require.NoError(t, err) 24 25 assert.Equal(t, 25, len(localGroups)) 26 27 expected := &groups.WindowsLocalGroup{ 28 Name: "Administrators", 29 Description: "Administrators have complete and unrestricted access to the computer/domain", 30 ObjectClass: "Group", 31 PrincipalSource: 1, 32 SID: groups.WindowsSID{ 33 BinaryLength: 16, 34 AccountDomainSid: nil, 35 Value: "S-1-5-32-544", 36 }, 37 } 38 found := findWindowsGroup(localGroups, "Administrators") 39 40 assert.EqualValues(t, expected, found) 41 } 42 43 func findWindowsGroup(localGroups []groups.WindowsLocalGroup, name string) *groups.WindowsLocalGroup { 44 for i := range localGroups { 45 if localGroups[i].Name == name { 46 return &localGroups[i] 47 } 48 } 49 return nil 50 }