package websocket import ( "testing" "github.com/google/uuid" "github.com/gorilla/websocket" "github.com/stretchr/testify/assert" ) func TestClient(t *testing.T) { assert := assert.New(t) chanMsg := make(chan *Message) sm := NewSessionManager() srv := NewServer(chanMsg, sm) assert.Panics(func() { NewClient(srv, nil) }) client := NewClient(srv, &websocket.Conn{}) assert.NotNil(client) client = &Client{ server: srv, id: uuid.New(), out: make(chan *Message, channelBufSize), writeQuit: make(chan bool), readQuit: make(chan bool), } client.handleInput(&Message{}) go client.handleInput(&Message{Subject: "a"}) msg := <-chanMsg assert.Equal("a", msg.Subject) // msg catched by sessionManager -> not read from chanMsg needed client.handleInput(&Message{ ID: uuid.New(), Subject: SessionMessageInit, }) }