fix readiness router health contract

This commit is contained in:
kami
2026-07-26 20:49:21 +04:00
parent f748be194a
commit 18e35bcd45
2 changed files with 42 additions and 3 deletions
+40
View File
@@ -3,6 +3,7 @@ package admin
import (
"context"
"encoding/json"
"net/http"
"net/http/httptest"
"orchestra/internal/authz"
"orchestra/internal/domain"
@@ -11,6 +12,45 @@ import (
"testing"
)
func TestReadinessRequiresRouterAndReturnsJSON(t *testing.T) {
s, err := store.Open(t.TempDir())
if err != nil {
t.Fatal(err)
}
h := (&Server{Store: s, RouterReady: false}).Readiness
r := httptest.NewRequest(http.MethodGet, "/readyz", nil)
w := httptest.NewRecorder()
h(w, r)
if w.Code != http.StatusServiceUnavailable {
t.Fatalf("status=%d body=%s", w.Code, w.Body)
}
if got := w.Header().Get("Content-Type"); got != "application/json" {
t.Fatalf("content type=%q", got)
}
var body struct {
Ready bool `json:"ready"`
Checks []Probe `json:"checks"`
}
if err := json.Unmarshal(w.Body.Bytes(), &body); err != nil {
t.Fatal(err)
}
if body.Ready || len(body.Checks) != 2 || body.Checks[1].Name != "router" || body.Checks[1].Ready {
t.Fatalf("readiness=%+v", body)
}
}
func TestReadinessSucceedsWhenStoreAndRouterReady(t *testing.T) {
s, err := store.Open(t.TempDir())
if err != nil {
t.Fatal(err)
}
w := httptest.NewRecorder()
(&Server{Store: s, RouterReady: true}).Readiness(w, httptest.NewRequest(http.MethodGet, "/readyz", nil))
if w.Code != http.StatusOK || !strings.Contains(w.Body.String(), `"ready":true`) {
t.Fatalf("status=%d body=%s", w.Code, w.Body)
}
}
func TestDiagnosticsRequiresFullControl(t *testing.T) {
s, err := store.Open(t.TempDir())
if err != nil {