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  }