mirror of
https://github.com/safedep/pmg.git
synced 2026-08-03 07:24:09 +02:00
67 lines
1.6 KiB
Go
67 lines
1.6 KiB
Go
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"
|
||
|
|
)
|
||
|
|
|
||
|
|
func TestErrIfSystemInstallAllowed(t *testing.T) {
|
||
|
|
orig := setupGeteuid
|
||
|
|
t.Cleanup(func() { setupGeteuid = orig })
|
||
|
|
|
||
|
|
setupGeteuid = func() int { return 0 }
|
||
|
|
err := errIfSystemInstallAllowed()
|
||
|
|
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 }
|
||
|
|
err = errIfSystemInstallAllowed()
|
||
|
|
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())
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestInstallSystemRequiresLinuxAndRoot(t *testing.T) {
|
||
|
|
orig := setupGeteuid
|
||
|
|
t.Cleanup(func() {
|
||
|
|
setupGeteuid = orig
|
||
|
|
setupInstallSystem = false
|
||
|
|
})
|
||
|
|
|
||
|
|
setupInstallSystem = true
|
||
|
|
setupGeteuid = func() int { return 0 }
|
||
|
|
|
||
|
|
err := install()
|
||
|
|
if runtime.GOOS == "linux" {
|
||
|
|
if err != nil {
|
||
|
|
usefulErr, ok := usefulerror.AsUsefulError(err)
|
||
|
|
if ok {
|
||
|
|
assert.NotEqual(t, errcodes.UnsupportedPlatform, usefulErr.Code())
|
||
|
|
assert.NotEqual(t, errcodes.PermissionDenied, usefulErr.Code())
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return
|
||
|
|
}
|
||
|
|
|
||
|
|
require.Error(t, err)
|
||
|
|
usefulErr, ok := usefulerror.AsUsefulError(err)
|
||
|
|
require.True(t, ok)
|
||
|
|
assert.Equal(t, errcodes.UnsupportedPlatform, usefulErr.Code())
|
||
|
|
}
|