Files
NixMsg/cmd/nixmsg/healthcheck_test.go

57 lines
1.4 KiB
Go

package main
import (
"net/http"
"net/http/httptest"
"os"
"path/filepath"
"testing"
)
func TestResolveHealthAddrFromListenAddrFile(t *testing.T) {
dir := t.TempDir()
if err := os.WriteFile(filepath.Join(dir, "listen.addr"), []byte("0.0.0.0:19100\n"), 0o644); err != nil {
t.Fatal(err)
}
got, err := resolveHealthAddr(dir, ":7443")
if err != nil {
t.Fatal(err)
}
if got != "127.0.0.1:19100" {
t.Fatalf("got %q", got)
}
}
func TestResolveHealthAddrFromListen(t *testing.T) {
got, err := resolveHealthAddr(t.TempDir(), ":9555")
if err != nil {
t.Fatal(err)
}
if got != "127.0.0.1:9555" {
t.Fatalf("got %q", got)
}
}
func TestCmdHealthcheckOK(t *testing.T) {
srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
w.WriteHeader(http.StatusOK)
_, _ = w.Write([]byte("ok"))
}))
t.Cleanup(srv.Close)
dir := t.TempDir()
// httptest URL is like http://127.0.0.1:port — write host:port into listen.addr
hostPort := srv.Listener.Addr().String()
if err := os.WriteFile(filepath.Join(dir, "listen.addr"), []byte(hostPort+"\n"), 0o644); err != nil {
t.Fatal(err)
}
cfgPath := filepath.Join(dir, "config.yaml")
if err := os.WriteFile(cfgPath, []byte("listen: \":0\"\ndata_dir: \""+filepath.ToSlash(dir)+"\"\n"), 0o644); err != nil {
t.Fatal(err)
}
t.Setenv("NIXMSG_CONFIG", cfgPath)
if err := cmdHealthcheck(nil); err != nil {
t.Fatal(err)
}
}