package tentacle import ( "os" "path/filepath" "strings" "testing" ) func TestDelegatedReaderParent(t *testing.T) { parent, err := delegated_parent("0::/user.slice/test.service/reader\n") if err != nil || parent != "/sys/fs/cgroup/user.slice/test.service" { t.Fatalf("%s %v", parent, err) } for _, path := range []string{"0::/", "0::/test.service", "0::/session.scope/reader", "0::/test.service/../reader", "1:cpu:/test.service/reader"} { if _, err := delegated_parent(path); err == nil { t.Fatalf("accepted %q", path) } } } func TestLocalLaunchListValidation(t *testing.T) { path := filepath.Join(t.TempDir(), "tentacles.json") for _, data := range []string{ `[{"ID":"echo","Program":["/bin/true"]}]`, `[{"ID":"echo","Program":["relative"]}]`, `[{"ID":"echo","Program":["/bin/true"]},{"ID":"echo","Program":["/bin/true"]}]`, strings.Repeat(" ", MaxFrameBytes+1), `[{"ID":"echo","ID":"other","Program":["/bin/true"]}]`, } { if err := os.WriteFile(path, []byte(data), 0600); err != nil { t.Fatal(err) } specs, err := LoadLocalSpecs(path) valid := data == `[{"ID":"echo","Program":["/bin/true"]}]` if (err == nil) != valid { t.Fatalf("validation: %v", err) } if valid && len(specs) != 1 { t.Fatal(specs) } } }