package main import ( "os" "path/filepath" "testing" ) func TestListenRequiresAbsoluteSocketPath(t *testing.T) { if _, err := listen("relative.sock"); err == nil { t.Fatal("relative alarm socket path accepted") } } func TestListenRefusesNonSocketPath(t *testing.T) { path := filepath.Join(t.TempDir(), "alarm.sock") if err := os.WriteFile(path, []byte("keep"), 0o600); err != nil { t.Fatal(err) } if _, err := listen(path); err == nil { t.Fatal("non-socket path was replaced") } content, err := os.ReadFile(path) if err != nil || string(content) != "keep" { t.Fatalf("protected path content = %q, %v", content, err) } } func TestListenCreatesUnixSocket(t *testing.T) { path := filepath.Join(t.TempDir(), "runtime", "alarm.sock") listener, err := listen(path) if err != nil { t.Fatal(err) } defer listener.Close() info, err := os.Lstat(path) if err != nil { t.Fatal(err) } if info.Mode()&os.ModeSocket == 0 { t.Fatalf("socket mode = %v", info.Mode()) } }