Store data on a per sessions basis, based on the Gin interface.

This commit is contained in:
Ola Holmström
2016-12-09 22:34:36 +01:00
parent ca5ae7e3c4
commit 8f11201a19
5 changed files with 101 additions and 2 deletions
+53
View File
@@ -5,6 +5,7 @@ import (
"github.com/gorilla/websocket"
"net/http"
"net/http/httptest"
"strconv"
"strings"
"testing"
"testing/quick"
@@ -141,6 +142,58 @@ func TestHandlers(t *testing.T) {
NewDialer(server.URL)
}
func TestMetadata(t *testing.T) {
echo := NewTestServer()
echo.m.HandleConnect(func(session *Session) {
session.Set("stamp", time.Now().UnixNano())
})
echo.m.HandleMessage(func(session *Session, msg []byte) {
stamp := session.MustGet("stamp").(int64)
session.Write([]byte(strconv.Itoa(int(stamp))))
})
server := httptest.NewServer(echo)
defer server.Close()
fn := func(msg string) bool {
conn, err := NewDialer(server.URL)
defer conn.Close()
if err != nil {
t.Error(err)
return false
}
conn.WriteMessage(websocket.TextMessage, []byte(msg))
_, ret, err := conn.ReadMessage()
if err != nil {
t.Error(err)
return false
}
stamp, err := strconv.Atoi(string(ret))
if err != nil {
t.Error(err)
return false
}
diff := int(time.Now().UnixNano()) - stamp
if diff <= 0 {
t.Errorf("diff should be above 0 %d", diff)
return false
}
return true
}
if err := quick.Check(fn, nil); err != nil {
t.Error(err)
}
}
func TestUpgrader(t *testing.T) {
broadcast := NewTestServer()
broadcast.m.HandleMessage(func(session *Session, msg []byte) {