go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/providers/os/resources/users/manager_test.go (about) 1 // Copyright (c) Mondoo, Inc. 2 // SPDX-License-Identifier: BUSL-1.1 3 4 package users_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/users" 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 := users.ResolveManager(mock) 25 require.NoError(t, err) 26 userList, err := mm.List() 27 require.NoError(t, err) 28 29 usr := findUser(userList, "0") 30 assert.Equal(t, "0", usr.ID) 31 assert.Equal(t, int64(0), usr.Uid) 32 assert.Equal(t, int64(0), usr.Gid) 33 assert.Equal(t, "/root", usr.Home) 34 assert.Equal(t, "root", usr.Name) 35 assert.Equal(t, "/bin/bash", usr.Shell) 36 37 assert.Equal(t, 13, len(userList)) 38 } 39 40 func TestManagerMacos(t *testing.T) { 41 mock, err := mock.New("./testdata/osx.toml", &inventory.Asset{ 42 Platform: &inventory.Platform{ 43 Family: []string{"darwin"}, 44 }, 45 }) 46 require.NoError(t, err) 47 48 mm, err := users.ResolveManager(mock) 49 require.NoError(t, err) 50 userList, err := mm.List() 51 require.NoError(t, err) 52 53 usr := findUser(userList, "0") 54 assert.Equal(t, "0", usr.ID) 55 assert.Equal(t, int64(0), usr.Uid) 56 assert.Equal(t, int64(0), usr.Gid) 57 assert.Equal(t, "/var/root /private/var/root", usr.Home) 58 assert.Equal(t, "root", usr.Name) 59 assert.Equal(t, "/bin/sh", usr.Shell) 60 61 assert.Equal(t, 8, len(userList)) 62 } 63 64 func TestManagerFreebsd(t *testing.T) { 65 mock, err := mock.New("./testdata/freebsd12.toml", &inventory.Asset{ 66 Platform: &inventory.Platform{ 67 Family: []string{"unix", "bsd"}, 68 }, 69 }) 70 require.NoError(t, err) 71 72 mm, err := users.ResolveManager(mock) 73 require.NoError(t, err) 74 userList, err := mm.List() 75 require.NoError(t, err) 76 77 usr := findUser(userList, "0") 78 assert.Equal(t, "0", usr.ID) 79 assert.Equal(t, int64(0), usr.Uid) 80 assert.Equal(t, int64(0), usr.Gid) 81 assert.Equal(t, "/root", usr.Home) 82 assert.Equal(t, "root", usr.Name) 83 assert.Equal(t, "/bin/csh", usr.Shell) 84 85 assert.Equal(t, 28, len(userList)) 86 } 87 88 func TestManagerWindows(t *testing.T) { 89 mock, err := mock.New("./testdata/windows.toml", &inventory.Asset{ 90 Platform: &inventory.Platform{ 91 Family: []string{"windows"}, 92 }, 93 }) 94 require.NoError(t, err) 95 96 mm, err := users.ResolveManager(mock) 97 require.NoError(t, err) 98 userList, err := mm.List() 99 require.NoError(t, err) 100 101 usr := findUser(userList, "S-1-5-21-2356735557-1575748656-448136971-500") 102 assert.Equal(t, "S-1-5-21-2356735557-1575748656-448136971-500", usr.ID) 103 assert.Equal(t, int64(-1), usr.Uid) 104 assert.Equal(t, int64(-1), usr.Gid) 105 assert.Equal(t, "", usr.Home) 106 assert.Equal(t, "chris", usr.Name) 107 assert.Equal(t, "", usr.Shell) 108 109 assert.Equal(t, 5, len(userList)) 110 } 111 112 func findUser(userList []*users.User, id string) *users.User { 113 if len(userList) == 0 { 114 return nil 115 } 116 117 for i := range userList { 118 if userList[i].ID == id { 119 return userList[i] 120 } 121 } 122 return nil 123 }