go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/providers/os/resources/groups/manager_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-sdk/v1/inventory"
    12  	"go.mondoo.com/cnquery/providers/os/connection/mock"
    13  	"go.mondoo.com/cnquery/providers/os/resources/groups"
    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 := groups.ResolveManager(mock)
    25  	require.NoError(t, err)
    26  	groupList, err := mm.List()
    27  	require.NoError(t, err)
    28  
    29  	grp := findGroup(groupList, "0")
    30  	assert.Equal(t, "0", grp.ID)
    31  	assert.Equal(t, int64(0), grp.Gid)
    32  	assert.Equal(t, "root", grp.Name)
    33  	assert.Equal(t, []string{}, grp.Members)
    34  
    35  	assert.Equal(t, 23, len(groupList))
    36  }
    37  
    38  func TestManagerMacos(t *testing.T) {
    39  	mock, err := mock.New("./testdata/osx.toml", &inventory.Asset{
    40  		Platform: &inventory.Platform{
    41  			Family: []string{"darwin"},
    42  		},
    43  	})
    44  	require.NoError(t, err)
    45  
    46  	mm, err := groups.ResolveManager(mock)
    47  	require.NoError(t, err)
    48  	groupList, err := mm.List()
    49  	require.NoError(t, err)
    50  
    51  	grp := findGroup(groupList, "216")
    52  	assert.Equal(t, "216", grp.ID)
    53  	assert.Equal(t, int64(216), grp.Gid)
    54  	assert.Equal(t, "_postgres", grp.Name)
    55  	assert.Equal(t, []string{"_devicemgr", "_calendar", "_teamsserver", "_xserverdocs"}, grp.Members)
    56  
    57  	assert.Equal(t, 3, len(groupList))
    58  }
    59  
    60  func TestManagerFreebsd(t *testing.T) {
    61  	mock, err := mock.New("./testdata/freebsd12.toml", &inventory.Asset{
    62  		Platform: &inventory.Platform{
    63  			Family: []string{"unix", "bsd"},
    64  		},
    65  	})
    66  	require.NoError(t, err)
    67  
    68  	mm, err := groups.ResolveManager(mock)
    69  	require.NoError(t, err)
    70  	groupList, err := mm.List()
    71  	require.NoError(t, err)
    72  
    73  	grp := findGroup(groupList, "0")
    74  	assert.Equal(t, "0", grp.ID)
    75  	assert.Equal(t, int64(0), grp.Gid)
    76  	assert.Equal(t, "wheel", grp.Name)
    77  	assert.Equal(t, []string{"root", "vagrant"}, grp.Members)
    78  
    79  	assert.Equal(t, 36, len(groupList))
    80  }
    81  
    82  func TestManagerWindows(t *testing.T) {
    83  	mock, err := mock.New("./testdata/windows.toml", &inventory.Asset{
    84  		Platform: &inventory.Platform{
    85  			Family: []string{"windows"},
    86  		},
    87  	})
    88  	require.NoError(t, err)
    89  
    90  	mm, err := groups.ResolveManager(mock)
    91  	require.NoError(t, err)
    92  	groupList, err := mm.List()
    93  	require.NoError(t, err)
    94  
    95  	grp := findGroup(groupList, "S-1-5-32-544")
    96  	assert.Equal(t, "S-1-5-32-544", grp.ID)
    97  	assert.Equal(t, int64(-1), grp.Gid)
    98  	assert.Equal(t, "Administrators", grp.Name)
    99  	assert.Equal(t, []string{}, grp.Members)
   100  
   101  	assert.Equal(t, 25, len(groupList))
   102  }
   103  
   104  func findGroup(groupList []*groups.Group, id string) *groups.Group {
   105  	if len(groupList) == 0 {
   106  		return nil
   107  	}
   108  
   109  	for i := range groupList {
   110  		if groupList[i].ID == id {
   111  			return groupList[i]
   112  		}
   113  	}
   114  	return nil
   115  }