@@ -14,6 +14,7 @@ import (
14
14
"github.com/stretchr/testify/suite"
15
15
16
16
"github.com/status-im/status-go/api"
17
+ "github.com/status-im/status-go/common"
17
18
"github.com/status-im/status-go/common/dbsetup"
18
19
"github.com/status-im/status-go/images"
19
20
"github.com/status-im/status-go/multiaccounts"
@@ -341,3 +342,82 @@ func (pms *PayloadMarshallerSuite) TestPayloadMarshaller_LockPayload() {
341
342
toSend3 := pm .ToSend ()
342
343
pms .Nil (toSend3 )
343
344
}
345
+
346
+ func (pms * PayloadMarshallerSuite ) TestKeycardPairingPasswordAdjustments_Unmarshal_OldProto () {
347
+
348
+ // 1) KeycardPairing == "" => do nothing
349
+ pms .T ().Run ("KeycardPairing is empty => do nothing" , func (t * testing.T ) {
350
+ ap := & AccountPayload {
351
+ password : "0xABC" ,
352
+ multiaccount : & multiaccounts.Account {},
353
+ keys : make (map [string ][]byte ),
354
+ }
355
+ ppm := NewPairingPayloadMarshaller (ap , pms .Logger )
356
+ pb , err := ppm .MarshalProtobuf ()
357
+ require .NoError (t , err )
358
+ ppm .password = ""
359
+ err = ppm .UnmarshalProtobuf (pb )
360
+ require .NoError (t , err )
361
+
362
+ require .Equal (t , "0xABC" , ppm .password )
363
+ })
364
+
365
+ // 2) KeycardPairing != "", IsMobilePlatform() == true => TrimPrefix("0x")
366
+ pms .T ().Run ("IsMobilePlatform => trim prefix 0x" , func (t * testing.T ) {
367
+ ap := & AccountPayload {
368
+ password : "0xDEF" ,
369
+ multiaccount : & multiaccounts.Account {},
370
+ keys : make (map [string ][]byte ),
371
+ }
372
+ ppm := NewPairingPayloadMarshaller (ap , pms .Logger )
373
+ ppm .multiaccount .KeycardPairing = "ABCDF"
374
+ pb , err := ppm .MarshalProtobuf ()
375
+ require .NoError (t , err )
376
+ ppm .password = ""
377
+ common .IsMobilePlatform = func () bool { return true }
378
+
379
+ err = ppm .UnmarshalProtobuf (pb )
380
+ require .NoError (t , err )
381
+
382
+ require .Equal (t , "DEF" , ppm .password )
383
+ })
384
+
385
+ // 3) KeycardPairing != "", IsMobilePlatform() == false, without "0x" => add "0x"
386
+ pms .T ().Run ("No prefix => add 0x" , func (t * testing.T ) {
387
+ ap := & AccountPayload {
388
+ password : "1234" ,
389
+ multiaccount : & multiaccounts.Account {},
390
+ keys : make (map [string ][]byte ),
391
+ }
392
+ ppm := NewPairingPayloadMarshaller (ap , pms .Logger )
393
+ common .IsMobilePlatform = func () bool { return false }
394
+ ppm .multiaccount .KeycardPairing = "ABCDF"
395
+ pb , err := ppm .MarshalProtobuf ()
396
+ require .NoError (t , err )
397
+ ppm .password = ""
398
+ err = ppm .UnmarshalProtobuf (pb )
399
+ require .NoError (t , err )
400
+
401
+ require .Equal (t , "0x1234" , ppm .password )
402
+ })
403
+
404
+ // 4) KeycardPairing != "", IsMobilePlatform() == false, contains "0x" => do nothing
405
+ pms .T ().Run ("Already has prefix => do nothing" , func (t * testing.T ) {
406
+ ap := & AccountPayload {
407
+ password : "0x9999" ,
408
+ multiaccount : & multiaccounts.Account {},
409
+ keys : make (map [string ][]byte ),
410
+ }
411
+ ppm := NewPairingPayloadMarshaller (ap , pms .Logger )
412
+ ppm .multiaccount .KeycardPairing = "ABCDF"
413
+ pb , err := ppm .MarshalProtobuf ()
414
+ require .NoError (t , err )
415
+ ppm .password = ""
416
+ common .IsMobilePlatform = func () bool { return false }
417
+
418
+ err = ppm .UnmarshalProtobuf (pb )
419
+ require .NoError (t , err )
420
+
421
+ require .Equal (t , "0x9999" , ppm .password )
422
+ })
423
+ }
0 commit comments