RKNnoVPN/runtime/internal/modulehelper/modulehelper_test.go

50 lines
1.3 KiB
Go

package modulehelper
import (
"os"
"path/filepath"
"testing"
"github.com/youtubediscord/RKNnoVPN/runtime/internal/modulecontract"
)
func TestCurrentStateTreatsRuntimeCliAsActive(t *testing.T) {
moduleDir := t.TempDir()
prepareModuleFixture(t, moduleDir)
state := CurrentState(moduleDir)
if state.Status != StatusActive {
t.Fatalf("status = %q, want %q; message=%q", state.Status, StatusActive, state.Message)
}
}
func TestCurrentStateReportsMissingRuntimeCli(t *testing.T) {
moduleDir := t.TempDir()
prepareModuleFixture(t, moduleDir)
if err := os.Remove(filepath.Join(moduleDir, "bin", "rknnovpn-runtime")); err != nil {
t.Fatal(err)
}
state := CurrentState(moduleDir)
if state.Status != StatusRuntimeMissing {
t.Fatalf("status = %q, want %q", state.Status, StatusRuntimeMissing)
}
}
func prepareModuleFixture(t *testing.T, moduleDir string) {
t.Helper()
paths := modulecontract.NewPaths(moduleDir)
for _, dir := range []string{paths.BinDir(), paths.ConfigDir(), paths.RunDir()} {
if err := os.MkdirAll(dir, 0750); err != nil {
t.Fatal(err)
}
}
for _, path := range []string{
filepath.Join(paths.Dir(), "service.sh"),
filepath.Join(paths.BinDir(), "rknnovpn-runtime"),
} {
if err := os.WriteFile(path, []byte("#!/system/bin/sh\n"), 0750); err != nil {
t.Fatal(err)
}
}
}