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  }