X-Git-Url: https://git.immae.eu/?p=perso%2FImmae%2FProjets%2FCryptomonnaies%2FBIP39.git;a=blobdiff_plain;f=tests%2Fspec%2Ftests.js;h=260ff2c73a72b9eadfb44e6047387de18784bf14;hp=c9c0e6ed9877cbc5975dd04ec9936d7e304665e0;hb=f12242014d1ed5c7606c3350a9780c3883abc565;hpb=ea96c345cceac845c62ecfd7b4eadf3b11d2b7f5 diff --git a/tests/spec/tests.js b/tests/spec/tests.js index c9c0e6e..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", @@ -732,6 +739,13 @@ it('Allows selection of Asiacoin', function(done) { }; testNetwork(done, params); }); +it('Allows selection of Aryacoin', function(done) { + var params = { + selectText: "ARYA - Aryacoin", + firstAddress: "Abr6gX25KaU9BpwD34UfsL3A4n89NvYYSf", + }; + testNetwork(done, params); +}); it('Allows selection of Auroracoin', function(done) { var params = { selectText: "AUR - Auroracoin", @@ -774,6 +788,13 @@ it('Allows selection of Bitcoin Private', function(done) { }; testNetwork(done, params); }); +it('Allows selection of Bitcoin SV', function(done) { + var params = { + selectText: "BSV - BitcoinSV", + firstAddress: "1N4mgtE5yxifch9jWs7Sds6oVqxdy2t576", + }; + testNetwork(done, params); +}); it('Allows selection of Bitcoinz', function(done) { var params = { selectText: "BTCZ - Bitcoinz", @@ -840,7 +861,7 @@ it('Allows selection of Compcoin', function(done) { it('Allows selection of CPUchain', function(done) { var params = { selectText: "CPU - CPUchain", - firstAddress: "CWWkTPkNRdpTDSfPw7gxUt9cEaC5PSsP3Y", + firstAddress: "CWSpLpW7jS4mBHJnkz3mmL5s3yQMg93zK8", }; testNetwork(done, params); }); @@ -1180,6 +1201,13 @@ it('Allows selection of Putincoin', function(done) { }; testNetwork(done, params); }); +it('Allows selection of Rapids', function(done) { + var params = { + selectText: "RPD - Rapids", + firstAddress: "Ri8XxUdZaXS5LqxmFJcFEjFinkaMbmhSUp", + }; + testNetwork(done, params); +}); it('Allows selection of Ravencoin', function(done) { var params = { selectText: "RVN - Ravencoin", @@ -1376,9 +1404,9 @@ it('Allows selection of Zclassic', function(done) { }; testNetwork(done, params); }); -it('Allows selection of Zencash', function(done) { +it('Allows selection of Horizen', function(done) { var params = { - selectText: "ZEN - Zencash", + selectText: "ZEN - Horizen", firstAddress: "znWh9XASyW2dZq5tck84wFjiwuqVysi7q3p", }; testNetwork(done, params); @@ -1411,6 +1439,14 @@ it('Allows selection of MIX', function(done) { }; testNetwork(done, params); }); +it('Allows selection of Monkey Project', function(done) { + var params = { + selectText: "MONK - Monkey Project", + firstAddress: "MnLrcnnUzKnf7TzufjRe5DLZqQJz18oYyu", + }; + testNetwork(done, params); +}); + it('Allows selection of Musicoin', function(done) { var params = { selectText: "MUSIC - Musicoin", @@ -1565,6 +1601,41 @@ it('Allows selection of Wagerr', function(done) { }; testNetwork(done, params); }); +it('Allows selection of Groestlcoin', function(done) { + var params = { + selectText: "GRS - Groestlcoin", + firstAddress: "FZycsFvZ1eH1hbtyjBpAgJSukVw1bN6PBN", + }; + testNetwork(done, params); +}); +it('Allows selection of Groestlcoin Testnet', function(done) { + var params = { + selectText: "GRS - Groestlcoin Testnet", + firstAddress: "mucaU5iiDaJDb69BHLeDv8JFfGiygRPne9", + }; + testNetwork(done, params); +}); +it('Allows selection of Elastos', function(done) { + var params = { + selectText: "ELA - Elastos", + firstAddress: "EMccDcsn3SwPDcfeQMf3w7utqi8ioWYtkg", + }; + testNetwork(done, params); +}); +it('Allows selection of Energyweb', function(done) { + var params = { + selectText: "EWT - EnergyWeb", + firstAddress: "0x22171474844Fc7E8E99A3A69CCf1eDb5574FdD4c", + }; + testNetwork(done, params); +}); +it('Allows selection of Thought', function(done) { + var params = { + selectText: "THT - Thought", + firstAddress: "4B1Bh9GibDarFQrhtYU8krpc7WSjgGfYvo", + }; + testNetwork(done, params); +}); // BIP39 seed is set from phrase it('Sets the bip39 seed from the prhase', function(done) { @@ -2145,6 +2216,7 @@ it('Ignores excess whitespace in the mnemonic', function(done) { // Github Issue 23: Part 1: Use correct derivation path when changing tabs // https://github.com/iancoleman/bip39/issues/23 +// This test was failing for default timeout of 5000ms so changed it to +10s it('Uses the correct derivation path when changing tabs', function(done) { // 1) and 2) set the phrase driver.findElement(By.css('.phrase')) @@ -2169,7 +2241,7 @@ it('Uses the correct derivation path when changing tabs', function(done) { }); }); }); -}); +}, generateDelay + 10000); // Github Issue 23 Part 2: Coin selection in derivation path // https://github.com/iancoleman/bip39/issues/23#issuecomment-238011920 @@ -3629,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 @@ -4027,6 +4199,27 @@ it('Shows litecoin BIP49 addresses', function(done) { }); }); +it('Shows Groestlcoin BIP49 addresses', function(done) { + driver.findElement(By.css('.phrase')) + .sendKeys('abandon abandon ability'); + selectNetwork("GRS - Groestlcoin"); + driver.findElement(By.css('#bip49-tab a')) + .click() + // bip49 addresses are shown + driver.sleep(generateDelay).then(function() { + driver.findElement(By.css('#bip49 .available')) + .getAttribute("class") + .then(function(classes) { + expect(classes).not.toContain("hidden"); + // check first address + getFirstAddress(function(address) { + expect(address).toBe("3HXSCZwCypLyixMsF4Z1sN49noJtrm8gnX"); + done(); + }); + }); + }); +}); + it('Can use root keys to generate segwit table rows', function(done) { // segwit uses ypub / zpub instead of xpub but the root key should still // be valid regardless of the encoding used to import that key. @@ -4046,4 +4239,101 @@ it('Can use root keys to generate segwit table rows', function(done) { }); }); +// Pull Request 271 +// Allow converting mnemonic back to raw entropy value +it('Converts mnemonics into raw entropy', function(done) { + driver.findElement(By.css('.phrase')) + .sendKeys('abandon abandon about'); + driver.sleep(generateDelay).then(function() { + driver.findElement(By.css('.use-entropy')) + .click(); + driver.findElement(By.css('.entropy')) + .getAttribute("value") + .then(function(entropy) { + expect(entropy).toBe("00000001"); + driver.findElement(By.css('.phrase')) + .getAttribute("value") + .then(function(phrase) { + expect(phrase).toBe("abandon abandon about"); + done(); + }); + }); + }); +}); + +// Pull Request 279 +// Added Split Phrase Card Output +it('Shows split prase cards', function(done) { + var originalPhrase = "ugly charge strong giant once anchor capable october thumb inject dwarf legal alley mixture shoot"; + var originalWords = originalPhrase.split(' '); + driver.findElement(By.css('.phrase')) + .sendKeys(originalPhrase); + driver.sleep(generateDelay).then(function() { + driver.findElement(By.css('.phraseSplit')) + .getAttribute("value") + .then(function(cardsStr) { + var cards = cardsStr.split("\n"); + expect(cards.length).toBe(3); + // test all 2-of-3 combos can be used to form full phrase + var combos = [[0,1],[0,2],[1,2]]; + for (var i=0; i