Test: add TestBobSendsContactRequestAfterDecliningOneFromAlice test case (#3468)
This commit is contained in:
parent
189c7a6919
commit
40e57f1127
|
@ -885,6 +885,113 @@ func (s *MessengerContactRequestSuite) TestAliceResendsContactRequestAfterRemovi
|
||||||
s.Require().Len(theirMessenger.MutualContacts(), 1)
|
s.Require().Len(theirMessenger.MutualContacts(), 1)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// The scenario tested is as follow:
|
||||||
|
// 1) Alice sends a contact request to Bob
|
||||||
|
// 2) Bob declines the contact request from Alice
|
||||||
|
// 3) Bob sends a contact request to Alice
|
||||||
|
// 4) Alice and Bob are mutual contacts (because Alice's CR is "pending" on her side), Both CRs are accepted
|
||||||
|
func (s *MessengerContactRequestSuite) TestBobSendsContactRequestAfterDecliningOneFromAlice() {
|
||||||
|
messageTextAlice := "hello, Bobby!"
|
||||||
|
|
||||||
|
alice := s.m
|
||||||
|
|
||||||
|
bob := s.newMessenger(s.shh)
|
||||||
|
_, err := bob.Start()
|
||||||
|
s.Require().NoError(err)
|
||||||
|
|
||||||
|
bobID := types.EncodeHex(crypto.FromECDSAPub(&bob.identity.PublicKey))
|
||||||
|
|
||||||
|
// Alice sends a contact request to bob
|
||||||
|
requestFromAlice := &requests.SendContactRequest{
|
||||||
|
ID: bobID,
|
||||||
|
Message: messageTextAlice,
|
||||||
|
}
|
||||||
|
s.sendContactRequest(requestFromAlice, alice)
|
||||||
|
|
||||||
|
contactRequest := s.receiveContactRequest(messageTextAlice, bob)
|
||||||
|
s.Require().NotNil(contactRequest)
|
||||||
|
|
||||||
|
// Bob declines the contact request
|
||||||
|
s.declineContactRequest(contactRequest, bob)
|
||||||
|
|
||||||
|
messageTextBob := "hello, Alice!"
|
||||||
|
|
||||||
|
aliceID := types.EncodeHex(crypto.FromECDSAPub(&alice.identity.PublicKey))
|
||||||
|
|
||||||
|
// Bob sends a contact request to Alice
|
||||||
|
requestFromBob := &requests.SendContactRequest{
|
||||||
|
ID: aliceID,
|
||||||
|
Message: messageTextBob,
|
||||||
|
}
|
||||||
|
|
||||||
|
// Send contact request
|
||||||
|
resp, err := bob.SendContactRequest(context.Background(), requestFromBob)
|
||||||
|
s.Require().NoError(err)
|
||||||
|
s.Require().NotNil(resp)
|
||||||
|
|
||||||
|
// Check CR message, it should be accepted
|
||||||
|
s.Require().Len(resp.Messages(), 1)
|
||||||
|
contactRequest = resp.Messages()[0]
|
||||||
|
s.Require().Equal(common.ContactRequestStateAccepted, contactRequest.ContactRequestState)
|
||||||
|
s.Require().Equal(requestFromBob.Message, contactRequest.Text)
|
||||||
|
|
||||||
|
// Check pending notification
|
||||||
|
s.Require().Len(resp.ActivityCenterNotifications(), 1)
|
||||||
|
s.Require().Equal(ActivityCenterNotificationTypeContactRequest, resp.ActivityCenterNotifications()[0].Type)
|
||||||
|
s.Require().Equal(contactRequest.ID, resp.ActivityCenterNotifications()[0].Message.ID)
|
||||||
|
s.Require().Equal(contactRequest.ContactRequestState, resp.ActivityCenterNotifications()[0].Message.ContactRequestState)
|
||||||
|
s.Require().Equal(resp.ActivityCenterNotifications()[0].Read, true)
|
||||||
|
|
||||||
|
// Check contacts Bob's side
|
||||||
|
s.Require().Len(resp.Contacts, 1)
|
||||||
|
contact := resp.Contacts[0]
|
||||||
|
s.Require().True(contact.mutual())
|
||||||
|
|
||||||
|
// Make sure contact is added on the sender side
|
||||||
|
contacts := bob.AddedContacts()
|
||||||
|
s.Require().Len(contacts, 1)
|
||||||
|
s.Require().Equal(ContactRequestStateSent, contacts[0].ContactRequestLocalState)
|
||||||
|
s.Require().NotNil(contacts[0].DisplayName)
|
||||||
|
|
||||||
|
// Wait for the message to reach its destination
|
||||||
|
resp, err = WaitOnMessengerResponse(
|
||||||
|
alice,
|
||||||
|
func(r *MessengerResponse) bool {
|
||||||
|
return len(r.Contacts) == 1 && len(r.Messages()) == 1 && len(r.ActivityCenterNotifications()) == 1
|
||||||
|
},
|
||||||
|
"no messages",
|
||||||
|
)
|
||||||
|
|
||||||
|
// Check contact request has been received
|
||||||
|
s.Require().NoError(err)
|
||||||
|
s.Require().NotNil(resp)
|
||||||
|
|
||||||
|
// Check CR message, it should be accepted
|
||||||
|
s.Require().Len(resp.Messages(), 1)
|
||||||
|
contactRequest = resp.Messages()[0]
|
||||||
|
s.Require().Equal(common.ContactRequestStateAccepted, contactRequest.ContactRequestState)
|
||||||
|
s.Require().Equal(requestFromBob.Message, contactRequest.Text)
|
||||||
|
|
||||||
|
// Check pending notification
|
||||||
|
s.Require().Len(resp.ActivityCenterNotifications(), 1)
|
||||||
|
s.Require().Equal(ActivityCenterNotificationTypeContactRequest, resp.ActivityCenterNotifications()[0].Type)
|
||||||
|
s.Require().Equal(contactRequest.ID, resp.ActivityCenterNotifications()[0].Message.ID)
|
||||||
|
s.Require().Equal(contactRequest.ContactRequestState, resp.ActivityCenterNotifications()[0].Message.ContactRequestState)
|
||||||
|
s.Require().Equal(resp.ActivityCenterNotifications()[0].Read, false)
|
||||||
|
|
||||||
|
// Check contacts Alice's side
|
||||||
|
s.Require().Len(resp.Contacts, 1)
|
||||||
|
contact = resp.Contacts[0]
|
||||||
|
s.Require().True(contact.mutual())
|
||||||
|
|
||||||
|
// Make sure contact is added on the receiver's side
|
||||||
|
contacts = alice.AddedContacts()
|
||||||
|
s.Require().Len(contacts, 1)
|
||||||
|
s.Require().Equal(ContactRequestStateSent, contacts[0].ContactRequestLocalState)
|
||||||
|
s.Require().NotNil(contacts[0].DisplayName)
|
||||||
|
s.Require().True(contacts[0].mutual())
|
||||||
|
}
|
||||||
|
|
||||||
func (s *MessengerContactRequestSuite) TestBuildContact() {
|
func (s *MessengerContactRequestSuite) TestBuildContact() {
|
||||||
contactID := types.EncodeHex(crypto.FromECDSAPub(&s.m.identity.PublicKey))
|
contactID := types.EncodeHex(crypto.FromECDSAPub(&s.m.identity.PublicKey))
|
||||||
contact, err := s.m.BuildContact(&requests.BuildContact{PublicKey: contactID})
|
contact, err := s.m.BuildContact(&requests.BuildContact{PublicKey: contactID})
|
||||||
|
|
Loading…
Reference in New Issue