From b20ede97ea40b8aa2ed8d4f3fc783e3993852574 Mon Sep 17 00:00:00 2001 From: Michael Cook Date: Wed, 5 Jul 2023 22:33:06 -0400 Subject: [PATCH] Shaman: fail unit test when running as root user If the mock tests are run by root user then this specific test of inaccessible path fails because root can write files to anywhere on the filesystem. It is not clear that Flamenco Manager test TestCheckSharedStoragePath is checking inaccessible file locations when it fails and that it should be run by an unprivileged user. Fix is to fail the permission test if the tests are run as a root user. --- internal/manager/api_impl/meta_test.go | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/internal/manager/api_impl/meta_test.go b/internal/manager/api_impl/meta_test.go index 18783cef..a067ee36 100644 --- a/internal/manager/api_impl/meta_test.go +++ b/internal/manager/api_impl/meta_test.go @@ -6,6 +6,7 @@ import ( "io/fs" "net/http" "os" + "os/user" "path/filepath" "runtime" "testing" @@ -189,6 +190,16 @@ func TestCheckSharedStoragePath(t *testing.T) { // that seems consistent. // FIXME: find another way to test with unwritable directories on Windows. if runtime.GOOS != "windows" { + + // Root can always create directories, so this test would fail with a + // confusing message. Instead it's better to refuse running as root at all. + currentUser, err := user.Current() + require.NoError(t, err) + require.NotEqual(t, "0", currentUser.Uid, + "this test requires running as normal user, not %s (%s)", currentUser.Username, currentUser.Uid) + require.NotEqual(t, "root", currentUser.Username, + "this test requires running as normal user, not %s (%s)", currentUser.Username, currentUser.Uid) + parentPath := filepath.Join(mf.tempdir, "deep") testPath := filepath.Join(parentPath, "nesting") if err := os.Mkdir(parentPath, fs.ModePerm); !assert.NoError(t, err) {