Files
Pulse/internal/api/docker_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

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)
}
}