| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- //go:build windows
- package localapi
- import (
- "testing"
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/require"
- "golang.org/x/sys/windows"
- )
- // TestLookupGroupIDOnWindows: an account name resolves to its SID, a SID written out
- // is accepted as it is, and an account the host does not know is reported.
- func TestLookupGroupIDOnWindows(t *testing.T) {
- users, err := windows.CreateWellKnownSid(windows.WinBuiltinUsersSid)
- require.NoError(t, err)
- got, err := lookupGroupID("Users")
- require.NoError(t, err)
- assert.Equal(t, users.String(), got)
- got, err = lookupGroupID(users.String())
- require.NoError(t, err)
- assert.Equal(t, users.String(), got)
- _, err = lookupGroupID("no-such-account-nebula-test")
- require.ErrorContains(t, err, "does not exist")
- }
- // TestSDDLAdmitsTheGroup: the descriptor is the owner, SYSTEM and Administrators with
- // full access, plus the group with read and write, which is what connecting takes.
- func TestSDDLAdmitsTheGroup(t *testing.T) {
- sddl, err := sddlFor(ownerOnly())
- require.NoError(t, err)
- assert.NotContains(t, sddl, "GRGW")
- sddl, err = sddlFor(Access{Mode: groupSocketMode, Group: &Group{Name: "Users", ID: "S-1-5-32-545"}})
- require.NoError(t, err)
- assert.Contains(t, sddl, "(A;;GA;;;SY)(A;;GA;;;BA)(A;;0x12019b;;;S-1-5-32-545)")
- }
|