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