util/osuser: add unit test for parseGroupIds

Updates #11682

Signed-off-by: Percy Wegmann <percy@tailscale.com>
This commit is contained in:
Percy Wegmann 2024-04-22 20:34:43 -05:00 committed by Percy Wegmann
parent e985c6e58f
commit b7e5122226
2 changed files with 31 additions and 1 deletions

View File

@ -46,5 +46,9 @@ func getGroupIdsWithId(usernameOrUID string) ([]string, error) {
if err != nil { if err != nil {
return nil, fmt.Errorf("running 'id' command: %w", err) return nil, fmt.Errorf("running 'id' command: %w", err)
} }
return strings.Split(string(out), "\x00"), nil return parseGroupIds(out), nil
}
func parseGroupIds(cmdOutput []byte) []string {
return strings.Split(strings.Trim(string(cmdOutput), "\n\x00"), "\x00")
} }

View File

@ -0,0 +1,26 @@
// Copyright (c) Tailscale Inc & AUTHORS
// SPDX-License-Identifier: BSD-3-Clause
package osuser
import (
"slices"
"testing"
)
func TestParseGroupIds(t *testing.T) {
tests := []struct {
in string
expected []string
}{
{"5000\x005001\n", []string{"5000", "5001"}},
{"5000\n", []string{"5000"}},
{"\n", []string{""}},
}
for _, test := range tests {
actual := parseGroupIds([]byte(test.in))
if !slices.Equal(actual, test.expected) {
t.Errorf("parseGroupIds(%q) = %q, wanted %s", test.in, actual, test.expected)
}
}
}