Make sure the image URL is returned when a replied message is deleted
When we reply to our own message with an image, we didn't set the URL of the image of the message, which resulted in the image not being displayed correctly.
This commit is contained in:
parent
d8eb038d7d
commit
37653638bc
|
@ -2,19 +2,13 @@ package protocol
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"crypto/ecdsa"
|
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/stretchr/testify/suite"
|
"github.com/stretchr/testify/suite"
|
||||||
"go.uber.org/zap"
|
|
||||||
|
|
||||||
gethbridge "github.com/status-im/status-go/eth-node/bridge/geth"
|
|
||||||
"github.com/status-im/status-go/eth-node/crypto"
|
|
||||||
"github.com/status-im/status-go/eth-node/types"
|
|
||||||
"github.com/status-im/status-go/protocol/common"
|
"github.com/status-im/status-go/protocol/common"
|
||||||
"github.com/status-im/status-go/protocol/protobuf"
|
"github.com/status-im/status-go/protocol/protobuf"
|
||||||
"github.com/status-im/status-go/protocol/tt"
|
"github.com/status-im/status-go/server"
|
||||||
"github.com/status-im/status-go/waku"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestMessengerDeleteMessageSuite(t *testing.T) {
|
func TestMessengerDeleteMessageSuite(t *testing.T) {
|
||||||
|
@ -22,41 +16,7 @@ func TestMessengerDeleteMessageSuite(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
type MessengerDeleteMessageSuite struct {
|
type MessengerDeleteMessageSuite struct {
|
||||||
suite.Suite
|
MessengerBaseTestSuite
|
||||||
m *Messenger // main instance of Messenger
|
|
||||||
privateKey *ecdsa.PrivateKey // private key for the main instance of Messenger
|
|
||||||
// If one wants to send messages between different instances of Messenger,
|
|
||||||
// a single waku service should be shared.
|
|
||||||
shh types.Waku
|
|
||||||
logger *zap.Logger
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *MessengerDeleteMessageSuite) SetupTest() {
|
|
||||||
s.logger = tt.MustCreateTestLogger()
|
|
||||||
|
|
||||||
config := waku.DefaultConfig
|
|
||||||
config.MinimumAcceptedPoW = 0
|
|
||||||
shh := waku.New(&config, s.logger)
|
|
||||||
s.shh = gethbridge.NewGethWakuWrapper(shh)
|
|
||||||
s.Require().NoError(shh.Start())
|
|
||||||
|
|
||||||
s.m = s.newMessenger()
|
|
||||||
s.privateKey = s.m.identity
|
|
||||||
_, err := s.m.Start()
|
|
||||||
s.Require().NoError(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *MessengerDeleteMessageSuite) TearDownTest() {
|
|
||||||
s.Require().NoError(s.m.Shutdown())
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *MessengerDeleteMessageSuite) newMessenger() *Messenger {
|
|
||||||
privateKey, err := crypto.GenerateKey()
|
|
||||||
s.Require().NoError(err)
|
|
||||||
|
|
||||||
messenger, err := newMessengerWithKey(s.shh, privateKey, s.logger, nil)
|
|
||||||
s.Require().NoError(err)
|
|
||||||
return messenger
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *MessengerDeleteMessageSuite) TestDeleteMessage() {
|
func (s *MessengerDeleteMessageSuite) TestDeleteMessage() {
|
||||||
|
@ -518,3 +478,58 @@ func (s *MessengerDeleteMessageSuite) TestDeleteMessageAndChatIsAlreadyRead() {
|
||||||
// Receiver (us) no longer has unread messages and it's not negative
|
// Receiver (us) no longer has unread messages and it's not negative
|
||||||
s.Require().Equal(0, int(state.Response.Chats()[0].UnviewedMessagesCount))
|
s.Require().Equal(0, int(state.Response.Chats()[0].UnviewedMessagesCount))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *MessengerDeleteMessageSuite) TestDeleteMessageReplyToImage() {
|
||||||
|
theirMessenger := s.newMessenger()
|
||||||
|
_, err := theirMessenger.Start()
|
||||||
|
s.Require().NoError(err)
|
||||||
|
|
||||||
|
theirChat := CreateOneToOneChat("Their 1TO1", &s.privateKey.PublicKey, s.m.transport)
|
||||||
|
err = theirMessenger.SaveChat(theirChat)
|
||||||
|
s.Require().NoError(err)
|
||||||
|
|
||||||
|
ourChat := CreateOneToOneChat("Our 1TO1", &theirMessenger.identity.PublicKey, s.m.transport)
|
||||||
|
err = s.m.SaveChat(ourChat)
|
||||||
|
s.Require().NoError(err)
|
||||||
|
|
||||||
|
inputMessage := buildTestMessage(*theirChat)
|
||||||
|
sendResponse, err := theirMessenger.SendChatMessage(context.Background(), inputMessage)
|
||||||
|
s.NoError(err)
|
||||||
|
s.Require().Len(sendResponse.Messages(), 1)
|
||||||
|
|
||||||
|
response, err := WaitOnMessengerResponse(
|
||||||
|
s.m,
|
||||||
|
func(r *MessengerResponse) bool { return len(r.messages) == 1 },
|
||||||
|
"no messages",
|
||||||
|
)
|
||||||
|
s.Require().NoError(err)
|
||||||
|
s.Require().Len(response.Chats(), 1)
|
||||||
|
s.Require().Len(response.Messages(), 1)
|
||||||
|
|
||||||
|
ogMessage := sendResponse.Messages()[0]
|
||||||
|
|
||||||
|
// create an http server
|
||||||
|
mediaServer, err := server.NewMediaServer(nil, nil, nil)
|
||||||
|
s.Require().NoError(err)
|
||||||
|
s.Require().NotNil(mediaServer)
|
||||||
|
s.Require().NoError(mediaServer.Start())
|
||||||
|
|
||||||
|
theirMessenger.httpServer = mediaServer
|
||||||
|
|
||||||
|
// We reply to our own message with an image
|
||||||
|
imageMessage, err := buildImageWithoutAlbumIDMessage(*theirChat)
|
||||||
|
s.NoError(err)
|
||||||
|
|
||||||
|
imageMessage.ResponseTo = ogMessage.ID
|
||||||
|
|
||||||
|
_, err = theirMessenger.SendChatMessages(context.Background(), []*common.Message{imageMessage})
|
||||||
|
s.NoError(err)
|
||||||
|
|
||||||
|
// We check that the URL is correctly returned
|
||||||
|
sendResponse, err = theirMessenger.DeleteMessageAndSend(context.Background(), ogMessage.ID)
|
||||||
|
|
||||||
|
s.Require().NoError(err)
|
||||||
|
s.Require().Len(sendResponse.Messages(), 1)
|
||||||
|
s.Require().NotEmpty(sendResponse.Messages()[0].ImageLocalURL)
|
||||||
|
s.Require().NoError(theirMessenger.Shutdown())
|
||||||
|
}
|
||||||
|
|
|
@ -229,7 +229,9 @@ func (m *Messenger) DeleteMessageAndSend(ctx context.Context, messageID string)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
response.AddMessages(updatedMessages)
|
response.AddMessages(updatedMessages)
|
||||||
|
m.prepareMessages(response.messages)
|
||||||
}
|
}
|
||||||
|
|
||||||
response.AddChat(chat)
|
response.AddChat(chat)
|
||||||
|
|
Loading…
Reference in New Issue