2023-10-24 10:15:32 +00:00
|
|
|
package protocol
|
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
|
|
|
"time"
|
|
|
|
|
|
|
|
"github.com/stretchr/testify/suite"
|
|
|
|
|
|
|
|
"github.com/status-im/status-go/images"
|
|
|
|
"github.com/status-im/status-go/multiaccounts/accounts"
|
|
|
|
"github.com/status-im/status-go/multiaccounts/settings"
|
|
|
|
"github.com/status-im/status-go/protocol/identity"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestMessengerContacts(t *testing.T) {
|
|
|
|
suite.Run(t, new(MessengerContactsTestSuite))
|
|
|
|
}
|
|
|
|
|
|
|
|
type MessengerContactsTestSuite struct {
|
|
|
|
MessengerBaseTestSuite
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *MessengerContactsTestSuite) Test_SelfContact() {
|
|
|
|
const timeout = 1 * time.Second
|
|
|
|
|
|
|
|
profileKp := accounts.GetProfileKeypairForTest(true, false, false)
|
|
|
|
profileKp.KeyUID = s.m.account.KeyUID
|
|
|
|
profileKp.Accounts[0].KeyUID = s.m.account.KeyUID
|
|
|
|
|
|
|
|
err := s.m.settings.SaveOrUpdateKeypair(profileKp)
|
|
|
|
s.Require().NoError(err)
|
|
|
|
|
|
|
|
// Create values
|
|
|
|
|
|
|
|
displayName := "DisplayName_1"
|
|
|
|
bio := "Bio_1"
|
|
|
|
ensName := "EnsName_1.eth"
|
|
|
|
socialLinks := identity.SocialLinks{{Text: identity.TelegramID, URL: "dummy.telegram"}}
|
|
|
|
identityImages := images.SampleIdentityImages()
|
|
|
|
|
|
|
|
identityImagesMap := make(map[string]images.IdentityImage)
|
|
|
|
for _, img := range identityImages {
|
|
|
|
img.KeyUID = s.m.account.KeyUID
|
|
|
|
identityImagesMap[img.Name] = img
|
|
|
|
}
|
|
|
|
|
|
|
|
// Set values stored in settings
|
|
|
|
|
2023-11-13 20:07:35 +00:00
|
|
|
changesLatch := SelfContactChangeEvent{}
|
|
|
|
|
2023-10-24 10:15:32 +00:00
|
|
|
setSettingsValues := func() {
|
|
|
|
err := s.m.SetDisplayName(displayName)
|
|
|
|
s.Require().NoError(err)
|
|
|
|
|
|
|
|
err = s.m.SetBio(bio)
|
|
|
|
s.Require().NoError(err)
|
|
|
|
|
|
|
|
err = s.m.settings.SaveSettingField(settings.PreferredName, ensName)
|
|
|
|
s.Require().NoError(err)
|
|
|
|
}
|
|
|
|
|
2023-11-13 20:07:35 +00:00
|
|
|
eventHandler := func(event *SelfContactChangeEvent) bool {
|
|
|
|
if event.DisplayNameChanged {
|
|
|
|
changesLatch.DisplayNameChanged = true
|
|
|
|
}
|
|
|
|
if event.BioChanged {
|
|
|
|
changesLatch.BioChanged = true
|
|
|
|
}
|
|
|
|
if event.PreferredNameChanged {
|
|
|
|
changesLatch.PreferredNameChanged = true
|
|
|
|
}
|
|
|
|
return changesLatch.DisplayNameChanged && changesLatch.BioChanged && changesLatch.PreferredNameChanged
|
|
|
|
}
|
|
|
|
|
|
|
|
SetSettingsAndWaitForChange(&s.Suite, s.m, timeout, setSettingsValues, eventHandler)
|
2023-10-24 10:15:32 +00:00
|
|
|
|
|
|
|
// Set values stored in multiaccounts
|
|
|
|
|
|
|
|
setIdentityImages := func() {
|
|
|
|
err := s.m.multiAccounts.StoreIdentityImages(s.m.account.KeyUID, identityImages, false)
|
|
|
|
s.Require().NoError(err)
|
|
|
|
}
|
|
|
|
|
2023-11-13 20:07:35 +00:00
|
|
|
SetIdentityImagesAndWaitForChange(&s.Suite, s.m, timeout, setIdentityImages)
|
2023-10-24 10:15:32 +00:00
|
|
|
|
|
|
|
// Set social links. They are applied immediately, no need to wait.
|
|
|
|
|
|
|
|
err = s.m.AddOrReplaceSocialLinks(socialLinks)
|
|
|
|
s.Require().NoError(err)
|
|
|
|
|
|
|
|
// Check values
|
|
|
|
|
|
|
|
selfContact := s.m.GetContactByID(s.m.IdentityPublicKeyString())
|
|
|
|
s.Require().NotNil(selfContact)
|
|
|
|
s.Require().Equal(displayName, selfContact.DisplayName)
|
|
|
|
s.Require().Equal(bio, selfContact.Bio)
|
|
|
|
s.Require().Equal(ensName, selfContact.EnsName)
|
|
|
|
s.Require().Equal(socialLinks, selfContact.SocialLinks)
|
|
|
|
s.Require().Equal(identityImagesMap, selfContact.Images)
|
|
|
|
}
|