aboutsummaryrefslogtreecommitdiffhomepage
path: root/print_test.go
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2025-07-02 20:42:51 +0900
committerOphestra <cat@gensokyo.uk>2025-07-02 20:42:51 +0900
commiteb22a8bcc1ac03357d4073e5d3ed6d0ab5246a37 (patch)
treed27d1f724a18bb47bf48816a444dccac28b5248c /print_test.go
parent31aef905fa819310ee7694775a836c294ff742e4 (diff)
cmd/hakurei: move to cmd
Having it at the project root never made sense since the "ego" name was deprecated. This change finally addresses it. Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'print_test.go')
-rw-r--r--print_test.go644
1 files changed, 0 insertions, 644 deletions
diff --git a/print_test.go b/print_test.go
deleted file mode 100644
index 012a48dc..00000000
--- a/print_test.go
+++ /dev/null
@@ -1,644 +0,0 @@
-package main
-
-import (
- "strings"
- "testing"
- "time"
-
- "git.gensokyo.uk/security/hakurei/dbus"
- "git.gensokyo.uk/security/hakurei/hst"
- "git.gensokyo.uk/security/hakurei/internal/app"
- "git.gensokyo.uk/security/hakurei/internal/state"
-)
-
-var (
- testID = app.ID{
- 0x8e, 0x2c, 0x76, 0xb0,
- 0x66, 0xda, 0xbe, 0x57,
- 0x4c, 0xf0, 0x73, 0xbd,
- 0xb4, 0x6e, 0xb5, 0xc1,
- }
- testState = &state.State{
- ID: testID,
- PID: 0xDEADBEEF,
- Config: hst.Template(),
- Time: testAppTime,
- }
- testTime = time.Unix(3752, 1).UTC()
- testAppTime = time.Unix(0, 9).UTC()
-)
-
-func Test_printShowInstance(t *testing.T) {
- testCases := []struct {
- name string
- instance *state.State
- config *hst.Config
- short, json bool
- want string
- }{
- {"config", nil, hst.Template(), false, false, `App
- Identity: 9 (org.chromium.Chromium)
- Enablements: wayland, dbus, pulseaudio
- Groups: video, dialout, plugdev
- Data: /var/lib/hakurei/u0/org.chromium.Chromium
- Hostname: localhost
- Flags: userns devel net device tty mapuid autoetc
- Etc: /etc
- Cover: /var/run/nscd
- Path: /run/current-system/sw/bin/chromium
- Arguments: chromium --ignore-gpu-blocklist --disable-smooth-scrolling --enable-features=UseOzonePlatform --ozone-platform=wayland
-
-Filesystem
- +/nix/store
- +/run/current-system
- +/run/opengl-driver
- +/var/db/nix-channels
- w*/var/lib/hakurei/u0/org.chromium.Chromium:/data/data/org.chromium.Chromium
- d+/dev/dri
-
-Extra ACL
- --x+:/var/lib/hakurei/u0
- rwx:/var/lib/hakurei/u0/org.chromium.Chromium
-
-Session bus
- Filter: true
- Talk: ["org.freedesktop.Notifications" "org.freedesktop.FileManager1" "org.freedesktop.ScreenSaver" "org.freedesktop.secrets" "org.kde.kwalletd5" "org.kde.kwalletd6" "org.gnome.SessionManager"]
- Own: ["org.chromium.Chromium.*" "org.mpris.MediaPlayer2.org.chromium.Chromium.*" "org.mpris.MediaPlayer2.chromium.*"]
- Call: map["org.freedesktop.portal.*":"*"]
- Broadcast: map["org.freedesktop.portal.*":"@/org/freedesktop/portal/*"]
-
-System bus
- Filter: true
- Talk: ["org.bluez" "org.freedesktop.Avahi" "org.freedesktop.UPower"]
-
-`},
- {"config pd", nil, new(hst.Config), false, false, `Warning: this configuration uses permissive defaults!
-
-App
- Identity: 0
- Enablements: (no enablements)
-
-`},
- {"config flag none", nil, &hst.Config{Container: new(hst.ContainerConfig)}, false, false, `App
- Identity: 0
- Enablements: (no enablements)
- Flags: none
- Etc: /etc
- Path:
-
-`},
- {"config nil entries", nil, &hst.Config{Container: &hst.ContainerConfig{Filesystem: make([]*hst.FilesystemConfig, 1)}, ExtraPerms: make([]*hst.ExtraPermConfig, 1)}, false, false, `App
- Identity: 0
- Enablements: (no enablements)
- Flags: none
- Etc: /etc
- Path:
-
-Filesystem
-
-Extra ACL
-
-`},
- {"config pd dbus see", nil, &hst.Config{SessionBus: &dbus.Config{See: []string{"org.example.test"}}}, false, false, `Warning: this configuration uses permissive defaults!
-
-App
- Identity: 0
- Enablements: (no enablements)
-
-Session bus
- Filter: false
- See: ["org.example.test"]
-
-`},
-
- {"instance", testState, hst.Template(), false, false, `State
- Instance: 8e2c76b066dabe574cf073bdb46eb5c1 (3735928559)
- Uptime: 1h2m32s
-
-App
- Identity: 9 (org.chromium.Chromium)
- Enablements: wayland, dbus, pulseaudio
- Groups: video, dialout, plugdev
- Data: /var/lib/hakurei/u0/org.chromium.Chromium
- Hostname: localhost
- Flags: userns devel net device tty mapuid autoetc
- Etc: /etc
- Cover: /var/run/nscd
- Path: /run/current-system/sw/bin/chromium
- Arguments: chromium --ignore-gpu-blocklist --disable-smooth-scrolling --enable-features=UseOzonePlatform --ozone-platform=wayland
-
-Filesystem
- +/nix/store
- +/run/current-system
- +/run/opengl-driver
- +/var/db/nix-channels
- w*/var/lib/hakurei/u0/org.chromium.Chromium:/data/data/org.chromium.Chromium
- d+/dev/dri
-
-Extra ACL
- --x+:/var/lib/hakurei/u0
- rwx:/var/lib/hakurei/u0/org.chromium.Chromium
-
-Session bus
- Filter: true
- Talk: ["org.freedesktop.Notifications" "org.freedesktop.FileManager1" "org.freedesktop.ScreenSaver" "org.freedesktop.secrets" "org.kde.kwalletd5" "org.kde.kwalletd6" "org.gnome.SessionManager"]
- Own: ["org.chromium.Chromium.*" "org.mpris.MediaPlayer2.org.chromium.Chromium.*" "org.mpris.MediaPlayer2.chromium.*"]
- Call: map["org.freedesktop.portal.*":"*"]
- Broadcast: map["org.freedesktop.portal.*":"@/org/freedesktop/portal/*"]
-
-System bus
- Filter: true
- Talk: ["org.bluez" "org.freedesktop.Avahi" "org.freedesktop.UPower"]
-
-`},
- {"instance pd", testState, new(hst.Config), false, false, `Warning: this configuration uses permissive defaults!
-
-State
- Instance: 8e2c76b066dabe574cf073bdb46eb5c1 (3735928559)
- Uptime: 1h2m32s
-
-App
- Identity: 0
- Enablements: (no enablements)
-
-`},
-
- {"json nil", nil, nil, false, true, `null
-`},
- {"json instance", testState, nil, false, true, `{
- "instance": [
- 142,
- 44,
- 118,
- 176,
- 102,
- 218,
- 190,
- 87,
- 76,
- 240,
- 115,
- 189,
- 180,
- 110,
- 181,
- 193
- ],
- "pid": 3735928559,
- "config": {
- "id": "org.chromium.Chromium",
- "path": "/run/current-system/sw/bin/chromium",
- "args": [
- "chromium",
- "--ignore-gpu-blocklist",
- "--disable-smooth-scrolling",
- "--enable-features=UseOzonePlatform",
- "--ozone-platform=wayland"
- ],
- "enablements": 13,
- "session_bus": {
- "see": null,
- "talk": [
- "org.freedesktop.Notifications",
- "org.freedesktop.FileManager1",
- "org.freedesktop.ScreenSaver",
- "org.freedesktop.secrets",
- "org.kde.kwalletd5",
- "org.kde.kwalletd6",
- "org.gnome.SessionManager"
- ],
- "own": [
- "org.chromium.Chromium.*",
- "org.mpris.MediaPlayer2.org.chromium.Chromium.*",
- "org.mpris.MediaPlayer2.chromium.*"
- ],
- "call": {
- "org.freedesktop.portal.*": "*"
- },
- "broadcast": {
- "org.freedesktop.portal.*": "@/org/freedesktop/portal/*"
- },
- "filter": true
- },
- "system_bus": {
- "see": null,
- "talk": [
- "org.bluez",
- "org.freedesktop.Avahi",
- "org.freedesktop.UPower"
- ],
- "own": null,
- "call": null,
- "broadcast": null,
- "filter": true
- },
- "username": "chronos",
- "shell": "/run/current-system/sw/bin/zsh",
- "data": "/var/lib/hakurei/u0/org.chromium.Chromium",
- "dir": "/data/data/org.chromium.Chromium",
- "extra_perms": [
- {
- "ensure": true,
- "path": "/var/lib/hakurei/u0",
- "x": true
- },
- {
- "path": "/var/lib/hakurei/u0/org.chromium.Chromium",
- "r": true,
- "w": true,
- "x": true
- }
- ],
- "identity": 9,
- "groups": [
- "video",
- "dialout",
- "plugdev"
- ],
- "container": {
- "hostname": "localhost",
- "seccomp_flags": 1,
- "seccomp_presets": 1,
- "devel": true,
- "userns": true,
- "net": true,
- "tty": true,
- "multiarch": true,
- "env": {
- "GOOGLE_API_KEY": "AIzaSyBHDrl33hwRp4rMQY0ziRbj8K9LPA6vUCY",
- "GOOGLE_DEFAULT_CLIENT_ID": "77185425430.apps.googleusercontent.com",
- "GOOGLE_DEFAULT_CLIENT_SECRET": "OTJgUOQcT7lO7GsGZq2G4IlT"
- },
- "map_real_uid": true,
- "device": true,
- "filesystem": [
- {
- "src": "/nix/store"
- },
- {
- "src": "/run/current-system"
- },
- {
- "src": "/run/opengl-driver"
- },
- {
- "src": "/var/db/nix-channels"
- },
- {
- "dst": "/data/data/org.chromium.Chromium",
- "src": "/var/lib/hakurei/u0/org.chromium.Chromium",
- "write": true,
- "require": true
- },
- {
- "src": "/dev/dri",
- "dev": true
- }
- ],
- "symlink": [
- [
- "/run/user/65534",
- "/run/user/150"
- ]
- ],
- "etc": "/etc",
- "auto_etc": true,
- "cover": [
- "/var/run/nscd"
- ]
- }
- },
- "time": "1970-01-01T00:00:00.000000009Z"
-}
-`},
- {"json config", nil, hst.Template(), false, true, `{
- "id": "org.chromium.Chromium",
- "path": "/run/current-system/sw/bin/chromium",
- "args": [
- "chromium",
- "--ignore-gpu-blocklist",
- "--disable-smooth-scrolling",
- "--enable-features=UseOzonePlatform",
- "--ozone-platform=wayland"
- ],
- "enablements": 13,
- "session_bus": {
- "see": null,
- "talk": [
- "org.freedesktop.Notifications",
- "org.freedesktop.FileManager1",
- "org.freedesktop.ScreenSaver",
- "org.freedesktop.secrets",
- "org.kde.kwalletd5",
- "org.kde.kwalletd6",
- "org.gnome.SessionManager"
- ],
- "own": [
- "org.chromium.Chromium.*",
- "org.mpris.MediaPlayer2.org.chromium.Chromium.*",
- "org.mpris.MediaPlayer2.chromium.*"
- ],
- "call": {
- "org.freedesktop.portal.*": "*"
- },
- "broadcast": {
- "org.freedesktop.portal.*": "@/org/freedesktop/portal/*"
- },
- "filter": true
- },
- "system_bus": {
- "see": null,
- "talk": [
- "org.bluez",
- "org.freedesktop.Avahi",
- "org.freedesktop.UPower"
- ],
- "own": null,
- "call": null,
- "broadcast": null,
- "filter": true
- },
- "username": "chronos",
- "shell": "/run/current-system/sw/bin/zsh",
- "data": "/var/lib/hakurei/u0/org.chromium.Chromium",
- "dir": "/data/data/org.chromium.Chromium",
- "extra_perms": [
- {
- "ensure": true,
- "path": "/var/lib/hakurei/u0",
- "x": true
- },
- {
- "path": "/var/lib/hakurei/u0/org.chromium.Chromium",
- "r": true,
- "w": true,
- "x": true
- }
- ],
- "identity": 9,
- "groups": [
- "video",
- "dialout",
- "plugdev"
- ],
- "container": {
- "hostname": "localhost",
- "seccomp_flags": 1,
- "seccomp_presets": 1,
- "devel": true,
- "userns": true,
- "net": true,
- "tty": true,
- "multiarch": true,
- "env": {
- "GOOGLE_API_KEY": "AIzaSyBHDrl33hwRp4rMQY0ziRbj8K9LPA6vUCY",
- "GOOGLE_DEFAULT_CLIENT_ID": "77185425430.apps.googleusercontent.com",
- "GOOGLE_DEFAULT_CLIENT_SECRET": "OTJgUOQcT7lO7GsGZq2G4IlT"
- },
- "map_real_uid": true,
- "device": true,
- "filesystem": [
- {
- "src": "/nix/store"
- },
- {
- "src": "/run/current-system"
- },
- {
- "src": "/run/opengl-driver"
- },
- {
- "src": "/var/db/nix-channels"
- },
- {
- "dst": "/data/data/org.chromium.Chromium",
- "src": "/var/lib/hakurei/u0/org.chromium.Chromium",
- "write": true,
- "require": true
- },
- {
- "src": "/dev/dri",
- "dev": true
- }
- ],
- "symlink": [
- [
- "/run/user/65534",
- "/run/user/150"
- ]
- ],
- "etc": "/etc",
- "auto_etc": true,
- "cover": [
- "/var/run/nscd"
- ]
- }
-}
-`},
- }
-
- for _, tc := range testCases {
- t.Run(tc.name, func(t *testing.T) {
- output := new(strings.Builder)
- printShowInstance(output, testTime, tc.instance, tc.config, tc.short, tc.json)
- if got := output.String(); got != tc.want {
- t.Errorf("printShowInstance: got\n%s\nwant\n%s",
- got, tc.want)
- return
- }
- })
- }
-}
-
-func Test_printPs(t *testing.T) {
- testCases := []struct {
- name string
- entries state.Entries
- short, json bool
- want string
- }{
- {"no entries", make(state.Entries), false, false, " Instance PID Application Uptime\n"},
- {"no entries short", make(state.Entries), true, false, ""},
- {"nil instance", state.Entries{testID: nil}, false, false, " Instance PID Application Uptime\n"},
- {"state corruption", state.Entries{app.ID{}: testState}, false, false, " Instance PID Application Uptime\n"},
-
- {"valid pd", state.Entries{testID: &state.State{ID: testID, PID: 1 << 8, Config: new(hst.Config), Time: testAppTime}}, false, false, ` Instance PID Application Uptime
- 8e2c76b0 256 0 (app.hakurei.8e2c76b0) 1h2m32s
-`},
-
- {"valid", state.Entries{testID: testState}, false, false, ` Instance PID Application Uptime
- 8e2c76b0 3735928559 9 (org.chromium.Chromium) 1h2m32s
-`},
- {"valid short", state.Entries{testID: testState}, true, false, "8e2c76b0\n"},
- {"valid json", state.Entries{testID: testState}, false, true, `{
- "8e2c76b066dabe574cf073bdb46eb5c1": {
- "instance": [
- 142,
- 44,
- 118,
- 176,
- 102,
- 218,
- 190,
- 87,
- 76,
- 240,
- 115,
- 189,
- 180,
- 110,
- 181,
- 193
- ],
- "pid": 3735928559,
- "config": {
- "id": "org.chromium.Chromium",
- "path": "/run/current-system/sw/bin/chromium",
- "args": [
- "chromium",
- "--ignore-gpu-blocklist",
- "--disable-smooth-scrolling",
- "--enable-features=UseOzonePlatform",
- "--ozone-platform=wayland"
- ],
- "enablements": 13,
- "session_bus": {
- "see": null,
- "talk": [
- "org.freedesktop.Notifications",
- "org.freedesktop.FileManager1",
- "org.freedesktop.ScreenSaver",
- "org.freedesktop.secrets",
- "org.kde.kwalletd5",
- "org.kde.kwalletd6",
- "org.gnome.SessionManager"
- ],
- "own": [
- "org.chromium.Chromium.*",
- "org.mpris.MediaPlayer2.org.chromium.Chromium.*",
- "org.mpris.MediaPlayer2.chromium.*"
- ],
- "call": {
- "org.freedesktop.portal.*": "*"
- },
- "broadcast": {
- "org.freedesktop.portal.*": "@/org/freedesktop/portal/*"
- },
- "filter": true
- },
- "system_bus": {
- "see": null,
- "talk": [
- "org.bluez",
- "org.freedesktop.Avahi",
- "org.freedesktop.UPower"
- ],
- "own": null,
- "call": null,
- "broadcast": null,
- "filter": true
- },
- "username": "chronos",
- "shell": "/run/current-system/sw/bin/zsh",
- "data": "/var/lib/hakurei/u0/org.chromium.Chromium",
- "dir": "/data/data/org.chromium.Chromium",
- "extra_perms": [
- {
- "ensure": true,
- "path": "/var/lib/hakurei/u0",
- "x": true
- },
- {
- "path": "/var/lib/hakurei/u0/org.chromium.Chromium",
- "r": true,
- "w": true,
- "x": true
- }
- ],
- "identity": 9,
- "groups": [
- "video",
- "dialout",
- "plugdev"
- ],
- "container": {
- "hostname": "localhost",
- "seccomp_flags": 1,
- "seccomp_presets": 1,
- "devel": true,
- "userns": true,
- "net": true,
- "tty": true,
- "multiarch": true,
- "env": {
- "GOOGLE_API_KEY": "AIzaSyBHDrl33hwRp4rMQY0ziRbj8K9LPA6vUCY",
- "GOOGLE_DEFAULT_CLIENT_ID": "77185425430.apps.googleusercontent.com",
- "GOOGLE_DEFAULT_CLIENT_SECRET": "OTJgUOQcT7lO7GsGZq2G4IlT"
- },
- "map_real_uid": true,
- "device": true,
- "filesystem": [
- {
- "src": "/nix/store"
- },
- {
- "src": "/run/current-system"
- },
- {
- "src": "/run/opengl-driver"
- },
- {
- "src": "/var/db/nix-channels"
- },
- {
- "dst": "/data/data/org.chromium.Chromium",
- "src": "/var/lib/hakurei/u0/org.chromium.Chromium",
- "write": true,
- "require": true
- },
- {
- "src": "/dev/dri",
- "dev": true
- }
- ],
- "symlink": [
- [
- "/run/user/65534",
- "/run/user/150"
- ]
- ],
- "etc": "/etc",
- "auto_etc": true,
- "cover": [
- "/var/run/nscd"
- ]
- }
- },
- "time": "1970-01-01T00:00:00.000000009Z"
- }
-}
-`},
- {"valid short json", state.Entries{testID: testState}, true, true, `["8e2c76b066dabe574cf073bdb46eb5c1"]
-`},
- }
-
- for _, tc := range testCases {
- t.Run(tc.name, func(t *testing.T) {
- output := new(strings.Builder)
- printPs(output, testTime, stubStore(tc.entries), tc.short, tc.json)
- if got := output.String(); got != tc.want {
- t.Errorf("printPs: got\n%s\nwant\n%s",
- got, tc.want)
- return
- }
- })
- }
-}
-
-// stubStore implements [state.Store] and returns test samples via [state.Joiner].
-type stubStore state.Entries
-
-func (s stubStore) Join() (state.Entries, error) { return state.Entries(s), nil }
-func (s stubStore) Do(int, func(c state.Cursor)) (bool, error) { panic("unreachable") }
-func (s stubStore) List() ([]int, error) { panic("unreachable") }
-func (s stubStore) Close() error { return nil }