mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-02-18 00:17:39 +01:00
Add tests for AI intelligence, Docker/K8s agents, log redaction, and general router helper functions.
99 lines
2.8 KiB
Go
99 lines
2.8 KiB
Go
package api
|
|
|
|
import (
|
|
"bytes"
|
|
"context"
|
|
"encoding/json"
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"testing"
|
|
|
|
"github.com/rcourtman/pulse-go-rewrite/internal/monitoring"
|
|
)
|
|
|
|
func TestDockerAgentHandlers_SetMonitorAndTenant(t *testing.T) {
|
|
handler := &DockerAgentHandlers{}
|
|
monitor := &monitoring.Monitor{}
|
|
handler.SetMonitor(monitor)
|
|
if handler.legacyMonitor != monitor {
|
|
t.Fatalf("expected legacy monitor to be set")
|
|
}
|
|
|
|
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 TestDockerAgentHandlers_GetMonitorFallback(t *testing.T) {
|
|
legacy := &monitoring.Monitor{}
|
|
handler := &DockerAgentHandlers{legacyMonitor: legacy}
|
|
|
|
if got := handler.getMonitor(context.Background()); got != legacy {
|
|
t.Fatalf("expected legacy monitor fallback")
|
|
}
|
|
}
|
|
|
|
func TestDockerAgentHandlers_HandleReport_Errors(t *testing.T) {
|
|
handler := &DockerAgentHandlers{}
|
|
|
|
req := httptest.NewRequest(http.MethodGet, "/api/agents/docker/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/docker/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 TestDockerAgentHandlers_HandleCommandAck_Errors(t *testing.T) {
|
|
handler := &DockerAgentHandlers{}
|
|
|
|
req := httptest.NewRequest(http.MethodPost, "/api/agents/docker/commands/123", nil)
|
|
rec := httptest.NewRecorder()
|
|
handler.HandleCommandAck(rec, req)
|
|
if rec.Code != http.StatusNotFound {
|
|
t.Fatalf("expected 404, got %d", rec.Code)
|
|
}
|
|
|
|
req = httptest.NewRequest(http.MethodPost, "/api/agents/docker/commands//ack", nil)
|
|
rec = httptest.NewRecorder()
|
|
handler.HandleCommandAck(rec, req)
|
|
if rec.Code != http.StatusBadRequest {
|
|
t.Fatalf("expected 400, got %d", rec.Code)
|
|
}
|
|
|
|
req = httptest.NewRequest(http.MethodPost, "/api/agents/docker/commands/cmd-1/ack", bytes.NewReader([]byte("{bad")))
|
|
rec = httptest.NewRecorder()
|
|
handler.HandleCommandAck(rec, req)
|
|
if rec.Code != http.StatusBadRequest {
|
|
t.Fatalf("expected 400, got %d", rec.Code)
|
|
}
|
|
|
|
payload := map[string]string{
|
|
"hostId": "host-1",
|
|
"status": "unknown",
|
|
}
|
|
body, _ := json.Marshal(payload)
|
|
req = httptest.NewRequest(http.MethodPost, "/api/agents/docker/commands/cmd-2/ack", bytes.NewReader(body))
|
|
rec = httptest.NewRecorder()
|
|
handler.HandleCommandAck(rec, req)
|
|
if rec.Code != http.StatusBadRequest {
|
|
t.Fatalf("expected 400, got %d", rec.Code)
|
|
}
|
|
}
|