项目文件夹

文件
2026-07-14 10:24:10 +08:00

56 行
1.4 KiB
Go

package router_test
import (
"context"
"errors"
"net/http"
"net/http/httptest"
"strings"
"testing"
"github.com/EthanCodeCraft/xlgo-core/router"
)
func TestRegisterLivenessRoute(t *testing.T) {
r := setupTestRouter()
router.RegisterLivenessRoute(r)
w := httptest.NewRecorder()
r.ServeHTTP(w, httptest.NewRequest(http.MethodGet, "/livez", nil))
if w.Code != http.StatusOK {
t.Fatalf("livez status = %d, want 200", w.Code)
}
if !strings.Contains(w.Body.String(), `"status":"ok"`) {
t.Fatalf("livez body = %s", w.Body.String())
}
}
func TestRegisterReadinessRouteHealthy(t *testing.T) {
r := setupTestRouter()
router.RegisterReadinessRoute(r,
router.HealthCheck{Name: "mysql", Check: func(context.Context) error { return nil }},
)
w := httptest.NewRecorder()
r.ServeHTTP(w, httptest.NewRequest(http.MethodGet, "/readyz", nil))
if w.Code != http.StatusOK {
t.Fatalf("readyz status = %d, want 200", w.Code)
}
}
func TestRegisterReadinessRouteUnhealthy(t *testing.T) {
r := setupTestRouter()
router.RegisterReadinessRoute(r,
router.HealthCheck{Name: "redis", Check: func(context.Context) error { return errors.New("down") }},
)
w := httptest.NewRecorder()
r.ServeHTTP(w, httptest.NewRequest(http.MethodGet, "/readyz", nil))
if w.Code != http.StatusServiceUnavailable {
t.Fatalf("readyz status = %d, want 503", w.Code)
}
if !strings.Contains(w.Body.String(), `"redis":"error"`) {
t.Fatalf("readyz body = %s", w.Body.String())
}
}