X-Git-Url: https://git.immae.eu/?p=perso%2FImmae%2FProjets%2FCryptomonnaies%2FBIP39.git;a=blobdiff_plain;f=tests%2Fspec%2Ftests.js;h=409219b1d6b418d18c298fd11ff96bf101f92e25;hp=f3ffbbfcdb3d0bdd2e6385c80d59a7d2bc7c4739;hb=74ab4cbe90d037604120c93230ac9b0d74a6c7f1;hpb=0fd67b5915a08168d31caaa581f55cf86591be73 diff --git a/tests/spec/tests.js b/tests/spec/tests.js index f3ffbbf..409219b 100644 --- a/tests/spec/tests.js +++ b/tests/spec/tests.js @@ -2596,4 +2596,78 @@ it('Can generate more addresses from a custom index', function(done) { }); }); +it('Can generate BIP141 addresses with P2WPKH-in-P2SH semanitcs', function(done) { + // Sourced from BIP49 official test specs + driver.findElement(By.css('#bip141-tab a')) + .click(); + driver.findElement(By.css('.bip141-path')) + .clear(); + driver.findElement(By.css('.bip141-path')) + .sendKeys("m/49'/1'/0'/0"); + selectNetwork("BTC - Bitcoin Testnet"); + driver.findElement(By.css(".phrase")) + .sendKeys("abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about"); + driver.sleep(generateDelay).then(function() { + getFirstAddress(function(address) { + expect(address).toBe("2Mww8dCYPUpKHofjgcXcBCEGmniw9CoaiD2"); + done(); + }); + }); +}); + +it('Can generate BIP141 addresses with P2WPKH semanitcs', function(done) { + // This result tested against bitcoinjs-lib test spec for segwit address + // using the first private key of this mnemonic and default path m/0 + // https://github.com/bitcoinjs/bitcoinjs-lib/blob/9c8503cab0c6c30a95127042703bc18e8d28c76d/test/integration/addresses.js#L50 + // so whilst not directly comparable, substituting the private key produces + // identical results between this tool and the bitcoinjs-lib test. + // Private key generated is: + // L3L8Nu9whawPBNLGtFqDhKut9DKKfG3CQoysupT7BimqVCZsLFNP + driver.findElement(By.css('#bip141-tab a')) + .click(); + // Choose P2WPKH + driver.executeScript(function() { + $(".bip141-semantics option[selected]").removeAttr("selected"); + $(".bip141-semantics option").filter(function(i,e) { + return $(e).html() == "P2WPKH"; + }).prop("selected", true); + $(".bip141-semantics").trigger("change"); + }); + driver.findElement(By.css(".phrase")) + .sendKeys("abandon abandon ability"); + driver.sleep(generateDelay).then(function() { + getFirstAddress(function(address) { + expect(address).toBe("bc1qfwu6a5a3evygrk8zvdxxvz4547lmpyx5vsfxe9"); + done(); + }); + }); +}); + +it('Shows the entropy used by the PRNG when clicking generate', function(done) { + driver.findElement(By.css('.generate')).click(); + driver.sleep(generateDelay).then(function() { + driver.findElement(By.css('.entropy')) + .getAttribute("value") + .then(function(entropy) { + expect(entropy).not.toBe(""); + done(); + }); + }); +}); + +it('Shows the index of each word in the mnemonic', function(done) { + driver.findElement(By.css('.phrase')) + .sendKeys("abandon abandon ability"); + driver.sleep(generateDelay).then(function() { + driver.findElement(By.css('.use-entropy')) + .click(); + driver.findElement(By.css('.word-indexes')) + .getText() + .then(function(indexes) { + expect(indexes).toBe("0, 0, 1"); + done(); + }); + }); +}); + });