From 874b6d4e084e1b1c9d7916168461656563f95ddb Mon Sep 17 00:00:00 2001 From: Sylvia G Date: Sat, 2 Oct 2021 20:55:08 +0300 Subject: [PATCH] fix "blank mnemonic" errors when using only seed This is a follow up to #486 which was reverted because of a failed test which should now pass --- src/js/index.js | 15 ++++++--------- tests/spec/tests.js | 19 +++++++++++++++++++ 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/src/js/index.js b/src/js/index.js index e46c3d5..20ec555 100644 --- a/src/js/index.js +++ b/src/js/index.js @@ -210,7 +210,7 @@ network.onSelect(); adjustNetworkForSegwit(); if (seed != null) { - phraseChanged(); + seedChanged() } else { rootKeyChanged(); @@ -225,12 +225,7 @@ else { DOM.bip32path.prop("readonly", true); clients[clientIndex].onSelect(); - if (seed != null) { - phraseChanged(); - } - else { - rootKeyChanged(); - } + rootKeyChanged(); } } @@ -455,7 +450,9 @@ else { network = libs.bitcoin.networks.litecoinXprv; } - phraseChanged(); + // Can't use rootKeyChanged because validation will fail as we changed + // the network but the version bytes stayed as previously. + seedChanged(); } function toggleSplitMnemonic() { @@ -601,7 +598,7 @@ } function bitcoinCashAddressTypeChange() { - phraseChanged(); + rootKeyChanged(); } function toggleIndexes() { diff --git a/tests/spec/tests.js b/tests/spec/tests.js index 67e4221..1a31e67 100644 --- a/tests/spec/tests.js +++ b/tests/spec/tests.js @@ -3045,6 +3045,25 @@ it('Uses the correct derivation for altcoins with root keys', function(done) { }); }); +// Changing the coin when only using a seed (without a mnemonic phrase) should +// work the same as the previous test. +// See https://github.com/iancoleman/bip39/pull/486 +it('Uses the correct derivation for altcoins with seed and without mnemonic phrase', function(done) { + driver.findElement(By.css('.seed')) + .sendKeys("20da140d3dd1df8713cefcc4d54ce0e445b4151027a1ab567b832f6da5fcc5afc1c3a3f199ab78b8e0ab4652efd7f414ac2c9a3b81bceb879a70f377aa0a58f3"); + driver.sleep(generateDelay).then(function() { + // 4) switch from bitcoin to viacoin + selectNetwork("VIA - Viacoin"); + driver.sleep(generateDelay).then(function() { + // 5) ensure the derived address is correct + getFirstAddress(function(address) { + expect(address).toBe("Vq9Eq4N5SQnjqZvxtxzo7hZPW5XnyJsmXT"); + done(); + }); + }); + }); +}); + // Selecting a language with no existing phrase should generate a phrase in // that language. it('Generate a random phrase when language is selected and no current phrase', function(done) {