aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/app/app_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/app/app_test.go')
-rw-r--r--internal/app/app_test.go97
1 files changed, 70 insertions, 27 deletions
diff --git a/internal/app/app_test.go b/internal/app/app_test.go
index 0c545023..a031d434 100644
--- a/internal/app/app_test.go
+++ b/internal/app/app_test.go
@@ -37,7 +37,35 @@ func TestApp(t *testing.T) {
}{
{
"nixos permissive defaults no enablements", new(stubNixOS),
- &hst.Config{Username: "chronos", Home: m("/home/chronos")},
+ &hst.Config{Container: &hst.ContainerConfig{
+ Userns: true, HostNet: true, HostAbstract: true, Tty: true,
+
+ Filesystem: []hst.FilesystemConfigJSON{
+ {FilesystemConfig: &hst.FSBind{
+ Target: container.AbsFHSRoot,
+ Source: container.AbsFHSRoot,
+ Write: true,
+ Special: true,
+ }},
+ {FilesystemConfig: &hst.FSBind{
+ Source: container.AbsFHSDev.Append("kvm"),
+ Device: true,
+ Optional: true,
+ }},
+ {FilesystemConfig: &hst.FSBind{
+ Target: container.AbsFHSEtc,
+ Source: container.AbsFHSEtc,
+ Special: true,
+ }},
+ },
+
+ Username: "chronos",
+ Shell: m("/run/current-system/sw/bin/zsh"),
+ Home: m("/home/chronos"),
+
+ Path: m("/run/current-system/sw/bin/zsh"),
+ Args: []string{"/run/current-system/sw/bin/zsh"},
+ }},
state.ID{
0x4a, 0x45, 0x0b, 0x65,
0x96, 0xd7, 0xbc, 0x15,
@@ -70,7 +98,6 @@ func TestApp(t *testing.T) {
DevWritable(m("/dev/"), true).
Tmpfs(m("/dev/shm"), 0, 01777).
Bind(m("/dev/kvm"), m("/dev/kvm"), container.BindWritable|container.BindDevice|container.BindOptional).
- Readonly(m("/var/run/nscd"), 0755).
Etc(m("/etc/"), "4a450b6596d7bc15bd01780eb9a607ac").
Tmpfs(m("/run/user/1971"), 8192, 0755).
Tmpfs(m("/run/nscd"), 8192, 0755).
@@ -93,11 +120,8 @@ func TestApp(t *testing.T) {
"nixos permissive defaults chromium", new(stubNixOS),
&hst.Config{
ID: "org.chromium.Chromium",
- Args: []string{"zsh", "-c", "exec chromium "},
Identity: 9,
Groups: []string{"video"},
- Username: "chronos",
- Home: m("/home/chronos"),
SessionBus: &dbus.Config{
Talk: []string{
"org.freedesktop.Notifications",
@@ -130,6 +154,41 @@ func TestApp(t *testing.T) {
Filter: true,
},
Enablements: hst.NewEnablements(hst.EWayland | hst.EDBus | hst.EPulse),
+
+ Container: &hst.ContainerConfig{
+ Userns: true, HostNet: true, HostAbstract: true, Tty: true,
+
+ Filesystem: []hst.FilesystemConfigJSON{
+ {FilesystemConfig: &hst.FSBind{
+ Target: container.AbsFHSRoot,
+ Source: container.AbsFHSRoot,
+ Write: true,
+ Special: true,
+ }},
+ {FilesystemConfig: &hst.FSBind{
+ Source: container.AbsFHSDev.Append("dri"),
+ Device: true,
+ Optional: true,
+ }},
+ {FilesystemConfig: &hst.FSBind{
+ Source: container.AbsFHSDev.Append("kvm"),
+ Device: true,
+ Optional: true,
+ }},
+ {FilesystemConfig: &hst.FSBind{
+ Target: container.AbsFHSEtc,
+ Source: container.AbsFHSEtc,
+ Special: true,
+ }},
+ },
+
+ Username: "chronos",
+ Shell: m("/run/current-system/sw/bin/zsh"),
+ Home: m("/home/chronos"),
+
+ Path: m("/run/current-system/sw/bin/zsh"),
+ Args: []string{"zsh", "-c", "exec chromium "},
+ },
},
state.ID{
0xeb, 0xf0, 0x83, 0xd1,
@@ -207,7 +266,6 @@ func TestApp(t *testing.T) {
Tmpfs(m("/dev/shm"), 0, 01777).
Bind(m("/dev/dri"), m("/dev/dri"), container.BindWritable|container.BindDevice|container.BindOptional).
Bind(m("/dev/kvm"), m("/dev/kvm"), container.BindWritable|container.BindDevice|container.BindOptional).
- Readonly(m("/var/run/nscd"), 0755).
Etc(m("/etc/"), "ebf083d1b175911782d413369b64ce7c").
Tmpfs(m("/run/user/1971"), 8192, 0755).
Tmpfs(m("/run/nscd"), 8192, 0755).
@@ -236,10 +294,7 @@ func TestApp(t *testing.T) {
"nixos chromium direct wayland", new(stubNixOS),
&hst.Config{
ID: "org.chromium.Chromium",
- Path: m("/nix/store/yqivzpzzn7z5x0lq9hmbzygh45d8rhqd-chromium-start"),
Enablements: hst.NewEnablements(hst.EWayland | hst.EDBus | hst.EPulse),
- Shell: m("/run/current-system/sw/bin/zsh"),
-
Container: &hst.ContainerConfig{
Userns: true, HostNet: true, MapRealUID: true, Env: nil,
Filesystem: []hst.FilesystemConfigJSON{
@@ -257,6 +312,12 @@ func TestApp(t *testing.T) {
f(&hst.FSBind{Source: m("/etc/"), Target: m("/etc/"), Special: true}),
f(&hst.FSBind{Source: m("/var/lib/persist/module/hakurei/0/1"), Write: true, Ensure: true}),
},
+
+ Username: "u0_a1",
+ Shell: m("/run/current-system/sw/bin/zsh"),
+ Home: m("/var/lib/persist/module/hakurei/0/1"),
+
+ Path: m("/nix/store/yqivzpzzn7z5x0lq9hmbzygh45d8rhqd-chromium-start"),
},
SystemBus: &dbus.Config{
Talk: []string{"org.bluez", "org.freedesktop.Avahi", "org.freedesktop.UPower"},
@@ -278,8 +339,6 @@ func TestApp(t *testing.T) {
},
DirectWayland: true,
- Username: "u0_a1",
- Home: m("/var/lib/persist/module/hakurei/0/1"),
Identity: 1, Groups: []string{},
},
state.ID{
@@ -461,7 +520,6 @@ func (s stubOsFileReadCloser) Write([]byte) (int, error) { panic("attempting to
func (s stubOsFileReadCloser) Stat() (fs.FileInfo, error) { panic("attempting to call Stat") }
type stubNixOS struct {
- lookPathErr map[string]error
usernameErr map[string]error
}
@@ -617,21 +675,6 @@ func (k *stubNixOS) evalSymlinks(path string) (string, error) {
}
}
-func (k *stubNixOS) lookPath(file string) (string, error) {
- if k.lookPathErr != nil {
- if err, ok := k.lookPathErr[file]; ok {
- return "", err
- }
- }
-
- switch file {
- case "zsh":
- return "/run/current-system/sw/bin/zsh", nil
- default:
- panic(fmt.Sprintf("attempted to look up unexpected executable %q", file))
- }
-}
-
func (k *stubNixOS) lookupGroupId(name string) (string, error) {
switch name {
case "video":