var newDriver = null;
var driver = null;
// Delays in ms
-var generateDelay = 1000;
+var generateDelay = 1500;
var feedbackDelay = 500;
var entropyFeedbackDelay = 500;
+var bip38delay = 15000;
// url uses file:// scheme
var path = require('path')
};
testNetwork(done, params);
});
+it('Allows selection of denarius', function(done) {
+ var params = {
+ selectText: "DNR - Denarius",
+ firstAddress: "DFdFMVUMzU9xX88EywXvAGwjiwpxyh9vKb",
+ };
+ testNetwork(done, params);
+});
it('Allows selection of shadowcash', function(done) {
var params = {
selectText: "SDC - ShadowCash",
};
testNetwork(done, params);
});
+it('Allows selection of komodo', function(done) {
+ var params = {
+ selectText: "KMD - Komodo",
+ firstAddress: "RMPPzJwAjPVZZAwJvXivHJGGjdCx6WBD2t",
+ };
+ testNetwork(done, params);
+});
it('Allows selection of namecoin', function(done) {
var params = {
selectText: "NMC - Namecoin",
};
testNetwork(done, params);
});
+it('Allows selection of onixcoin', function(done) {
+ var params = {
+ selectText: "ONX - Onixcoin",
+ firstAddress: "XGwMqddeKjT3ddgX73QokjVbCL3aK6Yxfk",
+ };
+ testNetwork(done, params);
+});
it('Allows selection of peercoin', function(done) {
var params = {
selectText: "PPC - Peercoin",
it('Allows selection of bitcoin cash', function(done) {
var params = {
selectText: "BCH - Bitcoin Cash",
- firstAddress: "1JKvb6wKtsjNoCRxpZ4DGrbniML7z5U16A",
+ firstAddress: "bitcoincash:qzlquk7w4hkudxypl4fgv8x279r754dkvur7jpcsps",
};
testNetwork(done, params);
});
it('Allows selection of bitcoin gold', function(done) {
var params = {
selectText: "BTG - Bitcoin Gold",
- firstAddress: "GWYxuwSqANWGV3WT7Gpr6HE91euYXBqtwQ",
+ firstAddress: "GdDqug4WUsn5syNbSTHatNn4XnuwZtzedx",
};
testNetwork(done, params);
});
};
testNetwork(done, params);
});
-
-// BIP39 seed is set from phrase
-it('Sets the bip39 seed from the prhase', function(done) {
- driver.findElement(By.css('.phrase'))
- .sendKeys('abandon abandon ability');
- driver.sleep(generateDelay).then(function() {
- driver.findElement(By.css('.seed'))
- .getAttribute("value")
- .then(function(seed) {
- expect(seed).toBe("20da140d3dd1df8713cefcc4d54ce0e445b4151027a1ab567b832f6da5fcc5afc1c3a3f199ab78b8e0ab4652efd7f414ac2c9a3b81bceb879a70f377aa0a58f3");
- done();
- })
- });
+it('Allows selection of AXE', function(done) {
+ var params = {
+ selectText: "AXE - Axe",
+ firstAddress: "PScwtLUyPiGrqtKXrHF37DGETLXLZdw4up",
+ };
+ testNetwork(done, params);
});
-
-// BIP32 root key is set from phrase
-it('Sets the bip39 root key from the prhase', function(done) {
- driver.findElement(By.css('.phrase'))
- .sendKeys('abandon abandon ability');
- driver.sleep(generateDelay).then(function() {
- driver.findElement(By.css('.root-key'))
- .getAttribute("value")
- .then(function(seed) {
- expect(seed).toBe("xprv9s21ZrQH143K2jkGDCeTLgRewT9F2pH5JZs2zDmmjXes34geVnFiuNa8KTvY5WoYvdn4Ag6oYRoB6cXtc43NgJAEqDXf51xPm6fhiMCKwpi");
- done();
- })
- });
+it('Allows selection of BlackCoin', function(done) {
+ var params = {
+ selectText: "BLK - BlackCoin",
+ firstAddress: "B5MznAKwj7uQ42vDz3w4onhBXPcqhTwJ9z",
+ };
+ testNetwork(done, params);
});
-
-// Tabs show correct addresses when changed
-it('Shows the correct address when tab is changed', function(done) {
- driver.findElement(By.css('.phrase'))
- .sendKeys('abandon abandon ability');
- driver.sleep(generateDelay).then(function() {
- driver.findElement(By.css('#bip32-tab a'))
- .click();
- driver.sleep(generateDelay).then(function() {
- getFirstAddress(function(address) {
- expect(address).toBe("17uQ7s2izWPwBmEVFikTmZUjbBKWYdJchz");
- done();
- });
- });
- });
+it('Allows selection of Neblio', function(done) {
+ var params = {
+ selectText: "NEBL - Neblio",
+ firstAddress: "NefkeEEvhusbHMmTRrxx7H9wFnUXd8qQsE",
+ };
+ testNetwork(done, params);
});
-
-// BIP44 derivation path is shown
-it('Shows the derivation path for bip44 tab', function(done) {
- driver.findElement(By.css('.phrase'))
- .sendKeys('abandon abandon ability');
- driver.sleep(generateDelay).then(function() {
- driver.findElement(By.css('#bip44 .path'))
- .getAttribute("value")
- .then(function(path) {
- expect(path).toBe("m/44'/0'/0'/0");
- done();
- })
- });
+it('Allows selection of Beetlecoin', function(done) {
+ var params = {
+ selectText: "BEET - Beetlecoin",
+ firstAddress: "BVmtbEsGrjpknprmpHFq26z4kYHJUFHE71",
+ };
+ testNetwork(done, params);
});
-
-// BIP44 extended private key is shown
-it('Shows the extended private key for bip44 tab', function(done) {
- driver.findElement(By.css('.phrase'))
- .sendKeys('abandon abandon ability');
- driver.sleep(generateDelay).then(function() {
- driver.findElement(By.css('.extended-priv-key'))
- .getAttribute("value")
- .then(function(path) {
- expect(path).toBe("xprvA2DxxvPZcyRvYgZMGS53nadR32mVDeCyqQYyFhrCVbJNjPoxMeVf7QT5g7mQASbTf9Kp4cryvcXnu2qurjWKcrdsr91jXymdCDNxKgLFKJG");
- done();
- })
- });
+it('Allows selection of Adcoin', function(done) {
+ var params = {
+ selectText: "ACC - Adcoin",
+ firstAddress: "AcEDM6V5sF4kFHC76MJjjfProtS5Sw2qcd",
+ };
+ testNetwork(done, params);
});
-
-// BIP44 extended public key is shown
-it('Shows the extended public key for bip44 tab', function(done) {
- driver.findElement(By.css('.phrase'))
- .sendKeys('abandon abandon ability');
- driver.sleep(generateDelay).then(function() {
- driver.findElement(By.css('.extended-pub-key'))
- .getAttribute("value")
- .then(function(path) {
- expect(path).toBe("xpub6FDKNRvTTLzDmAdpNTc49ia9b4byd6vqCdUa46Fp3vqMcC96uBoufCmZXQLiN5AK3iSCJMhf9gT2sxkpyaPepRuA7W3MujV5tGmF5VfbueM");
- done();
- })
- });
+it('Allows selection of Asiacoin', function(done) {
+ var params = {
+ selectText: "AC - Asiacoin",
+ firstAddress: "ALupuEEz7kJjQTAvmtcBMBVuEjPa7GqZzE",
+ };
+ testNetwork(done, params);
});
-
-// BIP44 account field changes address list
-it('Changes the address list if bip44 account is changed', function(done) {
- driver.findElement(By.css('#bip44 .account'))
- .sendKeys('1');
- driver.findElement(By.css('.phrase'))
- .sendKeys('abandon abandon ability');
- driver.sleep(generateDelay).then(function() {
- getFirstAddress(function(address) {
- expect(address).toBe("1Nq2Wmu726XHCuGhctEtGmhxo3wzk5wZ1H");
- done();
- });
- });
+it('Allows selection of Auroracoin', function(done) {
+ var params = {
+ selectText: "AUR - Auroracoin",
+ firstAddress: "ANuraS6F4Jpi413FEnavjYkKYJJRHkgYCm",
+ };
+ testNetwork(done, params);
});
-
-// BIP44 change field changes address list
-it('Changes the address list if bip44 change is changed', function(done) {
- driver.findElement(By.css('#bip44 .change'))
- .sendKeys('1');
- driver.findElement(By.css('.phrase'))
- .sendKeys('abandon abandon ability');
- driver.sleep(generateDelay).then(function() {
- getFirstAddress(function(address) {
- expect(address).toBe("1KAGfWgqfVbSSXY56fNQ7YnhyKuoskHtYo");
- done();
- });
- });
+it('Allows selection of Bata', function(done) {
+ var params = {
+ selectText: "BTA - Bata",
+ firstAddress: "BGxBdNeYPtF3GCuTtZBPQdFxCkdBYSF3fj",
+ };
+ testNetwork(done, params);
});
-
-// BIP32 derivation path can be set
-it('Can use a custom bip32 derivation path', function(done) {
- driver.findElement(By.css('#bip32-tab a'))
- .click();
- driver.findElement(By.css('#bip32 .path'))
- .clear();
- driver.findElement(By.css('#bip32 .path'))
- .sendKeys('m/1');
- driver.findElement(By.css('.phrase'))
- .sendKeys('abandon abandon ability');
- driver.sleep(generateDelay).then(function() {
- getFirstAddress(function(address) {
- expect(address).toBe("16pYQQdLD1hH4hwTGLXBaZ9Teboi1AGL8L");
- done();
- });
- });
+it('Allows selection of Belacoin', function(done) {
+ var params = {
+ selectText: "BELA - Belacoin",
+ firstAddress: "BEeetqpNffdzeknSpNmQp5KAFh2KK1Qx7S",
+ };
+ testNetwork(done, params);
});
-
-// BIP32 can use hardened derivation paths
-it('Can use a hardened derivation paths', function(done) {
- driver.findElement(By.css('#bip32-tab a'))
- .click();
- driver.findElement(By.css('#bip32 .path'))
- .clear();
- driver.findElement(By.css('#bip32 .path'))
- .sendKeys("m/0'");
- driver.findElement(By.css('.phrase'))
- .sendKeys('abandon abandon ability');
- driver.sleep(generateDelay).then(function() {
- getFirstAddress(function(address) {
- expect(address).toBe("14aXZeprXAE3UUKQc4ihvwBvww2LuEoHo4");
- done();
- });
- });
+it('Allows selection of Bitcoin Atom', function(done) {
+ var params = {
+ selectText: "BCA - Bitcoin Atom",
+ firstAddress: "AMy6qMbJeC4zsGRL6iWszmeCdQH65fgfih",
+ };
+ testNetwork(done, params);
});
-
-// BIP32 extended private key is shown
-it('Shows the BIP32 extended private key', function(done) {
- driver.findElement(By.css('#bip32-tab a'))
- .click();
- driver.findElement(By.css('.phrase'))
- .sendKeys('abandon abandon ability');
- driver.sleep(generateDelay).then(function() {
- driver.findElement(By.css('.extended-priv-key'))
- .getAttribute("value")
- .then(function(privKey) {
- expect(privKey).toBe("xprv9va99uTVE5aLiutUVLTyfxfe8v8aaXjSQ1XxZbK6SezYVuikA9MnjQVTA8rQHpNA5LKvyQBpLiHbBQiiccKiBDs7eRmBogsvq3THFeLHYbe");
- done();
- });
- });
+it('Allows selection of Bitcoinplus', function(done) {
+ var params = {
+ selectText: "XBC - Bitcoinplus",
+ firstAddress: "B7FSynZoDbEwTCSgsXq9nJ5ue8owYLVL8r",
+ };
+ testNetwork(done, params);
});
-
-// BIP32 extended public key is shown
-it('Shows the BIP32 extended public key', function(done) {
- driver.findElement(By.css('#bip32-tab a'))
- .click();
- driver.findElement(By.css('.phrase'))
- .sendKeys('abandon abandon ability');
- driver.sleep(generateDelay).then(function() {
- driver.findElement(By.css('.extended-pub-key'))
- .getAttribute("value")
- .then(function(pubKey) {
- expect(pubKey).toBe("xpub69ZVZQzP4T8dwPxwbMzz36cNgwy4yzTHmETZMyihzzXXNi3thgg3HCow1RtY252wdw5rS8369xKnraN5Q93y3FkFfJp2XEHWUrkyXsjS93P");
- done();
- });
- });
+it('Allows selection of Bitcoin Private', function(done) {
+ var params = {
+ selectText: "BTCP - Bitcoin Private",
+ firstAddress: "b1M3PbiXXyN6Hdivdw5rJv5VKpLjPzhm4jM",
+ };
+ testNetwork(done, params);
});
-
-// Derivation path is shown in table
-it('Shows the derivation path in the table', function(done) {
- driver.findElement(By.css('.phrase'))
- .sendKeys('abandon abandon ability');
- driver.sleep(generateDelay).then(function() {
- getFirstPath(function(path) {
- expect(path).toBe("m/44'/0'/0'/0/0");
- done();
- });
- });
+it('Allows selection of Bitcoinz', function(done) {
+ var params = {
+ selectText: "BTCZ - Bitcoinz",
+ firstAddress: "t1X2YQoxs8cYRo2oaBYgVEwW5QNjCC59NYc",
+ };
+ testNetwork(done, params);
});
-
-// Derivation path for address can be hardened
-it('Can derive hardened addresses', function(done) {
- driver.findElement(By.css('#bip32-tab a'))
- .click();
- driver.executeScript(function() {
- $(".hardened-addresses").prop("checked", true);
- });
- driver.findElement(By.css('.phrase'))
- .sendKeys('abandon abandon ability');
- driver.sleep(generateDelay).then(function() {
- getFirstAddress(function(address) {
- expect(address).toBe("18exLzUv7kfpiXRzmCjFDoC9qwNLFyvwyd");
- done();
- });
- });
+it('Allows selection of BitCloud', function(done) {
+ var params = {
+ selectText: "BTDX - BitCloud",
+ firstAddress: "BHbWitXCNgTf1BhsRDNMP186EeibuzmrBi",
+ };
+ testNetwork(done, params);
});
-
-// Derivation path visibility can be toggled
-it('Can toggle visibility of the derivation path column', function(done) {
- driver.findElement(By.css('.phrase'))
- .sendKeys('abandon abandon ability');
+it('Allows selection of Bitcore', function(done) {
+ var params = {
+ selectText: "BTX - Bitcore",
+ firstAddress: "2Rgp5Znhpy34TK4QmPkfCiYs9r4KovfTH9",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Bitsend', function(done) {
+ var params = {
+ selectText: "BSD - Bitsend",
+ firstAddress: "iBPk7LYjDun3EPk7CRR8UUmnPoceVc1bp2",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Britcoin', function(done) {
+ var params = {
+ selectText: "BRIT - Britcoin",
+ firstAddress: "B6Aue4J2XLs1f1dtD4H1SHYFfh4XrmEbrw",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Canadaecoin', function(done) {
+ var params = {
+ selectText: "CDN - Canadaecoin",
+ firstAddress: "CanAyCfd5Rj2CQVfaoAmvDUZunPM5W1AEQ",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Cannacoin', function(done) {
+ var params = {
+ selectText: "CCN - Cannacoin",
+ firstAddress: "CYjW8xWB43g6krLJTmmrPk1PonoQX7h9Qd",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Clubcoin', function(done) {
+ var params = {
+ selectText: "CLUB - Clubcoin",
+ firstAddress: "CHMDEXN4sihpSVX4GyAa2hZ62shnby7uyN",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Compcoin', function(done) {
+ var params = {
+ selectText: "CMP - Compcoin",
+ firstAddress: "CLshtw3zhxkseBJS46UF12v3AFy9Dx7JVv",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Crave', function(done) {
+ var params = {
+ selectText: "CRAVE - Crave",
+ firstAddress: "VCYJeti6uKMNBFKCL7eP96UwuFWYHM7c85",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Defcoin', function(done) {
+ var params = {
+ selectText: "DFC - Defcoin",
+ firstAddress: "D8swcgyaaFUrXZU3ATwbgy16buCpWqbG1M",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Diamond', function(done) {
+ var params = {
+ selectText: "DMD - Diamond",
+ firstAddress: "dJnrVbLL9UPjdaVRz2C8VpqHZknqAqjLek",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Digibyte', function(done) {
+ var params = {
+ selectText: "DGB - Digibyte",
+ firstAddress: "D85Rp9jwLtMdmP6wGjTiqHBdVQLST3YCEq",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Digitalcoin', function(done) {
+ var params = {
+ selectText: "DGC - Digitalcoin",
+ firstAddress: "DKw4UGKEAZWweDNEbBFNQx4EM8x1mpUdia",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Ecoin', function(done) {
+ var params = {
+ selectText: "ECN - Ecoin",
+ firstAddress: "e6WFPLG5gcXyF7cESFteH1hE2XSmowW5yB",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Edrcoin', function(done) {
+ var params = {
+ selectText: "EDRC - Edrcoin",
+ firstAddress: "eh1nUJsvgKPFv6ebMBfcwJ299GMCpjeZUG",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Egulden', function(done) {
+ var params = {
+ selectText: "EFL - Egulden",
+ firstAddress: "Lg66yt55R7edRM58cDhKzXik2kFme3viX7",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Einsteinium', function(done) {
+ var params = {
+ selectText: "EMC2 - Einsteinium",
+ firstAddress: "EVAABm9hXKHk2MpVMbwNakRubFnNha5m8m",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Europecoin', function(done) {
+ var params = {
+ selectText: "ERC - Europecoin",
+ firstAddress: "ESA2YwPYntAoaPrE8Fm5qkKRtkcwLcwD6R",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Exclusivecoin', function(done) {
+ var params = {
+ selectText: "EXCL - Exclusivecoin",
+ firstAddress: "EbUa6m8UZW6nTxsYZD2FsDjkadKbp5M6JT",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Feathercoin', function(done) {
+ var params = {
+ selectText: "FTC - Feathercoin",
+ firstAddress: "6gDdjAMoSgQaW8UhqK3oboHs6ftGAroKkM",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Firstcoin', function(done) {
+ var params = {
+ selectText: "FRST - Firstcoin",
+ firstAddress: "FJN9GzfMm7Q8R4DJwK1H9F6A1GTghvFiMJ",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Flashcoin', function(done) {
+ var params = {
+ selectText: "FLASH - Flashcoin",
+ firstAddress: "UWfpf5LfMmLxZYooEb2EyvWhZ8NG7EZDRt",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of GCRCoin', function(done) {
+ var params = {
+ selectText: "GCR - GCRCoin",
+ firstAddress: "GJjF5cLwyXLacpuvXAVksxGxKvHDjx58d6",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Gobyte', function(done) {
+ var params = {
+ selectText: "GBX - Gobyte",
+ firstAddress: "GS813Ys2brkmvSUw1rUqGPm2HqQVDHJRyA",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Gridcoin', function(done) {
+ var params = {
+ selectText: "GRC - Gridcoin",
+ firstAddress: "SGrWbBPvobgqKRF8td1Kdc9vbRY7MJ78Y9",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Gulden', function(done) {
+ var params = {
+ selectText: "NLG - Gulden",
+ firstAddress: "GcDP7cNEc33MPPdTFNJ8pZc6VMZJ2CbKxY",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Helleniccoin', function(done) {
+ var params = {
+ selectText: "HNC - Helleniccoin",
+ firstAddress: "LbHEKe5H72zp9G1fuWNiiNePTUfJb88915",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Hempcoin', function(done) {
+ var params = {
+ selectText: "THC - Hempcoin",
+ firstAddress: "H8sdWbZyJV4gyXyHtLXDaNnAuUDhK5mfTV",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Insane', function(done) {
+ var params = {
+ selectText: "INSN - Insane",
+ firstAddress: "iMPqEJMiXWuxC9U2NVinCCMr4t72h58EWx",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Iop', function(done) {
+ var params = {
+ selectText: "IOP - Iop",
+ firstAddress: "pGKQmcaPf95Ur5o6oHK4qdiZ52p1yaTvq1",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Ixcoin', function(done) {
+ var params = {
+ selectText: "IXC - Ixcoin",
+ firstAddress: "xgE9bTZ6YypT3E6ByzkTt31Hq68E9BqywH",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Kobocoin', function(done) {
+ var params = {
+ selectText: "KOBO - Kobocoin",
+ firstAddress: "FTVoNJETXDAM8x7MnmdE8RwWndSr9PQWhy",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Landcoin', function(done) {
+ var params = {
+ selectText: "LDCN - Landcoin",
+ firstAddress: "LLvLwNjG1aJcn1RS4W4GJUbv8fNaRATG7c",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Library Credits', function(done) {
+ var params = {
+ selectText: "LBC - Library Credits",
+ firstAddress: "bQJEQrHDJyHdqycB32uysh1SWn8Ln8LMdg",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Linx', function(done) {
+ var params = {
+ selectText: "LINX - Linx",
+ firstAddress: "XGWQ3cb3LGUB3VnHmj6xYSMgnokNbf6dyk",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Litecoincash', function(done) {
+ var params = {
+ selectText: "LCC - Litecoincash",
+ firstAddress: "Ce5n7fjUuQPLutJ4W5nCCfQLKdKLE1mv9A",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Lynx', function(done) {
+ var params = {
+ selectText: "LYNX - Lynx",
+ firstAddress: "KUeY3ZdZkg96p4W98pj1JjygCFU1XqWdw3",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Megacoin', function(done) {
+ var params = {
+ selectText: "MEC - Megacoin",
+ firstAddress: "MDfAj9CzkC1HpcUiVGnHp8yKTa7WXgu8AY",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Minexcoin', function(done) {
+ var params = {
+ selectText: "MNX - Minexcoin",
+ firstAddress: "XC1VnyJVfiMDwWgFtAHDp41cgY3AHk3dJT",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Navcoin', function(done) {
+ var params = {
+ selectText: "NAV - Navcoin",
+ firstAddress: "NTQVTPK3NWSQLKoffkiQw99T8PifkF1Y2U",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Neoscoin', function(done) {
+ var params = {
+ selectText: "NEOS - Neoscoin",
+ firstAddress: "NgATz6QbQNXvayHQ4CpZayugb9HeaPDdby",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Neurocoin', function(done) {
+ var params = {
+ selectText: "NRO - Neurocoin",
+ firstAddress: "NVdYErQ3mFpDuF5DquW9WMiT7sLc8ufFTn",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Newyorkc', function(done) {
+ var params = {
+ selectText: "NYC - Newyorkc",
+ firstAddress: "RSVMfyH1fKfy3puADJEhut2vfkRyon6imm",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Novacoin', function(done) {
+ var params = {
+ selectText: "NVC - Novacoin",
+ firstAddress: "4JRvUmxcKCJmaMXZyvRoSS1cmG2XvnZfHN",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Nushares', function(done) {
+ var params = {
+ selectText: "NSR - Nushares",
+ firstAddress: "SecjXzU3c7EecdT7EbC4vvmbdtBBokWh6J",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Okcash', function(done) {
+ var params = {
+ selectText: "OK - Okcash",
+ firstAddress: "PV4Qp1TUYuGv4TqVtLZtqvrsWWRycfx1Yi",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Omnicore', function(done) {
+ var params = {
+ selectText: "OMNI - Omnicore",
+ firstAddress: "1Q1t3gonjCT3rW38TsTsCvgSc3hh7zBGbi",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Pesobit', function(done) {
+ var params = {
+ selectText: "PSB - Pesobit",
+ firstAddress: "PDePsF7ALyXP7JaywokdYiRTDtKa14MAr1",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Pinkcoin', function(done) {
+ var params = {
+ selectText: "PINK - Pinkcoin",
+ firstAddress: "2TgjYQffjbzUHJghNaVbdsjHbRwruC3yzC",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of POSWcoin', function(done) {
+ var params = {
+ selectText: "POSW - POSWcoin",
+ firstAddress: "PNxewmZoPnGBvoEbH6hgQZCK1igDiBCdgC",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Potcoin', function(done) {
+ var params = {
+ selectText: "POT - Potcoin",
+ firstAddress: "PEo7Vg2ctXgpP4vuLPeY9aGJtZotyrmiHc",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Putincoin', function(done) {
+ var params = {
+ selectText: "PUT - Putincoin",
+ firstAddress: "PViWnfr2uFtovd6e7joM49C94CsGSnqJis",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Reddcoin', function(done) {
+ var params = {
+ selectText: "RDD - Reddcoin",
+ firstAddress: "RtgRvXMBng1y51ftteveFqwNfyRG18HpxQ",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of RevolutionVR', function(done) {
+ var params = {
+ selectText: "RVR - RevolutionVR",
+ firstAddress: "VXeeoP2jkzZnMFxtc66ZBZK1NHN5QJnnjL",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Rubycoin', function(done) {
+ var params = {
+ selectText: "RBY - Rubycoin",
+ firstAddress: "RV76JDtjTs11JdMDRToYn6CHecMRPLnKS6",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Salus', function(done) {
+ var params = {
+ selectText: "SLS - Salus",
+ firstAddress: "SNzPi1CafHFm3WWjRo43aMgiaEEj3ogjww",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Smileycoin', function(done) {
+ var params = {
+ selectText: "SMLY - Smileycoin",
+ firstAddress: "BEZVnEBCAyFByrgKpwAgYgtvP4rKAd9Sj2",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Solarcoin', function(done) {
+ var params = {
+ selectText: "SLR - Solarcoin",
+ firstAddress: "8LZ13HbnjtaMJWSvvVFNTLf71zFfDrhwLu",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of stash', function(done) {
+ var params = {
+ selectText: "STASH - Stash",
+ firstAddress: "XxwAsWB7REDKmAvHA85SbEZQQtpxeUDxS3",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of stash testnet', function(done) {
+ var params = {
+ selectText: "STASH - Stash Testnet",
+ firstAddress: "YdbhtMuGsPSkE6bPdNTHoFSszQKmK4S5LT",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Stratis', function(done) {
+ var params = {
+ selectText: "STRAT - Stratis",
+ firstAddress: "ScfJnq3QDhKgDMEds6sqUE1ot6ShfhmXXq",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Stratis Test', function(done) {
+ var params = {
+ selectText: "TSTRAT - Stratis Testnet",
+ firstAddress: "TRLWm3dye4FRrDWouwYUSUZP96xb76mBE3",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Syscoin', function(done) {
+ var params = {
+ selectText: "SYS - Syscoin",
+ firstAddress: "SZwJi42Pst3VAMomyK5DG4157WM5ofRmSj",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Toa', function(done) {
+ var params = {
+ selectText: "TOA - Toa",
+ firstAddress: "TSe1QAnUwQzUfbBusDzRJ9URttrRGKoNKF",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Ultimatesecurecash', function(done) {
+ var params = {
+ selectText: "USC - Ultimatesecurecash",
+ firstAddress: "UPyLAZU2Che5fiy7Ed8xVJFmXAUhitA4ug",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Unobtanium', function(done) {
+ var params = {
+ selectText: "UNO - Unobtanium",
+ firstAddress: "uUBMPVMXrR6qhqornJqKTWgr8L69vihSL9",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Vcash', function(done) {
+ var params = {
+ selectText: "XVC - Vcash",
+ firstAddress: "VuL53MSY6KjvAjKSeRkh3NDnKykacDVeps",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Verge', function(done) {
+ var params = {
+ selectText: "XVG - Verge",
+ firstAddress: "DCrVuGkMjLJpTGgwAgv9AcMdeb1nkWbjZA",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Vertcoin', function(done) {
+ var params = {
+ selectText: "VTC - Vertcoin",
+ firstAddress: "Vf6koGuiWdXQfx8tNqxoNeEDxh4xh5cxsG",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Vivo', function(done) {
+ var params = {
+ selectText: "VIVO - Vivo",
+ firstAddress: "VFmBwuXXGhJe7MarQG2GfzHMFebRHgfSpB",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Vpncoin', function(done) {
+ var params = {
+ selectText: "VASH - Vpncoin",
+ firstAddress: "VoEmH1qXC4TsSgBAStR21QYetwnFqbqCx9",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Whitecoin', function(done) {
+ var params = {
+ selectText: "XWC - Whitecoin",
+ firstAddress: "WcSwCAUqrSgeSYbsaS3SSWWhsx8KRYTFDR",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Wincoin', function(done) {
+ var params = {
+ selectText: "WC - Wincoin",
+ firstAddress: "WaDVCESMGgyKgNESdn3u43NnwmGSkZED3Z",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Zcoin', function(done) {
+ var params = {
+ selectText: "XZC - Zcoin",
+ firstAddress: "a6VcMdP4XgAA9Tr7xNszmPG5FZpfRf17Cq",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Zcash', function(done) {
+ var params = {
+ selectText: "ZEC - Zcash",
+ firstAddress: "t1Sz8AneMcVuzUg3tPJ8et5AS5LFJ7K2EF9",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Zclassic', function(done) {
+ var params = {
+ selectText: "ZCL - Zclassic",
+ firstAddress: "t1TBMxTvVJRybUbMLGWq8H4A8F4VUL7czEc",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Zencash', function(done) {
+ var params = {
+ selectText: "ZEN - Zencash",
+ firstAddress: "znWh9XASyW2dZq5tck84wFjiwuqVysi7q3p",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Energi', function(done) {
+ var params = {
+ selectText: "NRG - Energi",
+ firstAddress: "EejRy4t4nidzhGGzkJUgFP3z4HYBjhTsRt",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Ethereum Classic', function(done) {
+ var params = {
+ selectText: "ETC - Ethereum Classic",
+ firstAddress: "0x3c05e5556693808367afB62eF3b63e35d6eD249A",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Pirl', function(done) {
+ var params = {
+ selectText: "PIRL - Pirl",
+ firstAddress: "0xe77FC0723dA122B5025CA79193c28563eB47e776",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of MIX', function(done) {
+ var params = {
+ selectText: "MIX - MIX",
+ firstAddress: "0x98BC5e63aeb6A4e82d72850d20710F07E29A29F1",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Musicoin', function(done) {
+ var params = {
+ selectText: "MUSIC - Musicoin",
+ firstAddress: "0xDc060e4A0b0313ea83Cf6B3A39B9db2D29004897",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Poa', function(done) {
+ var params = {
+ selectText: "POA - Poa",
+ firstAddress: "0x53aF28d754e106210C3d0467Dd581eaf7e3C5e60",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Expanse', function(done) {
+ var params = {
+ selectText: "EXP - Expanse",
+ firstAddress: "0xf57FeAbf26582b6E3E666559d3B1Cc6fB2b2c5F6",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Callisto', function(done) {
+ var params = {
+ selectText: "CLO - Callisto",
+ firstAddress: "0x4f9364F7420B317266C51Dc8eB979717D4dE3f4E",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of HUSH', function(done) {
+ var params = {
+ selectText: "HUSH - Hush",
+ firstAddress: "t1g6rLXUnJaiJuu4q4zmJjoa9Gk4fwKpiuA",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of ExchangeCoin', function(done) {
+ var params = {
+ selectText: "EXCC - ExchangeCoin",
+ firstAddress: "22txYKpFN5fwGwdSs2UBf7ywewbLM92YqK7E",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of Artax', function(done) {
+ var params = {
+ selectText: "XAX - Artax",
+ firstAddress: "AYxaQPY7XLidG31V7F3yNzwxPYpYzRqG4q",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of BitcoinGreen', function(done) {
+ var params = {
+ selectText: "BITG - Bitcoin Green",
+ firstAddress: "GeNGm9SkEfwbsws3UrrUSE2sJeyWYjzraY",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of ANON', function(done) {
+ var params = {
+ selectText: "ANON - ANON",
+ firstAddress: "AnU6pijpEeUZFWSTyM2qTqZQn996Zq1Xard",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of ProjectCoin', function(done) {
+ var params = {
+ selectText: "PRJ - ProjectCoin",
+ firstAddress: "PXZG97saRseSCftfe1mcFmfAA7pf6qBbaz",
+ };
+ testNetwork(done, params);
+});
+
+// BIP39 seed is set from phrase
+it('Sets the bip39 seed from the prhase', function(done) {
+ driver.findElement(By.css('.phrase'))
+ .sendKeys('abandon abandon ability');
+ driver.sleep(generateDelay).then(function() {
+ driver.findElement(By.css('.seed'))
+ .getAttribute("value")
+ .then(function(seed) {
+ expect(seed).toBe("20da140d3dd1df8713cefcc4d54ce0e445b4151027a1ab567b832f6da5fcc5afc1c3a3f199ab78b8e0ab4652efd7f414ac2c9a3b81bceb879a70f377aa0a58f3");
+ done();
+ })
+ });
+});
+
+// BIP32 root key is set from phrase
+it('Sets the bip39 root key from the prhase', function(done) {
+ driver.findElement(By.css('.phrase'))
+ .sendKeys('abandon abandon ability');
+ driver.sleep(generateDelay).then(function() {
+ driver.findElement(By.css('.root-key'))
+ .getAttribute("value")
+ .then(function(seed) {
+ expect(seed).toBe("xprv9s21ZrQH143K2jkGDCeTLgRewT9F2pH5JZs2zDmmjXes34geVnFiuNa8KTvY5WoYvdn4Ag6oYRoB6cXtc43NgJAEqDXf51xPm6fhiMCKwpi");
+ done();
+ })
+ });
+});
+
+// Tabs show correct addresses when changed
+it('Shows the correct address when tab is changed', function(done) {
+ driver.findElement(By.css('.phrase'))
+ .sendKeys('abandon abandon ability');
+ driver.sleep(generateDelay).then(function() {
+ driver.findElement(By.css('#bip32-tab a'))
+ .click();
+ driver.sleep(generateDelay).then(function() {
+ getFirstAddress(function(address) {
+ expect(address).toBe("17uQ7s2izWPwBmEVFikTmZUjbBKWYdJchz");
+ done();
+ });
+ });
+ });
+});
+
+// BIP44 derivation path is shown
+it('Shows the derivation path for bip44 tab', function(done) {
+ driver.findElement(By.css('.phrase'))
+ .sendKeys('abandon abandon ability');
+ driver.sleep(generateDelay).then(function() {
+ driver.findElement(By.css('#bip44 .path'))
+ .getAttribute("value")
+ .then(function(path) {
+ expect(path).toBe("m/44'/0'/0'/0");
+ done();
+ })
+ });
+});
+
+// BIP44 extended private key is shown
+it('Shows the extended private key for bip44 tab', function(done) {
+ driver.findElement(By.css('.phrase'))
+ .sendKeys('abandon abandon ability');
+ driver.sleep(generateDelay).then(function() {
+ driver.findElement(By.css('.extended-priv-key'))
+ .getAttribute("value")
+ .then(function(path) {
+ expect(path).toBe("xprvA2DxxvPZcyRvYgZMGS53nadR32mVDeCyqQYyFhrCVbJNjPoxMeVf7QT5g7mQASbTf9Kp4cryvcXnu2qurjWKcrdsr91jXymdCDNxKgLFKJG");
+ done();
+ })
+ });
+});
+
+// BIP44 extended public key is shown
+it('Shows the extended public key for bip44 tab', function(done) {
+ driver.findElement(By.css('.phrase'))
+ .sendKeys('abandon abandon ability');
+ driver.sleep(generateDelay).then(function() {
+ driver.findElement(By.css('.extended-pub-key'))
+ .getAttribute("value")
+ .then(function(path) {
+ expect(path).toBe("xpub6FDKNRvTTLzDmAdpNTc49ia9b4byd6vqCdUa46Fp3vqMcC96uBoufCmZXQLiN5AK3iSCJMhf9gT2sxkpyaPepRuA7W3MujV5tGmF5VfbueM");
+ done();
+ })
+ });
+});
+
+// BIP44 account field changes address list
+it('Changes the address list if bip44 account is changed', function(done) {
+ driver.findElement(By.css('#bip44 .account'))
+ .sendKeys('1');
+ driver.findElement(By.css('.phrase'))
+ .sendKeys('abandon abandon ability');
+ driver.sleep(generateDelay).then(function() {
+ getFirstAddress(function(address) {
+ expect(address).toBe("1Nq2Wmu726XHCuGhctEtGmhxo3wzk5wZ1H");
+ done();
+ });
+ });
+});
+
+// BIP44 change field changes address list
+it('Changes the address list if bip44 change is changed', function(done) {
+ driver.findElement(By.css('#bip44 .change'))
+ .sendKeys('1');
+ driver.findElement(By.css('.phrase'))
+ .sendKeys('abandon abandon ability');
+ driver.sleep(generateDelay).then(function() {
+ getFirstAddress(function(address) {
+ expect(address).toBe("1KAGfWgqfVbSSXY56fNQ7YnhyKuoskHtYo");
+ done();
+ });
+ });
+});
+
+// BIP32 derivation path can be set
+it('Can use a custom bip32 derivation path', function(done) {
+ driver.findElement(By.css('#bip32-tab a'))
+ .click();
+ driver.findElement(By.css('#bip32 .path'))
+ .clear();
+ driver.findElement(By.css('#bip32 .path'))
+ .sendKeys('m/1');
+ driver.findElement(By.css('.phrase'))
+ .sendKeys('abandon abandon ability');
+ driver.sleep(generateDelay).then(function() {
+ getFirstAddress(function(address) {
+ expect(address).toBe("16pYQQdLD1hH4hwTGLXBaZ9Teboi1AGL8L");
+ done();
+ });
+ });
+});
+
+// BIP32 can use hardened derivation paths
+it('Can use a hardened derivation paths', function(done) {
+ driver.findElement(By.css('#bip32-tab a'))
+ .click();
+ driver.findElement(By.css('#bip32 .path'))
+ .clear();
+ driver.findElement(By.css('#bip32 .path'))
+ .sendKeys("m/0'");
+ driver.findElement(By.css('.phrase'))
+ .sendKeys('abandon abandon ability');
+ driver.sleep(generateDelay).then(function() {
+ getFirstAddress(function(address) {
+ expect(address).toBe("14aXZeprXAE3UUKQc4ihvwBvww2LuEoHo4");
+ done();
+ });
+ });
+});
+
+// BIP32 extended private key is shown
+it('Shows the BIP32 extended private key', function(done) {
+ driver.findElement(By.css('#bip32-tab a'))
+ .click();
+ driver.findElement(By.css('.phrase'))
+ .sendKeys('abandon abandon ability');
+ driver.sleep(generateDelay).then(function() {
+ driver.findElement(By.css('.extended-priv-key'))
+ .getAttribute("value")
+ .then(function(privKey) {
+ expect(privKey).toBe("xprv9va99uTVE5aLiutUVLTyfxfe8v8aaXjSQ1XxZbK6SezYVuikA9MnjQVTA8rQHpNA5LKvyQBpLiHbBQiiccKiBDs7eRmBogsvq3THFeLHYbe");
+ done();
+ });
+ });
+});
+
+// BIP32 extended public key is shown
+it('Shows the BIP32 extended public key', function(done) {
+ driver.findElement(By.css('#bip32-tab a'))
+ .click();
+ driver.findElement(By.css('.phrase'))
+ .sendKeys('abandon abandon ability');
+ driver.sleep(generateDelay).then(function() {
+ driver.findElement(By.css('.extended-pub-key'))
+ .getAttribute("value")
+ .then(function(pubKey) {
+ expect(pubKey).toBe("xpub69ZVZQzP4T8dwPxwbMzz36cNgwy4yzTHmETZMyihzzXXNi3thgg3HCow1RtY252wdw5rS8369xKnraN5Q93y3FkFfJp2XEHWUrkyXsjS93P");
+ done();
+ });
+ });
+});
+
+// Derivation path is shown in table
+it('Shows the derivation path in the table', function(done) {
+ driver.findElement(By.css('.phrase'))
+ .sendKeys('abandon abandon ability');
+ driver.sleep(generateDelay).then(function() {
+ getFirstPath(function(path) {
+ expect(path).toBe("m/44'/0'/0'/0/0");
+ done();
+ });
+ });
+});
+
+// Derivation path for address can be hardened
+it('Can derive hardened addresses', function(done) {
+ driver.findElement(By.css('#bip32-tab a'))
+ .click();
+ driver.executeScript(function() {
+ $(".hardened-addresses").prop("checked", true);
+ });
+ driver.findElement(By.css('.phrase'))
+ .sendKeys('abandon abandon ability');
+ driver.sleep(generateDelay).then(function() {
+ getFirstAddress(function(address) {
+ expect(address).toBe("18exLzUv7kfpiXRzmCjFDoC9qwNLFyvwyd");
+ done();
+ });
+ });
+});
+
+// Derivation path visibility can be toggled
+it('Can toggle visibility of the derivation path column', function(done) {
+ driver.findElement(By.css('.phrase'))
+ .sendKeys('abandon abandon ability');
driver.sleep(generateDelay).then(function() {
driver.findElement(By.css('.index-toggle'))
.click();
// A custom number of additional addresses can be generated
it('Can generate more rows in the table', function(done) {
- driver.findElement(By.css('.rows-to-add'))
- .clear();
- driver.findElement(By.css('.rows-to-add'))
- .sendKeys('1');
driver.findElement(By.css('.phrase'))
.sendKeys('abandon abandon ability');
driver.sleep(generateDelay).then(function() {
+ driver.findElement(By.css('.rows-to-add'))
+ .clear();
+ driver.findElement(By.css('.rows-to-add'))
+ .sendKeys('1');
driver.findElement(By.css('.more'))
.click();
driver.sleep(generateDelay).then(function() {
driver.findElement(By.css('.phrase'))
.sendKeys("abandon abandon ability");
driver.sleep(generateDelay).then(function() {
- // generate more addresses
- driver.findElement(By.css('.more'))
- .click();
// change tabs which should cancel the previous generating
+ driver.findElement(By.css('.rows-to-add'))
+ .clear();
+ driver.findElement(By.css('.rows-to-add'))
+ .sendKeys('20');
driver.findElement(By.css('#bip32-tab a'))
.click()
driver.sleep(generateDelay).then(function() {
});
});
});
-});
+}, generateDelay + 5000);
// Github issue 49
// padding for binary should give length with multiple of 256
useHardenedAddresses: null,
});
});
+it('Can set the derivation path on bip32 tab for coinomi/ledger', function(done) {
+ testClientSelect(done, {
+ selectValue: "3",
+ bip32path: "m/44'/0'/0'",
+ useHardenedAddresses: null,
+ });
+});
// github issue 58
// https://github.com/iancoleman/bip39/issues/58
});
});
-// Bitcoin Cash address can be set to use bitpay format
-it('Can use bitpay format for bitcoin cash addresses', function(done) {
+// Bitcoin Cash address can be set to use cashaddr format
+it('Can use cashaddr format for bitcoin cash addresses', function(done) {
+ driver.executeScript(function() {
+ $(".use-bch-cashaddr-addresses").prop("checked", true);
+ });
+ driver.findElement(By.css('.phrase'))
+ .sendKeys("abandon abandon ability");
+ selectNetwork("BCH - Bitcoin Cash");
+ driver.sleep(generateDelay).then(function() {
+ getFirstAddress(function(address) {
+ expect(address).toBe("bitcoincash:qzlquk7w4hkudxypl4fgv8x279r754dkvur7jpcsps");
+ done();
+ });
+ });
+});
+
+// Bitcoin Cash address can be set to use bitpay format
+it('Can use bitpay format for bitcoin cash addresses', function(done) {
+ driver.executeScript(function() {
+ $(".use-bch-bitpay-addresses").prop("checked", true);
+ });
+ driver.findElement(By.css('.phrase'))
+ .sendKeys("abandon abandon ability");
+ selectNetwork("BCH - Bitcoin Cash");
+ driver.sleep(generateDelay).then(function() {
+ getFirstAddress(function(address) {
+ expect(address).toBe("CZnpA9HPmvhuhLLPWJP8rNDpLUYXy1LXFk");
+ done();
+ });
+ });
+});
+
+// Bitcoin Cash address can be set to use legacy format
+it('Can use legacy format for bitcoin cash addresses', function(done) {
driver.executeScript(function() {
- $(".use-bitpay-addresses").prop("checked", true);
+ $(".use-bch-legacy-addresses").prop("checked", true);
});
driver.findElement(By.css('.phrase'))
.sendKeys("abandon abandon ability");
selectNetwork("BCH - Bitcoin Cash");
driver.sleep(generateDelay).then(function() {
getFirstAddress(function(address) {
- expect(address).toBe("CZnpA9HPmvhuhLLPWJP8rNDpLUYXy1LXFk");
+ expect(address).toBe("1JKvb6wKtsjNoCRxpZ4DGrbniML7z5U16A");
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();
+ });
+ });
+});
+
+it('Shows the derivation path for bip84 tab', function(done) {
+ driver.findElement(By.css('#bip84-tab a'))
+ .click()
+ driver.findElement(By.css('.phrase'))
+ .sendKeys('abandon abandon ability');
+ driver.sleep(generateDelay).then(function() {
+ driver.findElement(By.css('#bip84 .path'))
+ .getAttribute("value")
+ .then(function(path) {
+ expect(path).toBe("m/84'/0'/0'/0");
+ done();
+ })
+ });
+});
+
+it('Shows the extended private key for bip84 tab', function(done) {
+ driver.findElement(By.css('#bip84-tab a'))
+ .click()
+ driver.findElement(By.css('.phrase'))
+ .sendKeys('abandon abandon ability');
+ driver.sleep(generateDelay).then(function() {
+ driver.findElement(By.css('.extended-priv-key'))
+ .getAttribute("value")
+ .then(function(path) {
+ expect(path).toBe("zprvAev3RKrZ3QVKiUFCfdeMRen1BPDJgdNt1XpxiDy8acSs4kkAGTCvq7HeRYRNNpo8EtEjCFQBWavJwtCUR29y4TUCH4X5RXMcyq48uN8y9BP");
+ done();
+ })
+ });
+});
+
+it('Shows the extended public key for bip84 tab', function(done) {
+ driver.findElement(By.css('#bip84-tab a'))
+ .click()
+ driver.findElement(By.css('.phrase'))
+ .sendKeys('abandon abandon ability');
+ driver.sleep(generateDelay).then(function() {
+ driver.findElement(By.css('.extended-pub-key'))
+ .getAttribute("value")
+ .then(function(path) {
+ expect(path).toBe("zpub6suPpqPSsn3cvxKfmfBMnnijjR3o666jNkkZWcNk8wyqwZ5JozXBNuc8Gs7DB3uLwTDvGVTspVEAUQcEjKF3pZHgywVbubdTqbXTUg7usyx");
+ done();
+ })
+ });
+});
+
+it('Changes the address list if bip84 account is changed', function(done) {
+ driver.findElement(By.css('#bip84-tab a'))
+ .click()
+ driver.findElement(By.css('#bip84 .account'))
+ .sendKeys('1');
+ driver.findElement(By.css('.phrase'))
+ .sendKeys('abandon abandon ability');
+ driver.sleep(generateDelay).then(function() {
+ getFirstAddress(function(address) {
+ expect(address).toBe("bc1qp7vv669t2fy965jdzvqwrraana89ctd5ewc662");
+ done();
+ });
+ });
+});
+
+it('Changes the address list if bip84 change is changed', function(done) {
+ driver.findElement(By.css('#bip84-tab a'))
+ .click()
+ driver.findElement(By.css('#bip84 .change'))
+ .sendKeys('1');
+ driver.findElement(By.css('.phrase'))
+ .sendKeys('abandon abandon ability');
+ driver.sleep(generateDelay).then(function() {
+ getFirstAddress(function(address) {
+ expect(address).toBe("bc1qr39vj6rh06ff05m53uxq8uazehwhccswylhrs2");
+ done();
+ });
+ });
+});
+
+it('Passes the official BIP84 test spec for rootpriv', function(done) {
+ driver.findElement(By.css('#bip84-tab a'))
+ .click()
+ driver.findElement(By.css('.phrase'))
+ .sendKeys('abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about');
+ driver.sleep(generateDelay).then(function() {
+ driver.findElement(By.css(".root-key"))
+ .getAttribute("value")
+ .then(function(rootKey) {
+ expect(rootKey).toBe("zprvAWgYBBk7JR8Gjrh4UJQ2uJdG1r3WNRRfURiABBE3RvMXYSrRJL62XuezvGdPvG6GFBZduosCc1YP5wixPox7zhZLfiUm8aunE96BBa4Kei5");
+ done();
+ })
+ });
+});
+
+it('Passes the official BIP84 test spec for account 0 xprv', function(done) {
+ driver.findElement(By.css('#bip84-tab a'))
+ .click()
+ driver.findElement(By.css('.phrase'))
+ .sendKeys('abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about');
+ driver.sleep(generateDelay).then(function() {
+ driver.findElement(By.css("#bip84 .account-xprv"))
+ .getAttribute("value")
+ .then(function(rootKey) {
+ expect(rootKey).toBe("zprvAdG4iTXWBoARxkkzNpNh8r6Qag3irQB8PzEMkAFeTRXxHpbF9z4QgEvBRmfvqWvGp42t42nvgGpNgYSJA9iefm1yYNZKEm7z6qUWCroSQnE");
+ done();
+ })
+ });
+});
+
+it('Passes the official BIP84 test spec for account 0 xpub', function(done) {
+ driver.findElement(By.css('#bip84-tab a'))
+ .click()
+ driver.findElement(By.css('.phrase'))
+ .sendKeys('abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about');
+ driver.sleep(generateDelay).then(function() {
+ driver.findElement(By.css("#bip84 .account-xpub"))
+ .getAttribute("value")
+ .then(function(rootKey) {
+ expect(rootKey).toBe("zpub6rFR7y4Q2AijBEqTUquhVz398htDFrtymD9xYYfG1m4wAcvPhXNfE3EfH1r1ADqtfSdVCToUG868RvUUkgDKf31mGDtKsAYz2oz2AGutZYs");
+ done();
+ })
+ });
+});
+
+it('Passes the official BIP84 test spec for account 0 first address', function(done) {
+ driver.findElement(By.css('#bip84-tab a'))
+ .click()
+ 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("bc1qcr8te4kr609gcawutmrza0j4xv80jy8z306fyu");
+ done();
+ });
+ });
+});
+
+it('Passes the official BIP84 test spec for account 0 first change address', function(done) {
+ driver.findElement(By.css('#bip84-tab a'))
+ .click()
+ driver.findElement(By.css('.phrase'))
+ .sendKeys('abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about');
+ driver.findElement(By.css('#bip84 .change'))
+ .sendKeys('1');
+ driver.sleep(generateDelay).then(function() {
+ getFirstAddress(function(address) {
+ expect(address).toBe("bc1q8c6fshw2dlwun7ekn9qwf37cu2rn755upcp6el");
+ done();
+ });
+ });
+});
+
+it('Can display the table as csv', function(done) {
+ var headings = "path,address,public key,private key";
+ var row1 = "m/44'/0'/0'/0/0,1Di3Vp7tBWtyQaDABLAjfWtF6V7hYKJtug,033f5aed5f6cfbafaf223188095b5980814897295f723815fea5d3f4b648d0d0b3,L26cVSpWFkJ6aQkPkKmTzLqTdLJ923e6CzrVh9cmx21QHsoUmrEE";
+ var row20 = "m/44'/0'/0'/0/19,1KhBy28XLAciXnnRvm71PvQJaETyrxGV55,02b4b3e396434d8cdd20c03ac4aaa07387784d5d867b75987f516f5705ee68cb3a,L4GrDrjReMsCAu5DkLXn79jSb95qR7Zfx7eshybCQZ1qL32MXJab";
+ driver.findElement(By.css('.phrase'))
+ .sendKeys('abandon abandon ability');
+ driver.sleep(generateDelay).then(function() {
+ driver.findElement(By.css('.csv'))
+ .getAttribute("value")
+ .then(function(csv) {
+ expect(csv).toContain(headings);
+ expect(csv).toContain(row1);
+ expect(csv).toContain(row20);
+ done();
+ });
+ });
+});
+
+it('LeftPads ethereum keys that are less than 32 bytes', function(done) {
+ // see https://github.com/iancoleman/bip39/issues/155
+ selectNetwork("ETH - Ethereum");
+ driver.findElement(By.css('#bip32-tab a'))
+ .click()
+ driver.findElement(By.css('#bip32-path'))
+ .clear();
+ driver.findElement(By.css('#bip32-path'))
+ .sendKeys("m/44'/60'/0'");
+ driver.findElement(By.css('.phrase'))
+ .sendKeys('scout sort custom elite radar rare vivid thing trophy gesture cover snake change narrow kite list nation sustain buffalo erode open balance system young');
+ driver.sleep(generateDelay).then(function() {
+ getFirstAddress(function(address) {
+ expect(address).toBe("0x8943E785B4a5714FC87a3aFAad1eB1FeB602B118");
+ done();
+ });
+ });
+});
+
+it('Can encrypt private keys using BIP38', function(done) {
+ // see https://github.com/iancoleman/bip39/issues/140
+ driver.executeScript(function() {
+ $(".use-bip38").prop("checked", true);
+ });
+ driver.findElement(By.css('.bip38-password'))
+ .sendKeys('bip38password');
+ driver.findElement(By.css('.rows-to-add'))
+ .clear();
+ driver.findElement(By.css('.rows-to-add'))
+ .sendKeys('1');
+ driver.findElement(By.css('.phrase'))
+ .sendKeys('abandon abandon ability');
+ driver.sleep(bip38delay).then(function() {
+ // address
+ getFirstRowValue(function(address) {
+ expect(address).toBe("1NCvSdumA3ngMM9c4aqU56AM6rqXddfuXB");
+ // pubkey
+ getFirstRowValue(function(pubkey) {
+ expect(pubkey).toBe("043f5aed5f6cfbafaf223188095b5980814897295f723815fea5d3f4b648d0d0b3884a74447ea901729b1e73a999b7520e7cb55b4120e6432c64153ccab8a848e1");
+ // privkey
+ getFirstRowValue(function(privkey) {
+ expect(privkey).toBe("6PRNRiFnj1RoR3sXhymdCvoZCgnUHQpfupNdKkFbWJkwWQEKesWt1EDMDM");
+ done();
+ }, ".privkey");
+ }, ".pubkey");
+ }, ".address");
+ });
+}, bip38delay + 5000);
+
+it('Shows the checksum for the entropy', function(done) {
+ driver.findElement(By.css('.use-entropy'))
+ .click();
+ driver.findElement(By.css('.entropy'))
+ .sendKeys("00000000000000000000000000000000");
+ driver.sleep(generateDelay).then(function() {
+ driver.findElement(By.css('.checksum'))
+ .getText()
+ .then(function(text) {
+ expect(text).toBe("1");
+ done();
+ });
+ });
+});
+
+it('Shows the checksum for the entropy with the correct groupings', function(done) {
+ driver.findElement(By.css('.use-entropy'))
+ .click();
+ // create a checksum of 20 bits, which spans multiple words
+ driver.findElement(By.css('.entropy'))
+ .sendKeys("F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000");
+ driver.sleep(generateDelay).then(function() {
+ driver.findElement(By.css('.checksum'))
+ .getText()
+ .then(function(text) {
+ // first group is 9 bits, second group is 11
+ expect(text).toBe("011010111 01110000110");
+ done();
+ });
+ });
+});
+
+it('Uses vprv for bitcoin testnet p2wpkh', function(done) {
+ selectNetwork("BTC - Bitcoin Testnet");
+ driver.findElement(By.css('#bip84-tab a'))
+ .click()
+ 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("vprv9DMUxX4ShgxML9N2YV5CvWEebWrM9aJ5ULpbRRyzyWu6vs4BzTvbfFFrH41N5hVi7MYSfiugd765L3JmAfDM5po36Y8ouCKRDeYQwByCmS7");
+ done();
+ })
+ });
+});
+
+it('Shows a warning if generating weak mnemonics', function(done) {
+ driver.executeScript(function() {
+ $(".strength option[selected]").removeAttr("selected");
+ $(".strength option[value=6]").prop("selected", true);
+ $(".strength").trigger("change");
+ });
+ driver.findElement(By.css(".generate-container .warning"))
+ .getAttribute("class")
+ .then(function(classes) {
+ expect(classes).not.toContain("hidden");
+ done();
+ });
+});
+
+it('Does not show a warning if generating strong mnemonics', function(done) {
+ driver.executeScript(function() {
+ $(".strength option[selected]").removeAttr("selected");
+ $(".strength option[value=12]").prop("selected", true);
+ });
+ driver.findElement(By.css(".generate-container .warning"))
+ .getAttribute("class")
+ .then(function(classes) {
+ expect(classes).toContain("hidden");
+ done();
+ });
+});
+
+it('Shows a warning if overriding weak entropy with longer mnemonics', function(done) {
+ driver.findElement(By.css('.use-entropy'))
+ .click();
+ driver.findElement(By.css('.entropy'))
+ .sendKeys("0123456789abcdef"); // 6 words
+ driver.executeScript(function() {
+ $(".mnemonic-length").val("12").trigger("change");
+ });
+ driver.findElement(By.css(".weak-entropy-override-warning"))
+ .getAttribute("class")
+ .then(function(classes) {
+ expect(classes).not.toContain("hidden");
+ done();
+ });
+});
+
+it('Does not show a warning if entropy is stronger than mnemonic length', function(done) {
+ driver.findElement(By.css('.use-entropy'))
+ .click();
+ driver.findElement(By.css('.entropy'))
+ .sendKeys("0123456789abcdef0123456789abcdef0123456789abcdef"); // 18 words
+ driver.executeScript(function() {
+ $(".mnemonic-length").val("12").trigger("change");
+ });
+ driver.findElement(By.css(".weak-entropy-override-warning"))
+ .getAttribute("class")
+ .then(function(classes) {
+ expect(classes).toContain("hidden");
+ done();
+ });
+});
+
+it('Shows litecoin BIP49 addresses', function(done) {
+ driver.findElement(By.css('.phrase'))
+ .sendKeys('abandon abandon ability');
+ selectNetwork("LTC - Litecoin");
+ 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("MFwLPhsXoBuSLL8cLmW9uK6tChkzduV8qN");
+ 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.
+ // Maybe this breaks the reason for the different extended key prefixes, but
+ // since the parsed root key is used behind the scenes anyhow this should be
+ // allowed.
+ driver.findElement(By.css('#root-key'))
+ .sendKeys('xprv9s21ZrQH143K2jkGDCeTLgRewT9F2pH5JZs2zDmmjXes34geVnFiuNa8KTvY5WoYvdn4Ag6oYRoB6cXtc43NgJAEqDXf51xPm6fhiMCKwpi');
+ driver.findElement(By.css('#bip49-tab a'))
+ .click()
+ // bip49 addresses are shown
+ driver.sleep(generateDelay).then(function() {
+ getFirstAddress(function(address) {
+ expect(address).toBe("3QG2Y9AA4xZ846gKHZqNf7mvVKbLqMKxr2");
+ done();
+ });
+ });
+});
+
});