carlos / platform Public

Clone
git clone https://amadan.net/carlos/platform

Plain git — no account needed to clone.

Download

Download this file

1//go:build linux && rootrunner
2
3package host
4
5import (
6 "os"
7 "path/filepath"
8 "testing"
9
10 "github.com/carlosframework/platform/internal/hostbox"
11)
12
13func TestPlan14RootJournalNamespaceRootRunner(t *testing.T) {
14 dir := generationRootRunnerDir(t)
15 if err := os.Chmod(dir, 0700); err != nil {
16 t.Fatal(err)
17 }
18 for _, name := range []string{"authority", "held-release", "unit-bindings", "unit-materializations", "retire", "migration-snapshot"} {
19 path := filepath.Join(dir, name)
20 if err := os.Mkdir(path, 0700); err != nil {
21 t.Fatal(err)
22 }
23 if err := hostbox.PrepareRootJournalDirectory(dir); err != nil {
24 t.Fatal("permitted namespace", name, err)
25 }
26 if err := os.Chown(path, 65534, 65534); err != nil {
27 t.Fatal(err)
28 }
29 if err := hostbox.PrepareRootJournalDirectory(dir); err == nil {
30 t.Fatal("service-owned namespace accepted", name)
31 }
32 if err := os.Chown(path, 0, 0); err != nil {
33 t.Fatal(err)
34 }
35 if err := os.Chmod(path, 0777); err != nil {
36 t.Fatal(err)
37 }
38 if err := hostbox.PrepareRootJournalDirectory(dir); err == nil {
39 t.Fatal("writable namespace accepted", name)
40 }
41 if err := os.Chmod(path, 0700); err != nil {
42 t.Fatal(err)
43 }
44 }
45 unknown := filepath.Join(dir, "unreviewed")
46 if err := os.Mkdir(unknown, 0700); err != nil {
47 t.Fatal(err)
48 }
49 if err := hostbox.PrepareRootJournalDirectory(dir); err == nil {
50 t.Fatal("unknown namespace accepted")
51 }
52 if err := os.Remove(unknown); err != nil {
53 t.Fatal(err)
54 }
55 if err := hostbox.PrepareRootJournalDirectory(dir); err != nil {
56 t.Fatal("retry", err)
57 }
58}
59