Jaypore CI

> Jaypore CI: Minimal, Offline, Local CI system.
Log | Files | Refs | README | LICENSE

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 }