Files
pmg/config/system_config_unix_test.go
T

39 lines
1003 B
Go
Raw Normal View History

//go:build unix
package config
import (
"os"
"path/filepath"
"syscall"
"testing"
"github.com/stretchr/testify/require"
)
func TestWriteSystemTemplateConfigReadableUnderRestrictiveUmask(t *testing.T) {
if os.Geteuid() != 0 {
t.Skip("mode repair only runs as root")
}
oldUmask := syscall.Umask(0o077)
t.Cleanup(func() { syscall.Umask(oldUmask) })
globalDir := filepath.Join(t.TempDir(), "safedep", "pmg")
useManagedConfigDir(t, globalDir)
require.NoError(t, WriteSystemTemplateConfig())
fileInfo, err := os.Stat(filepath.Join(globalDir, "config.yml"))
require.NoError(t, err)
require.Equal(t, os.FileMode(0o644), fileInfo.Mode().Perm(),
"managed config must stay world-readable regardless of the installer's umask")
for _, dir := range []string{globalDir, filepath.Dir(globalDir)} {
dirInfo, err := os.Stat(dir)
require.NoError(t, err)
require.Equal(t, os.FileMode(0o755), dirInfo.Mode().Perm(),
"managed config directories must stay world-searchable: %s", dir)
}
}