33package sockets
44
55import (
6- "net"
76 "os"
87 "syscall"
98 "testing"
109)
1110
12- func createTestUnixSocket (t * testing.T , path string ) (listener net.Listener ) {
11+ func TestUnixSocketWithOpts (t * testing.T ) {
12+ socketFile , err := os .CreateTemp ("" , "test*.sock" )
13+ if err != nil {
14+ t .Fatal (err )
15+ }
16+ _ = socketFile .Close ()
17+ defer func () { _ = os .Remove (socketFile .Name ()) }()
18+
1319 uid , gid := os .Getuid (), os .Getgid ()
1420 perms := os .FileMode (0660 )
15- l , err := NewUnixSocketWithOpts (path , WithChown (uid , gid ), WithChmod (perms ))
21+ l , err := NewUnixSocketWithOpts (socketFile . Name () , WithChown (uid , gid ), WithChmod (perms ))
1622 if err != nil {
1723 t .Fatal (err )
1824 }
19- p , err := os .Stat (path )
25+ p , err := os .Stat (socketFile . Name () )
2026 if err != nil {
2127 t .Fatal (err )
2228 }
@@ -28,5 +34,25 @@ func createTestUnixSocket(t *testing.T, path string) (listener net.Listener) {
2834 t .Fatalf ("unexpected file ownership: expected: %d:%d, got: %d:%d" , uid , gid , stat .Uid , stat .Gid )
2935 }
3036 }
31- return l
37+
38+ defer func () { _ = l .Close () }()
39+
40+ echoStr := "hello"
41+ runTest (t , socketFile .Name (), l , echoStr )
42+ }
43+
44+ // TestNewUnixSocket run under root user.
45+ func TestNewUnixSocket (t * testing.T ) {
46+ if os .Getuid () != 0 {
47+ t .Skip ("requires root" )
48+ }
49+ gid := os .Getgid ()
50+ path := "/tmp/test.sock"
51+ echoStr := "hello"
52+ l , err := NewUnixSocket (path , gid )
53+ if err != nil {
54+ t .Fatal (err )
55+ }
56+ defer func () { _ = l .Close () }()
57+ runTest (t , path , l , echoStr )
3258}
0 commit comments