github.com/hernad/nomad@v1.6.112/helper/users/lookup_windows_test.go (about) 1 // Copyright (c) HashiCorp, Inc. 2 // SPDX-License-Identifier: MPL-2.0 3 4 //go:build windows 5 6 package users 7 8 import ( 9 "os" 10 "os/user" 11 "path/filepath" 12 "testing" 13 14 "github.com/shoenig/test/must" 15 ) 16 17 func TestLookup_Windows(t *testing.T) { 18 stdlibUser, err := user.Current() 19 must.NoError(t, err, must.Sprintf("error looking up current user using stdlib")) 20 must.NotEq(t, "", stdlibUser.Username) 21 22 helperUser, err := Current() 23 must.NoError(t, err) 24 25 must.Eq(t, stdlibUser.Username, helperUser.Username) 26 27 lookupUser, err := Lookup(helperUser.Username) 28 must.NoError(t, err) 29 30 must.Eq(t, helperUser.Username, lookupUser.Username) 31 } 32 33 func TestLookup_Administrator(t *testing.T) { 34 u, err := user.Lookup("Administrator") 35 must.NoError(t, err) 36 37 // Windows allows looking up unqualified names but will return a fully 38 // qualified (eg prefixed with the local machine or domain) 39 must.StrHasSuffix(t, "Administrator", u.Username) 40 } 41 42 func TestWriteFileFor_Windows(t *testing.T) { 43 path := filepath.Join(t.TempDir(), "secret.txt") 44 contents := []byte("TOO MANY SECRETS") 45 46 must.NoError(t, WriteFileFor(path, contents, "Administrator")) 47 stat, err := os.Lstat(path) 48 must.NoError(t, err) 49 must.True(t, stat.Mode().IsRegular(), 50 must.Sprintf("expected %s to be a regular file but found %#o", path, stat.Mode())) 51 52 // Assert Windows hits the fallback world-accessible case 53 must.Eq(t, 0o666, stat.Mode().Perm()) 54 } 55 56 // TestSocketFileFor_Windows asserts that socket files cannot be chowned on 57 // windows. 58 func TestSocketFileFor_Windows(t *testing.T) { 59 path := filepath.Join(t.TempDir(), "api.sock") 60 61 ln, err := SocketFileFor(testlog.HCLogger(t), path, "Administrator") 62 must.NoError(t, err) 63 must.NotNil(t, ln) 64 defer ln.Close() 65 stat, err := os.Lstat(path) 66 must.NoError(t, err) 67 68 // Assert Windows hits the fallback world-accessible case 69 must.Eq(t, 0o666, stat.Mode().Perm()) 70 }