@ -1,16 +1,26 @@
const { strict : assert } = require ( 'assert' ) ;
const { strict : assert } = require ( 'assert' ) ;
const { convertToHexValue , withFixtures } = require ( '../helpers' ) ;
const {
convertToHexValue ,
withFixtures ,
regularDelayMs ,
completeImportSRPOnboardingFlow ,
} = require ( '../helpers' ) ;
const enLocaleMessages = require ( '../../../app/_locales/en/messages.json' ) ;
describe ( 'Add account' , function ( ) {
describe ( 'Add account' , function ( ) {
const testSeedPhrase =
'forum vessel pink push lonely enact gentle tail admit parrot grunt dress' ;
const testPassword = 'correct horse battery staple' ;
const ganacheOptions = {
const ganacheOptions = {
accounts : [
accounts : [
{
{
secretKey :
secretKey :
'0x7C9529A67102755B7E6102D6D950AC5D5863C98713805CEC576B945B15B71EAC ' ,
'0x53CB0AB5226EEBF4D872113D98332C1555DC304443BEE1CF759D15798D3C55A9 ' ,
balance : convertToHexValue ( 25000000000000000000 ) ,
balance : convertToHexValue ( 25000000000000000000 ) ,
} ,
} ,
] ,
] ,
} ;
} ;
it ( 'should display correct new account name after create' , async function ( ) {
it ( 'should display correct new account name after create' , async function ( ) {
await withFixtures (
await withFixtures (
{
{
@ -36,4 +46,153 @@ describe('Add account', function () {
} ,
} ,
) ;
) ;
} ) ;
} ) ;
it ( 'should add the same account addresses when a secret recovery phrase is imported, the account is locked, and the same secret recovery phrase is imported again' , async function ( ) {
await withFixtures (
{
fixtures : 'onboarding' ,
ganacheOptions ,
title : this . test . title ,
failOnConsoleError : false ,
} ,
async ( { driver } ) => {
await driver . navigate ( ) ;
await completeImportSRPOnboardingFlow (
driver ,
testSeedPhrase ,
testPassword ,
) ;
await driver . clickElement ( '.account-menu__icon' ) ;
await driver . clickElement ( { text : 'Create Account' , tag : 'div' } ) ;
await driver . fill ( '.new-account-create-form input' , '2nd account' ) ;
await driver . clickElement ( { text : 'Create' , tag : 'button' } ) ;
await driver . clickElement (
'[data-testid="account-options-menu-button"]' ,
) ;
await driver . clickElement (
'[data-testid="account-options-menu__account-details"]' ,
) ;
const detailsModal = await driver . findVisibleElement ( 'span .modal' ) ;
// get the public address for the "second account"
const secondAccountAddress = await driver . findElement (
'.qr-code__address' ,
) ;
const secondAccountPublicAddress = await secondAccountAddress . getText ( ) ;
await driver . clickElement ( '.account-modal__close' ) ;
await detailsModal . waitForElementState ( 'hidden' ) ;
// generate a third accound
await driver . clickElement ( '.account-menu__icon' ) ;
await driver . clickElement ( { text : 'Create Account' , tag : 'div' } ) ;
await driver . fill ( '.new-account-create-form input' , '3rd account' ) ;
await driver . clickElement ( { text : 'Create' , tag : 'button' } ) ;
await driver . clickElement (
'[data-testid="account-options-menu-button"]' ,
) ;
await driver . clickElement (
'[data-testid="account-options-menu__account-details"]' ,
) ;
// get the public address for the "third account"
const secondDetailsModal = await driver . findVisibleElement (
'span .modal' ,
) ;
const thirdAccountAddress = await driver . findElement (
'.qr-code__address' ,
) ;
const thirdAccountPublicAddress = await thirdAccountAddress . getText ( ) ;
await driver . clickElement ( '.account-modal__close' ) ;
await secondDetailsModal . waitForElementState ( 'hidden' ) ;
// lock account
await driver . clickElement ( '.account-menu__icon' ) ;
await driver . delay ( regularDelayMs ) ;
const lockButton = await driver . findClickableElement (
'.account-menu__lock-button' ,
) ;
await lockButton . click ( ) ;
await driver . delay ( regularDelayMs ) ;
// restore same seed phrase
const restoreSeedLink = await driver . findClickableElement (
'.unlock-page__link--import' ,
) ;
await restoreSeedLink . click ( ) ;
await driver . delay ( regularDelayMs ) ;
await driver . fill (
'input[placeholder="Enter your Secret Recovery Phrase"]' ,
testSeedPhrase ,
) ;
await driver . delay ( regularDelayMs ) ;
await driver . fill ( '#password' , 'correct horse battery staple' ) ;
await driver . fill ( '#confirm-password' , 'correct horse battery staple' ) ;
await driver . clickElement ( {
text : enLocaleMessages . restore . message ,
tag : 'button' ,
} ) ;
await driver . delay ( regularDelayMs ) ;
// recreate a "2nd account"
await driver . clickElement ( '.account-menu__icon' ) ;
await driver . clickElement ( { text : 'Create Account' , tag : 'div' } ) ;
await driver . fill ( '.new-account-create-form input' , '2nd account' ) ;
await driver . clickElement ( { text : 'Create' , tag : 'button' } ) ;
await driver . clickElement (
'[data-testid="account-options-menu-button"]' ,
) ;
await driver . clickElement (
'[data-testid="account-options-menu__account-details"]' ,
) ;
const thirdDetailsModal = await driver . findVisibleElement (
'span .modal' ,
) ;
// get the public address for the "second account"
const recreatedSecondAccountAddress = await driver . findElement (
'.qr-code__address' ,
) ;
assert . equal (
await recreatedSecondAccountAddress . getText ( ) ,
secondAccountPublicAddress ,
) ;
await driver . clickElement ( '.account-modal__close' ) ;
await thirdDetailsModal . waitForElementState ( 'hidden' ) ;
// re-generate a third accound
await driver . clickElement ( '.account-menu__icon' ) ;
await driver . clickElement ( { text : 'Create Account' , tag : 'div' } ) ;
await driver . fill ( '.new-account-create-form input' , '3rd account' ) ;
await driver . clickElement ( { text : 'Create' , tag : 'button' } ) ;
await driver . clickElement (
'[data-testid="account-options-menu-button"]' ,
) ;
await driver . clickElement (
'[data-testid="account-options-menu__account-details"]' ,
) ;
// get the public address for the "third account"
const recreatedThirdAccountAddress = await driver . findElement (
'.qr-code__address' ,
) ;
assert . strictEqual (
await recreatedThirdAccountAddress . getText ( ) ,
thirdAccountPublicAddress ,
) ;
} ,
) ;
} ) ;
} ) ;
} ) ;