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  }