X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;ds=sidebyside;f=tests%2Fspec%2Ftests.js;h=260ff2c73a72b9eadfb44e6047387de18784bf14;hb=f12242014d1ed5c7606c3350a9780c3883abc565;hp=af8944c5ed69b6de8306f836c74bdc723d0d3d32;hpb=c845ee6f6e2a84d05c1e5b77c54e2273011dd7dd;p=perso%2FImmae%2FProjets%2FCryptomonnaies%2FBIP39.git diff --git a/tests/spec/tests.js b/tests/spec/tests.js index af8944c..260ff2c 100644 --- a/tests/spec/tests.js +++ b/tests/spec/tests.js @@ -412,6 +412,13 @@ it('Allows selection of bitcoin testnet', function(done) { }; testNetwork(done, params); }); +it('Allows selection of bitcoin regtest', function(done) { + var params = { + selectText: "BTC - Bitcoin RegTest", + firstAddress: "mucaU5iiDaJDb69BHLeDv8JFfGiyg2nJKi", + }; + testNetwork(done, params); +}); it('Allows selection of litecoin', function(done) { var params = { selectText: "LTC - Litecoin", @@ -3694,6 +3701,106 @@ it('Can generate BIP141 addresses with P2WPKH-in-P2SH semanitcs', function(done) }); }); +it('Can generate BIP141 addresses with P2WSH semanitcs', function(done) { + driver.findElement(By.css('#bip141-tab a')) + .click(); + // Choose P2WSH + driver.executeScript(function() { + $(".bip141-semantics option[selected]").removeAttr("selected"); + $(".bip141-semantics option").filter(function(i,e) { + return $(e).html() == "P2WSH (1-of-1 multisig)"; + }).prop("selected", true); + $(".bip141-semantics").trigger("change"); + }); + driver.findElement(By.css(".phrase")) + .sendKeys("abandon abandon ability"); + driver.sleep(generateDelay).then(function() { + driver.findElement(By.css("#root-key")) + .getAttribute("value") + .then(function(rootKey) { + expect(rootKey).toBe("ZprvAhadJRUYsNge9uHspaggavxU1BUQ8QwfT4Z9UGq5sKF2mSt1mVy8EckLAaoBdmLHyP5eYDJ3LxtmzMNnLg2MRFe7QN2ueF4NCH4s5PrCDR6"); + getFirstAddress(function(address) { + expect(address).toBe("bc1q2qhee847pv438tgg8hc7mjy38n8dklleshettn344l0tgs0kj5hskz9p9r"); + done(); + }); + }) + }); +}); + +it('Can generate BIP141 addresses with P2WSH-in-P2SH semanitcs', function(done) { + driver.findElement(By.css('#bip141-tab a')) + .click(); + // Choose P2WSH-in-P2SH + driver.executeScript(function() { + $(".bip141-semantics option[selected]").removeAttr("selected"); + $(".bip141-semantics option").filter(function(i,e) { + return $(e).html() == "P2WSH nested in P2SH (1-of-1 multisig)"; + }).prop("selected", true); + $(".bip141-semantics").trigger("change"); + }); + driver.findElement(By.css(".phrase")) + .sendKeys("abandon abandon ability"); + driver.sleep(generateDelay).then(function() { + driver.findElement(By.css("#root-key")) + .getAttribute("value") + .then(function(rootKey) { + expect(rootKey).toBe("YprvANkMzkodih9AJc6kzDu4NqrxqDKxBnxAXx2vgswCVJs9iM4nWqoZcZ6C9NqbdrgNZjxqnjhUtJYE74mDcycLd1xWY2LV4LEsvZ1DgqxuAKe"); + getFirstAddress(function(address) { + expect(address).toBe("343DLC4vGDyHBbBr9myL8zzZA1MdN9TM1G"); + done(); + }); + }) + }); +}); + +it('Uses Vprv for bitcoin testnet p2wsh', function(done) { + selectNetwork("BTC - Bitcoin Testnet"); + driver.findElement(By.css('#bip141-tab a')) + .click() + // Choose P2WSH + driver.executeScript(function() { + $(".bip141-semantics option[selected]").removeAttr("selected"); + $(".bip141-semantics option").filter(function(i,e) { + return $(e).html() == "P2WSH (1-of-1 multisig)"; + }).prop("selected", true); + $(".bip141-semantics").trigger("change"); + }); + driver.findElement(By.css('.phrase')) + .sendKeys('abandon abandon ability'); + driver.sleep(generateDelay).then(function() { + driver.findElement(By.css('.root-key')) + .getAttribute("value") + .then(function(path) { + expect(path).toBe("Vprv16YtLrHXxePM5ja5hXQbiJs5JKDAc4WcaXo5rZcrVMU6bMhUg1oY7fpPku3i819gvMcHvq1h8aELDsyfCEs19vj1Q3iDHRrESWyJConkoT1"); + done(); + }) + }); +}); + +it('Uses Uprv for bitcoin testnet p2wsh-in-p2sh', function(done) { + selectNetwork("BTC - Bitcoin Testnet"); + driver.findElement(By.css('#bip141-tab a')) + .click() + // Choose P2WSH-in-P2SH + driver.executeScript(function() { + $(".bip141-semantics option[selected]").removeAttr("selected"); + $(".bip141-semantics option").filter(function(i,e) { + return $(e).html() == "P2WSH nested in P2SH (1-of-1 multisig)"; + }).prop("selected", true); + $(".bip141-semantics").trigger("change"); + }); + driver.findElement(By.css('.phrase')) + .sendKeys('abandon abandon ability'); + driver.sleep(generateDelay).then(function() { + driver.findElement(By.css('.root-key')) + .getAttribute("value") + .then(function(path) { + expect(path).toBe("Uprv95RJn67y7xyEuRLHenkZYVUx9LkARJzAsVx3ZJMeyHMdVwosWD9K8JTe4Z1FeE4gwBVcnqKF3f82ZvJxkBxHS5E74fYnigxvqeke8ZV3Fp2"); + 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 @@ -4143,7 +4250,7 @@ it('Converts mnemonics into raw entropy', function(done) { driver.findElement(By.css('.entropy')) .getAttribute("value") .then(function(entropy) { - expect(entropy).toBe("00000000000000000000000000000001"); + expect(entropy).toBe("00000001"); driver.findElement(By.css('.phrase')) .getAttribute("value") .then(function(phrase) { @@ -4185,4 +4292,48 @@ it('Shows split prase cards', function(done) { }); }); +// It allows manually specifying the entropy type +it('Allows entropy type to be manually selected', function(done) { + driver.findElement(By.css('.use-entropy')) + .click(); + // use decimal entropy + driver.findElement(By.css('.entropy')) + .sendKeys("91"); + // manually change to binary entropy + driver.executeScript(function() { + $(".entropy-container input[value='binary']").click(); + }); + driver.sleep(entropyFeedbackDelay).then(function() { + driver.findElement(By.css('.entropy-container')) + .getText() + .then(function(text) { + // overide 91 to be just 1 + var key = "Filtered Entropy"; + var value = "1"; + var reText = key + "\\s+" + value; + var re = new RegExp(reText); + expect(text).toMatch(re); + // overide automatic decimal to binary + var key = "Entropy Type"; + var value = "binary"; + var reText = key + "\\s+" + value; + var re = new RegExp(reText); + expect(text).toMatch(re); + // overide 2 events to 1 + var key = "Event Count"; + var value = 1; + var reText = key + "\\s+" + value; + var re = new RegExp(reText); + expect(text).toMatch(re); + // overide log2(10)*2 bits to 1 bit + var key = "Total Bits"; + var value = 1; + var reText = key + "\\s+" + value; + var re = new RegExp(reText); + expect(text).toMatch(re); + done(); + }); + }); +}); + });