57 lines
1.4 KiB
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)
|
|
}
|
|
}
|