status-console-client/chat_test.go

87 lines
2.0 KiB
Go
Raw Normal View History

2019-01-08 21:02:11 +01:00
package main
import (
2019-02-11 09:40:43 +01:00
"context"
2019-01-08 21:02:11 +01:00
"testing"
2019-06-14 22:25:02 +02:00
"time"
2019-01-08 21:02:11 +01:00
2019-06-14 22:25:02 +02:00
"github.com/golang/mock/gomock"
2019-01-08 21:02:11 +01:00
"github.com/stretchr/testify/require"
2019-06-14 22:25:02 +02:00
"github.com/ethereum/go-ethereum/crypto"
2019-01-08 21:02:11 +01:00
2019-06-14 22:25:02 +02:00
"github.com/status-im/status-console-client/protocol/client"
"github.com/status-im/status-console-client/protocol/subscription"
protomock "github.com/status-im/status-console-client/protocol/v1/mock"
)
2019-02-11 09:40:43 +01:00
func TestSendMessage(t *testing.T) {
2019-06-14 22:25:02 +02:00
ctrl := gomock.NewController(t)
defer ctrl.Finish()
protoMock := protomock.NewMockProtocol(ctrl)
chatName := "test-chat"
payload := []byte("test message")
identity, err := crypto.GenerateKey()
require.NoError(t, err)
2019-01-08 21:02:11 +01:00
db, err := client.InitializeTmpDB()
require.NoError(t, err)
defer db.Close()
2019-02-11 09:40:43 +01:00
2019-06-14 22:25:02 +02:00
messenger := client.NewMessenger(identity, protoMock, db)
2019-06-06 10:59:28 +02:00
vc := NewChatViewController(nil, nil, messenger, nil)
2019-02-11 09:40:43 +01:00
2019-06-14 22:25:02 +02:00
protoMock.EXPECT().
Subscribe(
gomock.Any(),
gomock.Any(),
gomock.Any(),
).
Return(subscription.New(), nil).
Times(1)
protoMock.EXPECT().
Request(
gomock.Any(),
gomock.Any(),
).
Return(nil).
Times(1)
err = vc.Select(client.Contact{
Name: chatName,
Type: client.ContactPublicRoom,
Topic: chatName,
})
2019-01-08 21:02:11 +01:00
require.NoError(t, err)
// close reading loops
close(vc.cancel)
2019-01-08 21:02:11 +01:00
2019-06-14 22:25:02 +02:00
var sendPayload = []byte{}
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
defer cancel()
protoMock.EXPECT().
Send(
gomock.AssignableToTypeOf(ctx),
gomock.AssignableToTypeOf(sendPayload),
gomock.Any(),
).
Return([]byte{0x01}, nil).
Times(1)
err = vc.Send(payload)
2019-01-08 21:02:11 +01:00
require.NoError(t, err)
2019-06-14 22:25:02 +02:00
// TODO: move to another layer
// statusMessage, err := protocol.DecodeMessage(message.data)
// require.NoError(t, err)
// require.EqualValues(t, payload, statusMessage.Text)
// require.Equal(t, protocol.ContentTypeTextPlain, statusMessage.ContentT)
// require.Equal(t, protocol.MessageTypePublicGroup, statusMessage.MessageT)
// require.Equal(t,
// protocol.Content{ChatID: chatName, Text: string(payload)},
// statusMessage.Content)
2019-01-08 21:02:11 +01:00
}