3
0

Fixes websocket server and session tests

This commit is contained in:
Vivek Patel 2021-05-14 16:44:52 +05:30 committed by Denis Arh
parent 48cb4842f4
commit 8eef51d445
2 changed files with 21 additions and 16 deletions

View File

@ -46,18 +46,18 @@ func TestWebsocketSend_ExistingSessions(t *testing.T) {
req.Empty(s2)
req.NoError(ws.Send("msg", "msg1", s1User))
req.Equal(s1.String(), `{"msg":"msg1"}`)
req.Equal(s1.String(), `{"@type":"msg","@value":"msg1"}`)
req.Equal(s2.String(), "")
req.NoError(ws.Send("msg", "msg2", s2User))
req.Equal(s1.String(), `{"msg":"msg1"}`)
req.Equal(s2.String(), `{"msg":"msg2"}`)
req.Equal(s1.String(), `{"@type":"msg","@value":"msg1"}`)
req.Equal(s2.String(), `{"@type":"msg","@value":"msg2"}`)
req.NoError(ws.Send("both", "msg3", s1User, s2User))
req.Equal(s1.String(), `{"msg":"msg1"}{"both":"msg3"}`)
req.Equal(s2.String(), `{"msg":"msg2"}{"both":"msg3"}`)
req.Equal(s1.String(), `{"@type":"msg","@value":"msg1"}{"@type":"both","@value":"msg3"}`)
req.Equal(s2.String(), `{"@type":"msg","@value":"msg2"}{"@type":"both","@value":"msg3"}`)
req.NoError(ws.Send("all", "msg4"))
req.Equal(s1.String(), `{"msg":"msg1"}{"both":"msg3"}{"all":"msg4"}`)
req.Equal(s2.String(), `{"msg":"msg2"}{"both":"msg3"}{"all":"msg4"}`)
req.Equal(s1.String(), `{"@type":"msg","@value":"msg1"}{"@type":"both","@value":"msg3"}{"@type":"all","@value":"msg4"}`)
req.Equal(s2.String(), `{"@type":"msg","@value":"msg2"}{"@type":"both","@value":"msg3"}{"@type":"all","@value":"msg4"}`)
}

View File

@ -2,8 +2,10 @@ package websocket
import (
"github.com/cortezaproject/corteza-server/pkg/auth"
"github.com/cortezaproject/corteza-server/pkg/logger"
"github.com/cortezaproject/corteza-server/pkg/options"
"github.com/stretchr/testify/require"
"go.uber.org/zap"
"testing"
"time"
)
@ -17,37 +19,40 @@ func TestSession_procRawMessage(t *testing.T) {
userID uint64 = 123
)
if testing.Verbose() {
s.logger = logger.MakeDebugLogger()
} else {
s.logger = zap.NewNop()
}
req.NoError(err)
s.server.accessToken = jwtHandler
jwt := jwtHandler.Encode(auth.NewIdentity(userID, 456, 789))
req.EqualError(s.procRawMessage([]byte("{}")), "empty payload")
req.EqualError(s.procRawMessage([]byte("{}")), "unauthenticated session")
req.Nil(s.identity)
req.EqualError(s.procRawMessage([]byte(`{"auth":{}}`)), "unauthorized: token contains an invalid number of segments")
req.EqualError(s.procRawMessage([]byte(`{"@type": "credentials", "@value": {"accessToken": ""}}`)), "unauthorized: token contains an invalid number of segments")
req.Nil(s.identity)
req.EqualError(s.procRawMessage([]byte(`{"auth":{"access_token": ""}}`)), "unauthorized: token contains an invalid number of segments")
req.Nil(s.identity)
req.NoError(s.procRawMessage([]byte(`{"auth":{"access_token": "` + jwt + `"}}`)))
req.NoError(s.procRawMessage([]byte(`{"@type": "credentials", "@value": {"accessToken": "` + jwt + `"}}`)))
req.NotNil(s.identity)
req.Equal(userID, s.identity.Identity())
req.EqualError(s.procRawMessage([]byte("{}")), "empty payload")
req.EqualError(s.procRawMessage([]byte("{}")), "unknown message type ''")
req.Equal(userID, s.identity.Identity())
// Repeat with the same user
jwt = jwtHandler.Encode(auth.NewIdentity(userID, 456, 789))
req.NoError(s.procRawMessage([]byte(`{"auth":{"access_token": "` + jwt + `"}}`)))
req.NoError(s.procRawMessage([]byte(`{"@type": "credentials", "@value": {"accessToken": "` + jwt + `"}}`)))
req.NotNil(s.identity)
req.Equal(userID, s.identity.Identity())
// Try to authenticate on an existing authenticated session as a different user
jwt = jwtHandler.Encode(auth.NewIdentity(userID+1, 456, 789))
req.EqualError(s.procRawMessage([]byte(`{"auth":{"access_token": "`+jwt+`"}}`)), "unauthorized: identity does not match")
req.EqualError(s.procRawMessage([]byte(`{"@type": "credentials", "@value": {"accessToken": "`+jwt+`"}}`)), "unauthorized: identity does not match")
}