mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-04-28 11:30:15 +00:00
Add tests for AI intelligence, Docker/K8s agents, log redaction, and general router helper functions.
104 lines
3.3 KiB
Go
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)
|
|
}
|
|
}
|