aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/landlock/landlock_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/landlock/landlock_test.go')
-rw-r--r--internal/landlock/landlock_test.go65
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)
+ }
+}