github.com/status-im/status-go@v1.1.0/protocol/messenger_settings_test.go (about) 1 package protocol 2 3 import ( 4 "context" 5 "testing" 6 7 gethbridge "github.com/status-im/status-go/eth-node/bridge/geth" 8 9 "github.com/status-im/status-go/eth-node/crypto" 10 "github.com/status-im/status-go/multiaccounts/common" 11 "github.com/status-im/status-go/protocol/encryption/multidevice" 12 "github.com/status-im/status-go/protocol/requests" 13 "github.com/status-im/status-go/protocol/tt" 14 "github.com/status-im/status-go/waku" 15 16 "github.com/stretchr/testify/suite" 17 ) 18 19 func TestMessengerSettings(t *testing.T) { 20 suite.Run(t, new(MessengerSettingsSuite)) 21 } 22 23 type MessengerSettingsSuite struct { 24 MessengerBaseTestSuite 25 m2 *Messenger 26 } 27 28 func (s *MessengerSettingsSuite) SetupTest() { 29 s.logger = tt.MustCreateTestLogger() 30 31 config := waku.DefaultConfig 32 config.MinimumAcceptedPoW = 0 33 shh := waku.New(&config, s.logger) 34 s.shh = gethbridge.NewGethWakuWrapper(shh) 35 s.Require().NoError(shh.Start()) 36 37 pk, err := crypto.GenerateKey() 38 s.Require().NoError(err) 39 s.m, err = newMessengerWithKey(s.shh, pk, s.logger, nil) 40 s.Require().NoError(err) 41 42 s.m2, err = newMessengerWithKey(s.shh, s.m.identity, s.logger, nil) 43 s.Require().NoError(err) 44 45 prepareMessengersForPairing(&s.Suite, s.m, s.m2) 46 } 47 48 func (s *MessengerSettingsSuite) TearDownTest() { 49 TearDownMessenger(&s.Suite, s.m) 50 TearDownMessenger(&s.Suite, s.m2) 51 _ = s.logger.Sync() 52 } 53 54 func prepareMessengersForPairing(s *suite.Suite, m1, m2 *Messenger) { 55 // Set m's installation metadata 56 aim := &multidevice.InstallationMetadata{ 57 Name: "m's-device", 58 DeviceType: "m's-device-type", 59 } 60 err := m1.SetInstallationMetadata(m1.installationID, aim) 61 s.Require().NoError(err) 62 63 // Set m 2's installation metadata 64 a2im := &multidevice.InstallationMetadata{ 65 Name: "m's-other-device", 66 DeviceType: "m's-other-device-type", 67 } 68 err = m2.SetInstallationMetadata(m2.installationID, a2im) 69 s.Require().NoError(err) 70 } 71 72 func (s *MessengerSettingsSuite) TestSetCustomizationColor() { 73 PairDevices(&s.Suite, s.m2, s.m) 74 PairDevices(&s.Suite, s.m, s.m2) 75 76 s.Require().Equal(s.m.account.KeyUID, s.m2.account.KeyUID) 77 78 err := s.m.multiAccounts.SaveAccount(*s.m.account) 79 s.Require().NoError(err) 80 err = s.m2.multiAccounts.SaveAccount(*s.m2.account) 81 s.Require().NoError(err) 82 83 // check that accounts have no customization color 84 acc, err := s.m.multiAccounts.GetAccount(s.m.account.KeyUID) 85 s.Require().NoError(err) 86 acc2, err := s.m2.multiAccounts.GetAccount(s.m2.account.KeyUID) 87 s.Require().NoError(err) 88 s.Require().Equal(acc.CustomizationColor, common.CustomizationColor("")) 89 s.Require().Equal(acc.CustomizationColorClock, uint64(0)) 90 s.Require().Equal(acc2.CustomizationColor, common.CustomizationColor("")) 91 s.Require().Equal(acc2.CustomizationColorClock, uint64(0)) 92 93 err = s.m.SetCustomizationColor(context.TODO(), &requests.SetCustomizationColor{KeyUID: s.m.account.KeyUID, CustomizationColor: common.CustomizationColorBlue}) 94 s.Require().NoError(err) 95 s.Require().Equal(s.m.account.GetCustomizationColor(), common.CustomizationColorBlue) 96 _, err = WaitOnMessengerResponse(s.m2, func(r *MessengerResponse) bool { 97 return len(r.CustomizationColor) > 0 98 }, "message syncAccountCustomizationColor not received") 99 s.Require().NoError(err) 100 s.Require().Equal(s.m2.account.GetCustomizationColor(), common.CustomizationColorBlue) 101 acc, err = s.m2.multiAccounts.GetAccount(s.m.account.KeyUID) 102 s.Require().NoError(err) 103 acc2, err = s.m2.multiAccounts.GetAccount(s.m2.account.KeyUID) 104 s.Require().NoError(err) 105 s.Require().Equal(common.CustomizationColorBlue, acc.CustomizationColor) 106 s.Require().Equal(acc.CustomizationColor, acc2.CustomizationColor) 107 }