main_test.go (1051B)
1 package main 2 3 import ( 4 "encoding/json" 5 "net/http" 6 "net/http/httptest" 7 "testing" 8 ) 9 10 func TestHealthHandler_StatusCode(t *testing.T) { 11 req := httptest.NewRequest(http.MethodGet, "/health", nil) 12 rec := httptest.NewRecorder() 13 14 healthHandler(rec, req) 15 16 if rec.Code != http.StatusOK { 17 t.Fatalf("expected status 200, got %d", rec.Code) 18 } 19 } 20 21 func TestHealthHandler_ContentType(t *testing.T) { 22 req := httptest.NewRequest(http.MethodGet, "/health", nil) 23 rec := httptest.NewRecorder() 24 25 healthHandler(rec, req) 26 27 ct := rec.Header().Get("Content-Type") 28 if ct != "application/json" { 29 t.Fatalf("expected Content-Type application/json, got %q", ct) 30 } 31 } 32 33 func TestHealthHandler_Body(t *testing.T) { 34 req := httptest.NewRequest(http.MethodGet, "/health", nil) 35 rec := httptest.NewRecorder() 36 37 healthHandler(rec, req) 38 39 var resp HealthResponse 40 if err := json.NewDecoder(rec.Body).Decode(&resp); err != nil { 41 t.Fatalf("failed to decode response: %v", err) 42 } 43 if resp.Status != "ok" { 44 t.Fatalf("expected status %q, got %q", "ok", resp.Status) 45 } 46 }