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.
123 lines
4.1 KiB
Go
123 lines
4.1 KiB
Go
package api
|
|
|
|
import (
|
|
"bytes"
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/rcourtman/pulse-go-rewrite/internal/monitoring"
|
|
)
|
|
|
|
func TestNewDockerAgentHandlers_DefaultMonitorFromMultiTenant(t *testing.T) {
|
|
monitor := &monitoring.Monitor{}
|
|
mtm := &monitoring.MultiTenantMonitor{}
|
|
setUnexportedField(t, mtm, "monitors", map[string]*monitoring.Monitor{
|
|
"default": monitor,
|
|
})
|
|
|
|
handler := NewDockerAgentHandlers(mtm, nil, nil, nil)
|
|
if handler.legacyMonitor != monitor {
|
|
t.Fatalf("expected legacy monitor to be set from multi-tenant default")
|
|
}
|
|
}
|
|
|
|
func TestDockerAgentHandlers_HandleDockerHostActions_Routes(t *testing.T) {
|
|
handler, monitor := newDockerAgentHandlers(t, nil)
|
|
hostID := seedDockerHost(t, monitor)
|
|
|
|
req := httptest.NewRequest(http.MethodPost, "/api/agents/docker/hosts/"+hostID+"/allow-reenroll", nil)
|
|
rec := httptest.NewRecorder()
|
|
handler.HandleDockerHostActions(rec, req)
|
|
if rec.Code != http.StatusOK {
|
|
t.Fatalf("allow-reenroll status = %d, want 200", rec.Code)
|
|
}
|
|
|
|
req = httptest.NewRequest(http.MethodPut, "/api/agents/docker/hosts/"+hostID+"/unhide", nil)
|
|
rec = httptest.NewRecorder()
|
|
handler.HandleDockerHostActions(rec, req)
|
|
if rec.Code != http.StatusOK {
|
|
t.Fatalf("unhide status = %d, want 200", rec.Code)
|
|
}
|
|
|
|
req = httptest.NewRequest(http.MethodPut, "/api/agents/docker/hosts/"+hostID+"/pending-uninstall", nil)
|
|
rec = httptest.NewRecorder()
|
|
handler.HandleDockerHostActions(rec, req)
|
|
if rec.Code != http.StatusOK {
|
|
t.Fatalf("pending-uninstall status = %d, want 200", rec.Code)
|
|
}
|
|
|
|
body := []byte(`{"displayName":"New Name"}`)
|
|
req = httptest.NewRequest(http.MethodPut, "/api/agents/docker/hosts/"+hostID+"/display-name", bytes.NewReader(body))
|
|
rec = httptest.NewRecorder()
|
|
handler.HandleDockerHostActions(rec, req)
|
|
if rec.Code != http.StatusOK {
|
|
t.Fatalf("display-name status = %d, want 200", rec.Code)
|
|
}
|
|
|
|
req = httptest.NewRequest(http.MethodPost, "/api/agents/docker/hosts/"+hostID+"/check-updates", nil)
|
|
rec = httptest.NewRecorder()
|
|
handler.HandleDockerHostActions(rec, req)
|
|
if rec.Code != http.StatusOK {
|
|
t.Fatalf("check-updates status = %d, want 200", rec.Code)
|
|
}
|
|
if !strings.Contains(rec.Body.String(), "Check for updates") {
|
|
t.Fatalf("expected check updates message")
|
|
}
|
|
}
|
|
|
|
func TestDockerAgentHandlers_HandleDockerHostActions_DeleteRoute(t *testing.T) {
|
|
handler, monitor := newDockerAgentHandlers(t, nil)
|
|
hostID := seedDockerHost(t, monitor)
|
|
|
|
req := httptest.NewRequest(http.MethodDelete, "/api/agents/docker/hosts/"+hostID, nil)
|
|
rec := httptest.NewRecorder()
|
|
handler.HandleDockerHostActions(rec, req)
|
|
if rec.Code != http.StatusOK {
|
|
t.Fatalf("delete status = %d, want 200", rec.Code)
|
|
}
|
|
}
|
|
|
|
func TestDockerAgentHandlers_HandleDockerHostActions_MethodNotAllowed(t *testing.T) {
|
|
handler := &DockerAgentHandlers{}
|
|
|
|
req := httptest.NewRequest(http.MethodGet, "/api/agents/docker/hosts/host-1/unknown", nil)
|
|
rec := httptest.NewRecorder()
|
|
handler.HandleDockerHostActions(rec, req)
|
|
if rec.Code != http.StatusMethodNotAllowed {
|
|
t.Fatalf("expected 405, got %d", rec.Code)
|
|
}
|
|
}
|
|
|
|
func TestDockerAgentHandlers_HandleDeleteHost_Errors(t *testing.T) {
|
|
handler, _ := newDockerAgentHandlers(t, nil)
|
|
|
|
req := httptest.NewRequest(http.MethodGet, "/api/agents/docker/hosts/host-1", nil)
|
|
rec := httptest.NewRecorder()
|
|
handler.HandleDeleteHost(rec, req)
|
|
if rec.Code != http.StatusMethodNotAllowed {
|
|
t.Fatalf("expected 405, got %d", rec.Code)
|
|
}
|
|
|
|
req = httptest.NewRequest(http.MethodDelete, "/api/agents/docker/hosts/", nil)
|
|
rec = httptest.NewRecorder()
|
|
handler.HandleDeleteHost(rec, req)
|
|
if rec.Code != http.StatusBadRequest {
|
|
t.Fatalf("expected 400, got %d", rec.Code)
|
|
}
|
|
|
|
req = httptest.NewRequest(http.MethodDelete, "/api/agents/docker/hosts/missing?hide=true", nil)
|
|
rec = httptest.NewRecorder()
|
|
handler.HandleDeleteHost(rec, req)
|
|
if rec.Code != http.StatusNotFound {
|
|
t.Fatalf("expected 404, got %d", rec.Code)
|
|
}
|
|
|
|
req = httptest.NewRequest(http.MethodDelete, "/api/agents/docker/hosts/missing?force=true", nil)
|
|
rec = httptest.NewRecorder()
|
|
handler.HandleDeleteHost(rec, req)
|
|
if rec.Code != http.StatusOK {
|
|
t.Fatalf("expected 200, got %d", rec.Code)
|
|
}
|
|
}
|