go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/providers/os/resources/users/dscl_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 "go.mondoo.com/cnquery/providers/os/connection/mock" 11 "go.mondoo.com/cnquery/providers/os/resources/users" 12 ) 13 14 func TestParseDsclListResult(t *testing.T) { 15 mock, err := mock.New("./testdata/osx.toml", nil) 16 if err != nil { 17 t.Fatal(err) 18 } 19 20 // check user shells 21 c, err := mock.RunCommand("dscl . -list /Users UserShell") 22 if err != nil { 23 t.Fatal(err) 24 } 25 26 m, err := users.ParseDsclListResult(c.Stdout) 27 assert.Nil(t, err) 28 assert.Equal(t, 8, len(m), "detected the right amount of users") 29 assert.Equal(t, "/usr/bin/false", m["_www"], "detected uid name") 30 31 // check uid 32 c, err = mock.RunCommand("dscl . -list /Users UniqueID") 33 if err != nil { 34 t.Fatal(err) 35 } 36 37 m, err = users.ParseDsclListResult(c.Stdout) 38 assert.Nil(t, err) 39 assert.Equal(t, 8, len(m), "detected the right amount of users") 40 assert.Equal(t, "70", m["_www"], "detected uid name") 41 42 // check user home 43 c, err = mock.RunCommand("dscl . -list /Users NFSHomeDirectory") 44 if err != nil { 45 t.Fatal(err) 46 } 47 48 m, err = users.ParseDsclListResult(c.Stdout) 49 assert.Nil(t, err) 50 assert.Equal(t, 7, len(m), "detected the right amount of users") 51 assert.Equal(t, "/Library/WebServer", m["_www"], "detected uid name") 52 assert.Equal(t, "/var/root /private/var/root", m["root"], "detected root name") 53 }