Files
neural-hunt/internal/ws/hub_admin_test.go
jbergner d76f1c3d25
All checks were successful
release-tag / release-image (push) Successful in 4m42s
RC-10-B
2026-08-11 22:46:15 +02:00

43 lines
1.0 KiB
Go

package ws
import (
"context"
"encoding/json"
"testing"
"time"
)
func TestPublishAdminDoesNotReachPublicClients(t *testing.T) {
h := New()
admin := &Client{Admin: true, send: make(chan []byte, 1), closed: make(chan struct{})}
public := &Client{All: true, send: make(chan []byte, 1), closed: make(chan struct{})}
h.mu.Lock()
h.clients[admin] = struct{}{}
h.clients[public] = struct{}{}
h.mu.Unlock()
if err := h.PublishAdmin(context.Background(), Event{Type: "guess_signal", TaskID: "task-1", Data: map[string]any{"score": 42.5}}); err != nil {
t.Fatalf("PublishAdmin: %v", err)
}
select {
case b := <-admin.send:
var e Event
if err := json.Unmarshal(b, &e); err != nil {
t.Fatalf("decode admin event: %v", err)
}
if e.Type != "guess_signal" || e.TaskID != "task-1" {
t.Fatalf("unexpected event: %#v", e)
}
case <-time.After(100 * time.Millisecond):
t.Fatal("admin client did not receive event")
}
select {
case b := <-public.send:
t.Fatalf("public client received admin-only event: %s", b)
default:
}
}