Files
nomad/helper/users/lookup_windows_test.go
Matt Keeler 833e240597 Upgrade to using hashicorp/go-metrics@v0.5.4 (#24856)
* Upgrade to using hashicorp/go-metrics@v0.5.4

This also requires bumping the dependencies for:

* memberlist
* serf
* raft
* raft-boltdb
* (and indirectly hashicorp/mdns due to the memberlist or serf update)

Unlike some other HashiCorp products, Nomads root module is currently expected to be consumed by others. This means that it needs to be treated more like our libraries and upgrade to hashicorp/go-metrics by utilizing its compat packages. This allows those importing the root module to control the metrics module used via build tags.
2025-01-31 15:22:00 -05:00

72 lines
1.9 KiB
Go

// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: BUSL-1.1
//go:build windows
package users
import (
"os"
"os/user"
"path/filepath"
"testing"
"github.com/hashicorp/nomad/helper/testlog"
"github.com/shoenig/test/must"
)
func TestLookup_Windows(t *testing.T) {
stdlibUser, err := user.Current()
must.NoError(t, err, must.Sprintf("error looking up current user using stdlib"))
must.NotEq(t, "", stdlibUser.Username)
helperUser, err := Current()
must.NoError(t, err)
must.Eq(t, stdlibUser.Username, helperUser.Username)
lookupUser, err := Lookup(helperUser.Username)
must.NoError(t, err)
must.Eq(t, helperUser.Username, lookupUser.Username)
}
func TestLookup_Administrator(t *testing.T) {
u, err := user.Lookup("Administrator")
must.NoError(t, err)
// Windows allows looking up unqualified names but will return a fully
// qualified (eg prefixed with the local machine or domain)
must.StrHasSuffix(t, "Administrator", u.Username)
}
func TestWriteFileFor_Windows(t *testing.T) {
path := filepath.Join(t.TempDir(), "secret.txt")
contents := []byte("TOO MANY SECRETS")
must.NoError(t, WriteFileFor(path, contents, "Administrator"))
stat, err := os.Lstat(path)
must.NoError(t, err)
must.True(t, stat.Mode().IsRegular(),
must.Sprintf("expected %s to be a regular file but found %#o", path, stat.Mode()))
// Assert Windows hits the fallback world-accessible case
must.Eq(t, 0o666, stat.Mode().Perm())
}
// TestSocketFileFor_Windows asserts that socket files cannot be chowned on
// windows.
func TestSocketFileFor_Windows(t *testing.T) {
path := filepath.Join(t.TempDir(), "api.sock")
ln, err := SocketFileFor(testlog.HCLogger(t), path, "Administrator")
must.NoError(t, err)
must.NotNil(t, ln)
defer ln.Close()
stat, err := os.Lstat(path)
must.NoError(t, err)
// Assert Windows hits the fallback world-accessible case
must.Eq(t, 0o666, stat.Mode().Perm())
}