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) } }