package handler import ( "net/http" "net/http/httptest" "strings" "testing" ) func TestDenyLegacyAPIDisabledByDefault(t *testing.T) { t.Setenv(legacyAPIEnvVar, "") h := &Handler{Logger: newTestLogger()} rr := httptest.NewRecorder() denied := h.denyLegacyAPI(rr, "/api/event/vm/create") if !denied { t.Fatal("expected legacy API to be denied by default") } if rr.Code != http.StatusGone { t.Fatalf("expected %d, got %d", http.StatusGone, rr.Code) } if !strings.Contains(rr.Body.String(), "deprecated") { t.Fatalf("unexpected response body: %s", rr.Body.String()) } } func TestDenyLegacyAPIEnabledViaEnv(t *testing.T) { t.Setenv(legacyAPIEnvVar, "1") h := &Handler{Logger: newTestLogger()} rr := httptest.NewRecorder() denied := h.denyLegacyAPI(rr, "/api/event/vm/create") if denied { t.Fatal("expected legacy API to be allowed when env var is set") } if rr.Body.Len() != 0 { t.Fatalf("expected no response body write, got: %s", rr.Body.String()) } } func TestVmCreateEventHonorsLegacyGate(t *testing.T) { h := &Handler{Logger: newTestLogger()} t.Run("disabled", func(t *testing.T) { t.Setenv(legacyAPIEnvVar, "") req := httptest.NewRequest(http.MethodPost, "/api/event/vm/create", strings.NewReader("{invalid")) rr := httptest.NewRecorder() h.VmCreateEvent(rr, req) if rr.Code != http.StatusGone { t.Fatalf("expected %d, got %d", http.StatusGone, rr.Code) } }) t.Run("enabled", func(t *testing.T) { t.Setenv(legacyAPIEnvVar, "1") req := httptest.NewRequest(http.MethodPost, "/api/event/vm/create", strings.NewReader("{invalid")) rr := httptest.NewRecorder() h.VmCreateEvent(rr, req) if rr.Code != http.StatusBadRequest { t.Fatalf("expected %d when gate is open, got %d", http.StatusBadRequest, rr.Code) } }) }