package main import ( "net/http" "net/http/httptest" "testing" ) func TestAPIHandlerExposesHealthWithoutDatabase(t *testing.T) { req := httptest.NewRequest(http.MethodGet, "/healthz", nil) rec := httptest.NewRecorder() newAPIHandler(nil).ServeHTTP(rec, req) if rec.Code != http.StatusOK { t.Fatalf("health status = %d", rec.Code) } } // TestServerRoutesRequireWorkloadVerifyToBeWired pins a real, known gap // rather than leaving it silent: newAPIHandler wires ServerRegistrar and // ResultSubmitter, but never a WorkloadVerify -- and Service.serverMutation // treats a nil WorkloadVerify as fatal for BOTH the register and result // routes, regardless of whether their own dependency is present. So today, // in the actual running binary, POST /v1/servers/{id}/register and // /v1/servers/{id}/result both always 503, independent of a real database or // real request. This test should start failing (and be updated, not // deleted) the day a real WorkloadVerify is wired -- that's the intended // signal, not a bug in the test. func TestServerRoutesRequireWorkloadVerifyToBeWired(t *testing.T) { handler := newAPIHandler(nil) for _, path := range []string{"/v1/servers/server-1/register", "/v1/servers/server-1/result"} { req := httptest.NewRequest(http.MethodPost, path, nil) req.Header.Set("Idempotency-Key", "regression-pin-key-123456") req.Header.Set("Authorization", "Bearer anything") rec := httptest.NewRecorder() handler.ServeHTTP(rec, req) if rec.Code != http.StatusServiceUnavailable { t.Fatalf("%s status = %d, want 503 (WorkloadVerify still unwired) -- if this changed, update this test rather than deleting it", path, rec.Code) } } }