Files
AetherForge/server/internal/api/fleet_role_test.go
AetherForge 7b2d41cda8
Some checks failed
CI Docker Mining Proof / Linux agent hashrate proof (push) Has been cancelled
Expand P2 test coverage: mining chain, spread lanes, path forge, WS/beacon, E2E onion, file handling
2026-06-07 04:58:55 -07:00

89 lines
2.4 KiB
Go

package api
import (
"encoding/json"
"testing"
"crypto-miner-server/internal/db"
)
func TestAuthResponseFleetRoleHintWhenEnabled(t *testing.T) {
database, err := db.New(t.TempDir())
if err != nil {
t.Fatal(err)
}
t.Cleanup(func() { _ = database.Close() })
hub := NewWSHub(database)
hub.SetFleetSecret("test-secret")
hub.SetServerPolicy(ServerPolicy{FleetRolesEnabled: true})
conn, _ := dialAgentWS(t, hub)
resp := authAgentConn(t, conn, map[string]interface{}{
"agent_id": "agent-seed-aa", "fleet_secret": "test-secret",
"wallet": "4" + repeatChar('C', 94), "hostname": "seed-host", "platform": "windows", "version": "test",
"fleet_role": "auto", "seeder_mode": true,
})
var payload map[string]interface{}
if err := json.Unmarshal(resp.Payload, &payload); err != nil {
t.Fatal(err)
}
if payload["success"] != true {
t.Fatalf("auth failed: %v", payload["error"])
}
hint, _ := payload["fleet_role_hint"].(string)
if hint != "seeder" && hint != "miner" {
t.Fatalf("expected fleet_role_hint, got %q", hint)
}
}
func TestAuthResponseOmitsFleetRoleHintWhenDisabled(t *testing.T) {
database, err := db.New(t.TempDir())
if err != nil {
t.Fatal(err)
}
t.Cleanup(func() { _ = database.Close() })
hub := NewWSHub(database)
hub.SetFleetSecret("test-secret")
conn, _ := dialAgentWS(t, hub)
resp := authAgentConn(t, conn, map[string]interface{}{
"agent_id": "agent-miner-1", "fleet_secret": "test-secret",
"wallet": "4" + repeatChar('D', 94), "hostname": "miner-host", "platform": "windows", "version": "test",
"fleet_role": "miner",
})
var payload map[string]interface{}
if err := json.Unmarshal(resp.Payload, &payload); err != nil {
t.Fatal(err)
}
if _, ok := payload["fleet_role_hint"]; ok {
t.Fatal("fleet_role_hint should be omitted when fleet roles disabled")
}
}
func TestIngestFleetPressureSetsEmberwakeHeat(t *testing.T) {
database, err := db.New(t.TempDir())
if err != nil {
t.Fatal(err)
}
t.Cleanup(func() { _ = database.Close() })
hub := NewWSHub(database)
b := map[string]interface{}{
"agent_id": "a1",
"fleet_role": "miner",
"hashrate_pressure": 0.75,
}
hub.ingestFleetPressure("a1", b)
if b["emberwake_heat"] != 0.75 {
t.Fatalf("broadcast heat=%v", b["emberwake_heat"])
}
hub.mu.RLock()
tel := hub.agentLiveTelemetry["a1"]
hub.mu.RUnlock()
if tel["emberwake_heat"] != 0.75 {
t.Fatalf("stored heat=%v", tel["emberwake_heat"])
}
}