f5219f3c68
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
41 lines
880 B
Go
41 lines
880 B
Go
package websocket_test
|
|
|
|
import (
|
|
"encoding/json"
|
|
"net/http/httptest"
|
|
"strings"
|
|
"testing"
|
|
"time"
|
|
|
|
wslib "github.com/gorilla/websocket"
|
|
"github.com/user/nanometrics/server/websocket"
|
|
)
|
|
|
|
func TestHubBroadcast(t *testing.T) {
|
|
hub := websocket.NewHub()
|
|
srv := httptest.NewServer(websocket.Handler(hub))
|
|
defer srv.Close()
|
|
|
|
url := "ws" + strings.TrimPrefix(srv.URL, "http") + "/ws"
|
|
conn, _, err := wslib.DefaultDialer.Dial(url, nil)
|
|
if err != nil {
|
|
t.Fatalf("dial: %v", err)
|
|
}
|
|
defer conn.Close()
|
|
|
|
time.Sleep(50 * time.Millisecond)
|
|
|
|
hub.Broadcast(map[string]string{"type": "test", "msg": "hello"})
|
|
|
|
conn.SetReadDeadline(time.Now().Add(time.Second))
|
|
_, data, err := conn.ReadMessage()
|
|
if err != nil {
|
|
t.Fatalf("read: %v", err)
|
|
}
|
|
var got map[string]string
|
|
json.Unmarshal(data, &got)
|
|
if got["msg"] != "hello" {
|
|
t.Errorf("attendu hello, eu %s", got["msg"])
|
|
}
|
|
}
|