diff options
Diffstat (limited to 'internal/landlock/landlock_test.go')
| -rw-r--r-- | internal/landlock/landlock_test.go | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/internal/landlock/landlock_test.go b/internal/landlock/landlock_test.go new file mode 100644 index 00000000..6f30fc6b --- /dev/null +++ b/internal/landlock/landlock_test.go @@ -0,0 +1,65 @@ +package landlock_test + +import ( + "testing" + "unsafe" + + "hakurei.app/internal/landlock" +) + +func TestLandlockString(t *testing.T) { + t.Parallel() + + testCases := []struct { + name string + rulesetAttr *landlock.RulesetAttr + want string + }{ + {"nil", nil, "NULL"}, + {"zero", new(landlock.RulesetAttr), "0"}, + {"some", &landlock.RulesetAttr{Scoped: landlock.LANDLOCK_SCOPE_SIGNAL}, "scoped: signal"}, + {"set", &landlock.RulesetAttr{ + HandledAccessFS: landlock.LANDLOCK_ACCESS_FS_MAKE_SYM | landlock.LANDLOCK_ACCESS_FS_IOCTL_DEV | landlock.LANDLOCK_ACCESS_FS_WRITE_FILE, + HandledAccessNet: landlock.LANDLOCK_ACCESS_NET_BIND_TCP, + Scoped: landlock.LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET | landlock.LANDLOCK_SCOPE_SIGNAL, + }, "fs: write_file make_sym fs_ioctl_dev, net: bind_tcp, scoped: abstract_unix_socket signal"}, + {"all", &landlock.RulesetAttr{ + HandledAccessFS: landlock.LANDLOCK_ACCESS_FS_EXECUTE | + landlock.LANDLOCK_ACCESS_FS_WRITE_FILE | + landlock.LANDLOCK_ACCESS_FS_READ_FILE | + landlock.LANDLOCK_ACCESS_FS_READ_DIR | + landlock.LANDLOCK_ACCESS_FS_REMOVE_DIR | + landlock.LANDLOCK_ACCESS_FS_REMOVE_FILE | + landlock.LANDLOCK_ACCESS_FS_MAKE_CHAR | + landlock.LANDLOCK_ACCESS_FS_MAKE_DIR | + landlock.LANDLOCK_ACCESS_FS_MAKE_REG | + landlock.LANDLOCK_ACCESS_FS_MAKE_SOCK | + landlock.LANDLOCK_ACCESS_FS_MAKE_FIFO | + landlock.LANDLOCK_ACCESS_FS_MAKE_BLOCK | + landlock.LANDLOCK_ACCESS_FS_MAKE_SYM | + landlock.LANDLOCK_ACCESS_FS_REFER | + landlock.LANDLOCK_ACCESS_FS_TRUNCATE | + landlock.LANDLOCK_ACCESS_FS_IOCTL_DEV, + HandledAccessNet: landlock.LANDLOCK_ACCESS_NET_BIND_TCP | + landlock.LANDLOCK_ACCESS_NET_CONNECT_TCP, + Scoped: landlock.LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET | + landlock.LANDLOCK_SCOPE_SIGNAL, + }, "fs: execute write_file read_file read_dir remove_dir remove_file make_char make_dir make_reg make_sock make_fifo make_block make_sym fs_refer fs_truncate fs_ioctl_dev, net: bind_tcp connect_tcp, scoped: abstract_unix_socket signal"}, + } + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + if got := tc.rulesetAttr.String(); got != tc.want { + t.Errorf("String: %s, want %s", got, tc.want) + } + }) + } +} + +func TestLandlockAttrSize(t *testing.T) { + t.Parallel() + want := 24 + if got := unsafe.Sizeof(landlock.RulesetAttr{}); got != uintptr(want) { + t.Errorf("Sizeof: %d, want %d", got, want) + } +} |
