Files
AetherForge/server/internal/api/ai_handler_test.go
drjones df81eb7744 Add fleet ops dashboard, Calibrate enforcement, and dead-code cleanup.
Ship live alerts, pool status, AI monitor, remote agent commands, build manager, and uninstall flow; wire Calibrate settings (WS ping, pool traffic log, retention limits) at runtime and exclude server/data from git.
2026-05-27 09:16:04 -07:00

64 lines
1.4 KiB
Go

package api
import (
"bytes"
"encoding/json"
"net/http"
"net/http/httptest"
"testing"
"crypto-miner-server/internal/db"
"crypto-miner-server/internal/ollama"
)
func TestHandleReportSingleAndArray(t *testing.T) {
database, err := db.New(t.TempDir())
if err != nil {
t.Fatal(err)
}
defer database.Close()
h := NewAIHandler(database)
single := ollama.Report{
AgentID: "agent-1",
Tool: "sleep",
Success: true,
Output: "ok",
}
body, _ := json.Marshal(single)
req := httptest.NewRequest(http.MethodPost, "/api/v1/agent/report", bytes.NewReader(body))
w := httptest.NewRecorder()
h.HandleReport(w, req)
if w.Code != http.StatusOK {
t.Fatalf("single report status %d body %s", w.Code, w.Body.String())
}
arr := []ollama.Report{{
AgentID: "agent-2",
Tool: "check_log",
Success: false,
Output: "fail",
}}
body, _ = json.Marshal(arr)
req = httptest.NewRequest(http.MethodPost, "/api/v1/agent/report", bytes.NewReader(body))
w = httptest.NewRecorder()
h.HandleReport(w, req)
if w.Code != http.StatusOK {
t.Fatalf("array report status %d body %s", w.Code, w.Body.String())
}
activity := h.ActivitySnapshot()
if len(activity) < 2 {
t.Fatalf("expected activity entries, got %d", len(activity))
}
}
func TestEstimateXMRPerDay(t *testing.T) {
out := EstimateXMRPerDay(3_000_000_000)
xmr, ok := out["xmr_per_day"].(float64)
if !ok || xmr <= 0 {
t.Fatalf("expected positive xmr estimate at network hashrate, got %v", out)
}
}