Standardize neon cyan on #00e8f5, wire SacredPageHeader across Builds/Path Tracer/LOTL, dedupe Pages.css, align Path Tracer chrome, drop dead wealth-deck CSS, add prefers-color-scheme shell + HelpTip, sidebar version from package.json build inject, and Vitest CSS regression guards.
49 lines
1.1 KiB
Go
49 lines
1.1 KiB
Go
package api
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"crypto-miner-server/internal/db"
|
|
)
|
|
|
|
func TestPathTracerSessionSurvivesHandlerRestart(t *testing.T) {
|
|
database, err := db.New(t.TempDir())
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
t.Cleanup(func() { _ = database.Close() })
|
|
hub := NewWSHub(database)
|
|
|
|
sess := &TraceSession{
|
|
ID: "sess-restart-abcdef12",
|
|
AgentIDs: []string{"agent-1"},
|
|
CreatedAt: time.Now().Add(-10 * time.Minute),
|
|
Ready: true,
|
|
clientPrivKey: "PRIV",
|
|
clientPubKey: "PUB",
|
|
Hops: []*HopInfo{{
|
|
AgentID: "agent-1",
|
|
AgentName: "Hop One",
|
|
ExternalIP: "203.0.113.10",
|
|
Port: 51820,
|
|
Status: HopReady,
|
|
}},
|
|
}
|
|
|
|
h1 := NewPathTracerHandler(hub)
|
|
h1.mu.Lock()
|
|
h1.sessions[sess.ID] = sess
|
|
h1.mu.Unlock()
|
|
h1.persistSession(sess)
|
|
|
|
h2 := NewPathTracerHandler(hub)
|
|
restored := h2.getSession(sess.ID)
|
|
if restored == nil {
|
|
t.Fatal("session missing after handler restart")
|
|
}
|
|
if !restored.Ready || restored.clientPubKey != "PUB" {
|
|
t.Fatalf("restored session incomplete: ready=%v pub=%q", restored.Ready, restored.clientPubKey)
|
|
}
|
|
}
|