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 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
|
// Copyright (c) 2018-2019, 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 user
import (
"os"
"testing"
"github.com/sylabs/singularity/v4/internal/pkg/test"
)
func TestGetPwUID(t *testing.T) {
test.DropPrivilege(t)
defer test.ResetPrivilege(t)
u, err := GetPwUID(0)
if err != nil {
t.Fatalf("Failed to retrieve information for UID 0")
}
if u.Name != "root" {
t.Fatalf("UID 0 doesn't correspond to root user")
}
}
func TestGetPwNam(t *testing.T) {
test.DropPrivilege(t)
defer test.ResetPrivilege(t)
u, err := GetPwNam("root")
if err != nil {
t.Fatalf("Failed to retrieve information for root user")
}
if u.UID != 0 {
t.Fatalf("root user doesn't have UID 0")
}
}
func TestGetGrGID(t *testing.T) {
test.DropPrivilege(t)
defer test.ResetPrivilege(t)
group, err := GetGrGID(0)
if err != nil {
t.Fatalf("Failed to retrieve information for GID 0")
}
if group.Name != "root" {
t.Fatalf("GID 0 doesn't correspond to root group")
}
}
func TestGetGrNam(t *testing.T) {
test.DropPrivilege(t)
defer test.ResetPrivilege(t)
group, err := GetGrNam("root")
if err != nil {
t.Fatalf("Failed to retrieve information for root group")
}
if group.GID != 0 {
t.Fatalf("root group doesn't have GID 0")
}
}
func testCurrent(t *testing.T, fn func() (*User, error)) {
uid := os.Getuid()
u, err := fn()
if err != nil {
t.Fatalf("Failed to retrieve information for current user")
}
if u.UID != uint32(uid) {
t.Fatalf("returned UID (%d) doesn't match current UID (%d)", uid, u.UID)
}
}
func TestCurrent(t *testing.T) {
// as a regular user
test.DropPrivilege(t)
defer test.ResetPrivilege(t)
testCurrent(t, Current)
// as root
test.ResetPrivilege(t)
testCurrent(t, Current)
}
func TestCurrentOriginal(t *testing.T) {
// as a regular user
test.DropPrivilege(t)
defer test.ResetPrivilege(t)
// to fully test CurrentOriginal, we would need
// to execute it from a user namespace, actually
// we just ensure that current user information
// are returned
testCurrent(t, CurrentOriginal)
// as root
test.ResetPrivilege(t)
testCurrent(t, CurrentOriginal)
}
|