blob: 6219727e190753fd16a5ba0fb5f7c1e8c674dabf [file] [log] [blame] [edit]
// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: MPL-2.0
package listenerutil
import (
"io/ioutil"
"os"
osuser "os/user"
"strconv"
"testing"
)
func TestUnixSocketListener(t *testing.T) {
t.Run("ids", func(t *testing.T) {
socket, err := ioutil.TempFile("", "socket")
if err != nil {
t.Fatal(err)
}
defer os.Remove(socket.Name())
uid, gid := os.Getuid(), os.Getgid()
u, err := osuser.LookupId(strconv.Itoa(uid))
if err != nil {
t.Fatal(err)
}
user := u.Username
g, err := osuser.LookupGroupId(strconv.Itoa(gid))
if err != nil {
t.Fatal(err)
}
group := g.Name
l, err := UnixSocketListener(socket.Name(), &UnixSocketsConfig{
User: user,
Group: group,
Mode: "644",
})
if err != nil {
t.Fatal(err)
}
defer l.Close()
fi, err := os.Stat(socket.Name())
if err != nil {
t.Fatal(err)
}
mode, err := strconv.ParseUint("644", 8, 32)
if err != nil {
t.Fatal(err)
}
if fi.Mode().Perm() != os.FileMode(mode) {
t.Fatalf("failed to set permissions on the socket file")
}
})
t.Run("names", func(t *testing.T) {
socket, err := ioutil.TempFile("", "socket")
if err != nil {
t.Fatal(err)
}
defer os.Remove(socket.Name())
uid, gid := os.Getuid(), os.Getgid()
l, err := UnixSocketListener(socket.Name(), &UnixSocketsConfig{
User: strconv.Itoa(uid),
Group: strconv.Itoa(gid),
Mode: "644",
})
if err != nil {
t.Fatal(err)
}
defer l.Close()
fi, err := os.Stat(socket.Name())
if err != nil {
t.Fatal(err)
}
mode, err := strconv.ParseUint("644", 8, 32)
if err != nil {
t.Fatal(err)
}
if fi.Mode().Perm() != os.FileMode(mode) {
t.Fatalf("failed to set permissions on the socket file")
}
})
}