1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
// Copyright (c) 2018-2023, Sylabs Inc. All rights reserved.
// This software is licensed under a 3-clause BSD license. Please consult the
// LICENSE.md file distributed with the sources of this project regarding your
// rights to use or distribute this software.
package files
import (
"os"
"path/filepath"
"testing"
"github.com/sylabs/singularity/v4/internal/pkg/test"
"gotest.tools/v3/golden"
)
func TestPasswd(t *testing.T) {
test.DropPrivilege(t)
defer test.ResetPrivilege(t)
uid := os.Getuid()
// Test how Passwd() works with a bad passwd file
_, err := Passwd("/fake", "/fake", uid, nil)
if err == nil {
t.Errorf("should have failed with bad passwd file")
}
// Test how Passwd() works with an empty file
f, err := os.CreateTemp("", "empty-passwd-")
if err != nil {
t.Error(err)
}
emptyPasswd := f.Name()
defer os.Remove(emptyPasswd)
f.Close()
_, err = Passwd(emptyPasswd, "/home", uid, nil)
if err != nil {
t.Error(err)
}
inputPasswdFilePath := filepath.Join(".", "testdata", "passwd.in")
testUID := 0
testHomeDir := "/tmp"
testGoldenFile := "passwd.root.customhome.golden"
bytes, err := Passwd(inputPasswdFilePath, testHomeDir, testUID, nil)
if err != nil {
t.Errorf("Unexpected error encountered calling Passwd(): %v", err)
return
}
golden.Assert(t, string(bytes), testGoldenFile, "mismatch in Passwd() invocation (uid: %d; requested homeDir: %#v)", testUID, testHomeDir)
}
|