github.com/status-im/status-go@v1.1.0/protocol/messenger_contacts_test.go (about) 1 package protocol 2 3 import ( 4 "testing" 5 "time" 6 7 "github.com/stretchr/testify/suite" 8 9 "github.com/status-im/status-go/images" 10 "github.com/status-im/status-go/multiaccounts/accounts" 11 "github.com/status-im/status-go/multiaccounts/settings" 12 ) 13 14 func TestMessengerContacts(t *testing.T) { 15 suite.Run(t, new(MessengerContactsTestSuite)) 16 } 17 18 type MessengerContactsTestSuite struct { 19 MessengerBaseTestSuite 20 } 21 22 func (s *MessengerContactsTestSuite) Test_SelfContact() { 23 const timeout = 1 * time.Second 24 25 profileKp := accounts.GetProfileKeypairForTest(true, false, false) 26 profileKp.KeyUID = s.m.account.KeyUID 27 profileKp.Accounts[0].KeyUID = s.m.account.KeyUID 28 29 err := s.m.settings.SaveOrUpdateKeypair(profileKp) 30 s.Require().NoError(err) 31 32 // Create values 33 34 displayName := "DisplayName_1" 35 bio := "Bio_1" 36 ensName := "EnsName_1.eth" 37 identityImages := images.SampleIdentityImages() 38 39 identityImagesMap := make(map[string]images.IdentityImage) 40 for _, img := range identityImages { 41 img.KeyUID = s.m.account.KeyUID 42 identityImagesMap[img.Name] = img 43 } 44 45 // Set values stored in settings 46 47 changesLatch := SelfContactChangeEvent{} 48 49 setSettingsValues := func() { 50 err := s.m.SetDisplayName(displayName) 51 s.Require().NoError(err) 52 53 err = s.m.SetBio(bio) 54 s.Require().NoError(err) 55 56 err = s.m.settings.SaveSettingField(settings.PreferredName, ensName) 57 s.Require().NoError(err) 58 } 59 60 eventHandler := func(event *SelfContactChangeEvent) bool { 61 if event.DisplayNameChanged { 62 changesLatch.DisplayNameChanged = true 63 } 64 if event.BioChanged { 65 changesLatch.BioChanged = true 66 } 67 if event.PreferredNameChanged { 68 changesLatch.PreferredNameChanged = true 69 } 70 return changesLatch.DisplayNameChanged && changesLatch.BioChanged && changesLatch.PreferredNameChanged 71 } 72 73 SetSettingsAndWaitForChange(&s.Suite, s.m, timeout, setSettingsValues, eventHandler) 74 75 // Set values stored in multiaccounts 76 77 setIdentityImages := func() { 78 err := s.m.multiAccounts.StoreIdentityImages(s.m.account.KeyUID, identityImages, false) 79 s.Require().NoError(err) 80 } 81 82 SetIdentityImagesAndWaitForChange(&s.Suite, s.m, timeout, setIdentityImages) 83 84 // Check values 85 86 selfContact := s.m.GetContactByID(s.m.IdentityPublicKeyString()) 87 s.Require().NotNil(selfContact) 88 s.Require().Equal(displayName, selfContact.DisplayName) 89 s.Require().Equal(bio, selfContact.Bio) 90 s.Require().Equal(ensName, selfContact.EnsName) 91 s.Require().Equal(identityImagesMap, selfContact.Images) 92 }