@@ -396,4 +396,105 @@ describe('migration #67', () => {
396396 ) ,
397397 ) ;
398398 } ) ;
399+
400+ it ( 'updates accounts that were previously migrated with old scope values' , ( ) => {
401+ // Old scope values for testing migration from previous state
402+ const OLD_ETH_NAMESPACE_SCOPE = 'eip155' as `${string } :${string } `;
403+ const OLD_SOL_NAMESPACE_SCOPE = 'solana' as `${string } :${string } `;
404+ const OLD_BTC_NAMESPACE_SCOPE = 'bip122' as `${string } :${string } `;
405+
406+ const stateWithOldScopes : StateType = {
407+ engine : {
408+ backgroundState : {
409+ AccountsController : {
410+ internalAccounts : {
411+ selectedAccount : 'evm-1' ,
412+ accounts : {
413+ 'evm-1' : {
414+ id : 'evm-1' ,
415+ type : 'eip155:eoa' ,
416+ address : '0x123' ,
417+ options : { } ,
418+ metadata : {
419+ name : 'Account 1' ,
420+ keyring : { type : 'HD Key Tree' } ,
421+ importTime : Date . now ( ) ,
422+ } ,
423+ methods : [
424+ EthMethod . PersonalSign ,
425+ EthMethod . SignTransaction ,
426+ EthMethod . SignTypedDataV4 ,
427+ ] ,
428+ // This represents the old scope value from migration 66
429+ scopes : [ OLD_ETH_NAMESPACE_SCOPE ] ,
430+ } ,
431+ 'evm-2' : {
432+ id : 'evm-2' ,
433+ type : 'eip155:erc4337' ,
434+ address : '0x456' ,
435+ options : { } ,
436+ metadata : {
437+ name : 'Account 2' ,
438+ keyring : { type : 'HD Key Tree' } ,
439+ importTime : Date . now ( ) ,
440+ } ,
441+ methods : [
442+ EthMethod . PersonalSign ,
443+ EthMethod . SignTransaction ,
444+ EthMethod . SignTypedDataV4 ,
445+ ] ,
446+ // This represents the old scope value from migration 66
447+ scopes : [ OLD_ETH_NAMESPACE_SCOPE ] ,
448+ } ,
449+ 'sol-1' : {
450+ id : 'sol-1' ,
451+ type : 'solana:data-account' ,
452+ address : 'solana123' ,
453+ options : { } ,
454+ metadata : {
455+ name : 'Solana Account' ,
456+ keyring : { type : 'HD Key Tree' } ,
457+ importTime : Date . now ( ) ,
458+ } ,
459+ methods : [ ] ,
460+ // Old Solana namespace scope
461+ scopes : [ OLD_SOL_NAMESPACE_SCOPE ] ,
462+ } ,
463+ 'btc-1' : {
464+ id : 'btc-1' ,
465+ type : 'bip122:p2wpkh' ,
466+ address : 'bc1abc' ,
467+ options : { } ,
468+ metadata : {
469+ name : 'BTC Account' ,
470+ keyring : { type : 'HD Key Tree' } ,
471+ importTime : Date . now ( ) ,
472+ } ,
473+ methods : [ ] ,
474+ // Old BTC namespace scope
475+ scopes : [ OLD_BTC_NAMESPACE_SCOPE ] ,
476+ } ,
477+ } ,
478+ } ,
479+ } ,
480+ } ,
481+ } ,
482+ } ;
483+
484+ const stateCopy = JSON . parse ( JSON . stringify ( stateWithOldScopes ) ) ;
485+ const result = migration ( stateCopy ) as StateType ;
486+ const accounts =
487+ result . engine . backgroundState . AccountsController . internalAccounts
488+ . accounts ;
489+
490+ // Check that old scope values were updated to new ones
491+ expect ( accounts [ 'evm-1' ] ?. scopes ) . toEqual ( [ EthScope . Eoa ] ) ;
492+ expect ( accounts [ 'evm-2' ] ?. scopes ) . toEqual ( [ EthScope . Eoa ] ) ;
493+ expect ( accounts [ 'sol-1' ] ?. scopes ) . toEqual ( [
494+ SolScope . Mainnet ,
495+ SolScope . Testnet ,
496+ SolScope . Devnet ,
497+ ] ) ;
498+ expect ( accounts [ 'btc-1' ] ?. scopes ) . toEqual ( [ BtcScope . Mainnet ] ) ;
499+ } ) ;
399500} ) ;
0 commit comments