2026-07-10 23:33:52 +05:30
|
|
|
package setup
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"runtime"
|
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
|
|
"github.com/safedep/dry/usefulerror"
|
|
|
|
|
"github.com/safedep/pmg/errcodes"
|
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
|
)
|
|
|
|
|
|
2026-07-14 00:44:44 +05:30
|
|
|
func TestRequireSystemInstallSupported(t *testing.T) {
|
2026-07-10 23:33:52 +05:30
|
|
|
orig := setupGeteuid
|
|
|
|
|
t.Cleanup(func() { setupGeteuid = orig })
|
|
|
|
|
|
|
|
|
|
setupGeteuid = func() int { return 0 }
|
2026-07-13 22:20:57 +05:30
|
|
|
err := requireSystemInstallSupported()
|
2026-07-10 23:33:52 +05:30
|
|
|
if runtime.GOOS == "linux" {
|
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
} else {
|
|
|
|
|
require.Error(t, err)
|
|
|
|
|
usefulErr, ok := usefulerror.AsUsefulError(err)
|
|
|
|
|
require.True(t, ok)
|
|
|
|
|
assert.Equal(t, errcodes.UnsupportedPlatform, usefulErr.Code())
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
setupGeteuid = func() int { return 1000 }
|
2026-07-13 22:20:57 +05:30
|
|
|
err = requireSystemInstallSupported()
|
2026-07-10 23:33:52 +05:30
|
|
|
require.Error(t, err)
|
|
|
|
|
usefulErr, ok := usefulerror.AsUsefulError(err)
|
|
|
|
|
require.True(t, ok)
|
|
|
|
|
if runtime.GOOS == "linux" {
|
|
|
|
|
assert.Equal(t, errcodes.PermissionDenied, usefulErr.Code())
|
|
|
|
|
} else {
|
|
|
|
|
assert.Equal(t, errcodes.UnsupportedPlatform, usefulErr.Code())
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2026-07-11 02:11:42 +05:30
|
|
|
func TestInstallSystemRequiresRoot(t *testing.T) {
|
2026-07-10 23:33:52 +05:30
|
|
|
orig := setupGeteuid
|
2026-07-11 02:11:42 +05:30
|
|
|
t.Cleanup(func() { setupGeteuid = orig })
|
2026-07-10 23:33:52 +05:30
|
|
|
|
2026-07-11 02:11:42 +05:30
|
|
|
setupGeteuid = func() int { return 1000 }
|
2026-07-10 23:33:52 +05:30
|
|
|
|
2026-07-11 02:11:42 +05:30
|
|
|
err := install(true)
|
2026-07-10 23:33:52 +05:30
|
|
|
require.Error(t, err)
|
|
|
|
|
usefulErr, ok := usefulerror.AsUsefulError(err)
|
|
|
|
|
require.True(t, ok)
|
2026-07-11 02:11:42 +05:30
|
|
|
if runtime.GOOS == "linux" {
|
|
|
|
|
assert.Equal(t, errcodes.PermissionDenied, usefulErr.Code())
|
|
|
|
|
} else {
|
|
|
|
|
assert.Equal(t, errcodes.UnsupportedPlatform, usefulErr.Code())
|
|
|
|
|
}
|
2026-07-10 23:33:52 +05:30
|
|
|
}
|