Skip to content

Commit 180fbb3

Browse files
committed
fix(contacts): hole in condition checking for unknown contact message
Fixes status-im/status-app#21067
1 parent 7db3f14 commit 180fbb3

2 files changed

Lines changed: 56 additions & 1 deletion

File tree

protocol/messenger_contact_requests_test.go

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -841,6 +841,33 @@ func (s *MessengerContactRequestSuite) TestAcceptLatestContactRequestForContact(
841841
s.Require().True(resp.Contacts[0].Mutual())
842842
}
843843

844+
func (s *MessengerContactRequestSuite) TestAcceptLatestContactRequestForContactWhenMessageMissing() {
845+
messageText := "hello!"
846+
847+
theirMessenger := s.newMessenger()
848+
849+
contactID := types.EncodeHex(crypto.FromECDSAPub(&theirMessenger.identity.PublicKey))
850+
request := &requests.SendContactRequest{
851+
ID: contactID,
852+
Message: messageText,
853+
}
854+
s.sendContactRequest(request, s.m)
855+
contactRequest := s.receiveContactRequest(messageText, theirMessenger)
856+
857+
err := theirMessenger.persistence.DeleteMessage(contactRequest.ID)
858+
s.Require().NoError(err)
859+
860+
myID := types.EncodeHex(crypto.FromECDSAPub(&s.m.identity.PublicKey))
861+
resp, err := theirMessenger.AcceptLatestContactRequestForContact(context.Background(), &requests.AcceptLatestContactRequestForContact{ID: types.Hex2Bytes(myID)})
862+
s.Require().NoError(err)
863+
s.Require().NotNil(resp)
864+
865+
contactRequestMsg := s.findFirstByContentType(resp.Messages(), protobuf.ChatMessage_CONTACT_REQUEST)
866+
s.Require().NotNil(contactRequestMsg)
867+
s.Require().Equal(defaultContactRequestID(myID), contactRequestMsg.ID)
868+
s.Require().Equal(common.ContactRequestStateAccepted, contactRequestMsg.ContactRequestState)
869+
}
870+
844871
func (s *MessengerContactRequestSuite) TestDismissLatestContactRequestForContact() {
845872
messageText := "hello!"
846873

@@ -871,6 +898,33 @@ func (s *MessengerContactRequestSuite) TestDismissLatestContactRequestForContact
871898
s.Require().Equal(common.ContactRequestStateDismissed, resp.ActivityCenterNotifications()[0].Message.ContactRequestState)
872899
}
873900

901+
func (s *MessengerContactRequestSuite) TestDismissLatestContactRequestForContactWhenMessageMissing() {
902+
messageText := "hello!"
903+
904+
theirMessenger := s.newMessenger()
905+
906+
contactID := types.EncodeHex(crypto.FromECDSAPub(&theirMessenger.identity.PublicKey))
907+
request := &requests.SendContactRequest{
908+
ID: contactID,
909+
Message: messageText,
910+
}
911+
s.sendContactRequest(request, s.m)
912+
contactRequest := s.receiveContactRequest(messageText, theirMessenger)
913+
914+
err := theirMessenger.persistence.DeleteMessage(contactRequest.ID)
915+
s.Require().NoError(err)
916+
917+
myID := types.EncodeHex(crypto.FromECDSAPub(&s.m.identity.PublicKey))
918+
resp, err := theirMessenger.DismissLatestContactRequestForContact(context.Background(), &requests.DismissLatestContactRequestForContact{ID: types.Hex2Bytes(myID)})
919+
s.Require().NoError(err)
920+
s.Require().NotNil(resp)
921+
922+
contactRequestMsg := s.findFirstByContentType(resp.Messages(), protobuf.ChatMessage_CONTACT_REQUEST)
923+
s.Require().NotNil(contactRequestMsg)
924+
s.Require().Equal(defaultContactRequestID(myID), contactRequestMsg.ID)
925+
s.Require().Equal(common.ContactRequestStateDismissed, contactRequestMsg.ContactRequestState)
926+
}
927+
874928
func (s *MessengerContactRequestSuite) TestPairedDevicesRemoveContact() {
875929
messageText := "hello!"
876930

protocol/messenger_contacts.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1196,9 +1196,10 @@ func (m *Messenger) retrieveLatestContactRequestIDForContact(contactID string) (
11961196
}
11971197

11981198
contactRequestID, err := m.persistence.LatestPendingContactRequestIDForContact(contactID)
1199-
if err == common.ErrRecordNotFound {
1199+
if err == common.ErrRecordNotFound || contactRequestID == "" {
12001200
// No pending request found, use a default one
12011201
contactRequestID = defaultContactRequestID(contactID)
1202+
err = nil
12021203
}
12031204
return contactRequestID, err
12041205
}

0 commit comments

Comments
 (0)