package health import ( "net/http" "net/http/httptest" "os" "path/filepath" "testing" ) func TestCheckProbeURLEmptyAlwaysPasses(t *testing.T) { ok, err := CheckProbeURL("") if err != nil { t.Fatalf("CheckProbeURL(\"\"): %v", err) } if !ok { t.Error("empty probe URL should return ok=true (check disabled)") } } func TestCheckProbeURL200(t *testing.T) { srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusOK) })) defer srv.Close() ok, err := CheckProbeURL(srv.URL) if err != nil { t.Fatalf("CheckProbeURL: %v", err) } if !ok { t.Error("expected ok=true on 200") } } func TestCheckProbeURLNon200(t *testing.T) { srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusServiceUnavailable) })) defer srv.Close() ok, err := CheckProbeURL(srv.URL) if err != nil { t.Fatalf("CheckProbeURL: %v", err) } if ok { t.Error("expected ok=false on 503") } } func TestCheckProbeURLNetworkError(t *testing.T) { // Port 1 is reserved (tcpmux) and never bound by Linux defaults. _, err := CheckProbeURL("http://127.0.0.1:1") if err == nil { t.Error("expected error for unreachable URL, got nil") } } func TestCheckDiskWritableHappyPath(t *testing.T) { dir := t.TempDir() ok, err := CheckDiskWritable(dir) if err != nil { t.Fatalf("CheckDiskWritable: %v", err) } if !ok { t.Error("expected ok=true on writable temp dir") } // Probe file should have been cleaned up. if _, err := os.Stat(filepath.Join(dir, ".update-probe")); !os.IsNotExist(err) { t.Errorf("probe file not cleaned up: stat err=%v", err) } } func TestCheckDiskWritableMissingDir(t *testing.T) { _, err := CheckDiskWritable("/this/path/does/not/exist") if err == nil { t.Error("expected error for missing dataDir, got nil") } }