status-console-client/chat_test.go

62 lines
1.5 KiB
Go
Raw Normal View History

2019-01-08 21:02:11 +01:00
package main
import (
"crypto/ecdsa"
"testing"
"github.com/status-im/status-term-client/protocol/v1"
"github.com/stretchr/testify/require"
)
type message struct {
chat string
data []byte
}
type PublicChatMock struct {
messages []message
}
func (m *PublicChatMock) SubscribePublicChat(name string) (MessagesSubscription, error) {
return &WhisperSubscription{}, nil
}
func (m *PublicChatMock) SendPublicMessage(chatName string, data []byte, identity *ecdsa.PrivateKey) (string, error) {
m.messages = append(m.messages, message{chatName, data})
return "", nil
}
type ChatMock struct {
*PublicChatMock
}
func (m *ChatMock) RequestPublicMessages(chatName string, params RequestMessagesParams) error {
return nil
}
func TestSendMessage(t *testing.T) {
chatName := "test-chat"
payload := []byte("test message")
chatMock := ChatMock{
&PublicChatMock{},
}
vc, err := NewChatViewController(nil, nil, &chatMock)
require.NoError(t, err)
vc.currentContact = Contact{chatName, ContactPublicChat}
_, err = vc.SendMessage(payload)
require.NoError(t, err)
message := chatMock.messages[0]
require.Equal(t, chatName, message.chat)
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.MessageTypePublicGroupUserMessage, statusMessage.MessageT)
require.Equal(t,
protocol.StatusMessageContent{ChatID: chatName, Text: string(payload)},
statusMessage.Content)
}