Pulse/internal/api/kubernetes_agents_error_test.go
rcourtman bfa648ddd5 Test: expand api feature test coverage
Add tests for AI intelligence, Docker/K8s agents, log redaction, and general router helper functions.
2026-02-02 22:02:22 +00:00

104 lines
3.3 KiB
Go

package api
import (
"bytes"
"net/http"
"net/http/httptest"
"testing"
"github.com/rcourtman/pulse-go-rewrite/internal/monitoring"
)
func TestKubernetesAgentHandlers_SetMultiTenantMonitor(t *testing.T) {
handler := &KubernetesAgentHandlers{}
monitor := &monitoring.Monitor{}
mtm := &monitoring.MultiTenantMonitor{}
setUnexportedField(t, mtm, "monitors", map[string]*monitoring.Monitor{
"default": monitor,
})
handler.SetMultiTenantMonitor(mtm)
if handler.mtMonitor != mtm {
t.Fatalf("expected multi-tenant monitor to be set")
}
if handler.legacyMonitor != monitor {
t.Fatalf("expected legacy monitor to be set from multi-tenant default")
}
}
func TestKubernetesAgentHandlers_HandleReport_Errors(t *testing.T) {
handler := &KubernetesAgentHandlers{}
req := httptest.NewRequest(http.MethodGet, "/api/agents/kubernetes/report", nil)
rec := httptest.NewRecorder()
handler.HandleReport(rec, req)
if rec.Code != http.StatusMethodNotAllowed {
t.Fatalf("expected 405, got %d", rec.Code)
}
req = httptest.NewRequest(http.MethodPost, "/api/agents/kubernetes/report", bytes.NewReader([]byte("{bad")))
rec = httptest.NewRecorder()
handler.HandleReport(rec, req)
if rec.Code != http.StatusBadRequest {
t.Fatalf("expected 400, got %d", rec.Code)
}
}
func TestKubernetesAgentHandlers_HandleClusterActions_MethodNotAllowed(t *testing.T) {
handler := &KubernetesAgentHandlers{}
req := httptest.NewRequest(http.MethodGet, "/api/agents/kubernetes/clusters/cluster-1/unknown", nil)
rec := httptest.NewRecorder()
handler.HandleClusterActions(rec, req)
if rec.Code != http.StatusMethodNotAllowed {
t.Fatalf("expected 405, got %d", rec.Code)
}
}
func TestKubernetesAgentHandlers_HandleDeleteCluster_Errors(t *testing.T) {
handler, _ := newKubernetesAgentHandlers(t, nil)
req := httptest.NewRequest(http.MethodGet, "/api/agents/kubernetes/clusters/cluster-1", nil)
rec := httptest.NewRecorder()
handler.HandleDeleteCluster(rec, req)
if rec.Code != http.StatusMethodNotAllowed {
t.Fatalf("expected 405, got %d", rec.Code)
}
req = httptest.NewRequest(http.MethodDelete, "/api/agents/kubernetes/clusters/", nil)
rec = httptest.NewRecorder()
handler.HandleDeleteCluster(rec, req)
if rec.Code != http.StatusBadRequest {
t.Fatalf("expected 400, got %d", rec.Code)
}
req = httptest.NewRequest(http.MethodDelete, "/api/agents/kubernetes/clusters/missing", nil)
rec = httptest.NewRecorder()
handler.HandleDeleteCluster(rec, req)
if rec.Code != http.StatusOK {
t.Fatalf("expected 200, got %d", rec.Code)
}
}
func TestKubernetesAgentHandlers_HandleAllowReenroll_MissingID(t *testing.T) {
handler := &KubernetesAgentHandlers{}
req := httptest.NewRequest(http.MethodPost, "/api/agents/kubernetes/clusters//allow-reenroll", nil)
rec := httptest.NewRecorder()
handler.HandleAllowReenroll(rec, req)
if rec.Code != http.StatusBadRequest {
t.Fatalf("expected 400, got %d", rec.Code)
}
}
func TestKubernetesAgentHandlers_HandleSetCustomDisplayName_InvalidJSON(t *testing.T) {
handler := &KubernetesAgentHandlers{}
req := httptest.NewRequest(http.MethodPut, "/api/agents/kubernetes/clusters/cluster-1/display-name", bytes.NewReader([]byte("{bad")))
rec := httptest.NewRecorder()
handler.HandleSetCustomDisplayName(rec, req)
if rec.Code != http.StatusBadRequest {
t.Fatalf("expected 400, got %d", rec.Code)
}
}