ci(automation): pre-ci setup
This commit is contained in:
parent
15ad7a2fb7
commit
4e623fada6
11 changed files with 293 additions and 185 deletions
|
|
@ -125,6 +125,7 @@ func TestIngestBadJSON(t *testing.T) {
|
|||
// Ensure graceful shutdown path does not hang: start a server and shut it down quickly.
|
||||
func TestGracefulShutdown(t *testing.T) {
|
||||
db := newTestDB(t)
|
||||
defer db.Close()
|
||||
srv := &Server{db: db}
|
||||
mux := http.NewServeMux()
|
||||
mux.HandleFunc("GET /health", srv.healthHandler)
|
||||
|
|
@ -138,3 +139,75 @@ func TestGracefulShutdown(t *testing.T) {
|
|||
t.Fatalf("shutdown: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestCORSAllowedOriginAndPreflight(t *testing.T) {
|
||||
handled := false
|
||||
next := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
handled = true
|
||||
w.WriteHeader(http.StatusOK)
|
||||
})
|
||||
handler := corsMiddleware(next)
|
||||
|
||||
req := httptest.NewRequest(http.MethodGet, "/health", nil)
|
||||
req.Header.Set("Origin", "http://localhost:5173")
|
||||
rec := httptest.NewRecorder()
|
||||
handler.ServeHTTP(rec, req)
|
||||
|
||||
if rec.Code != http.StatusOK {
|
||||
t.Fatalf("expected 200, got %d", rec.Code)
|
||||
}
|
||||
if got := rec.Header().Get("Access-Control-Allow-Origin"); got != "http://localhost:5173" {
|
||||
t.Fatalf("expected allow-origin header, got %q", got)
|
||||
}
|
||||
if !handled {
|
||||
t.Fatalf("expected handler to be called")
|
||||
}
|
||||
|
||||
preflight := httptest.NewRequest(http.MethodOptions, "/health", nil)
|
||||
preflight.Header.Set("Origin", "http://localhost:5173")
|
||||
preflightRec := httptest.NewRecorder()
|
||||
handler.ServeHTTP(preflightRec, preflight)
|
||||
if preflightRec.Code != http.StatusNoContent {
|
||||
t.Fatalf("preflight expected 204, got %d", preflightRec.Code)
|
||||
}
|
||||
}
|
||||
|
||||
func TestIngestDBError(t *testing.T) {
|
||||
db := newTestDB(t)
|
||||
db.Close()
|
||||
srv := &Server{db: db}
|
||||
|
||||
ev := DroneEvent{DroneID: "d1", Latitude: 1.0, Longitude: 2.0, Timestamp: "2025-12-06T00:00:00Z"}
|
||||
body, _ := json.Marshal(ev)
|
||||
req := httptest.NewRequest(http.MethodPost, "/ingest", bytes.NewReader(body))
|
||||
rec := httptest.NewRecorder()
|
||||
srv.ingestHandler(rec, req)
|
||||
if rec.Code != http.StatusInternalServerError {
|
||||
t.Fatalf("expected 500, got %d", rec.Code)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSnapshotQueryError(t *testing.T) {
|
||||
db := newTestDB(t)
|
||||
db.Close()
|
||||
srv := &Server{db: db}
|
||||
|
||||
req := httptest.NewRequest(http.MethodGet, "/snapshot?time=2025-12-06T00:00:00Z", nil)
|
||||
rec := httptest.NewRecorder()
|
||||
srv.snapshotHandler(rec, req)
|
||||
if rec.Code != http.StatusInternalServerError {
|
||||
t.Fatalf("expected 500, got %d", rec.Code)
|
||||
}
|
||||
}
|
||||
|
||||
func TestHealthFailure(t *testing.T) {
|
||||
db := newTestDB(t)
|
||||
db.Close()
|
||||
srv := &Server{db: db}
|
||||
req := httptest.NewRequest(http.MethodGet, "/health", nil)
|
||||
rec := httptest.NewRecorder()
|
||||
srv.healthHandler(rec, req)
|
||||
if rec.Code != http.StatusServiceUnavailable {
|
||||
t.Fatalf("expected 503, got %d", rec.Code)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue