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: "D9feDKo88SHir79b2Kqhk7JAtaddmxDjNV",
+ };
+ testNetwork(done, params);
+});
it('Allows selection of shadowcash', function(done) {
var params = {
selectText: "SDC - ShadowCash",
};
testNetwork(done, params);
});
-it('Allows selection of game', function(done) {
+it('Allows selection of komodo', function(done) {
var params = {
selectText: "KMD - Komodo",
- firstAddress: "RJL777dmaB3PYqHEJGMJKWWkLPdu1ypGi4",
+ firstAddress: "RMPPzJwAjPVZZAwJvXivHJGGjdCx6WBD2t",
};
testNetwork(done, params);
});
};
testNetwork(done, params);
});
+it('Allows selection of AXE', function(done) {
+ var params = {
+ selectText: "AXE - Axe",
+ firstAddress: "XQ4HLxUVS3egk5ff1o9e2vJFJKSSsUH3B7",
+ };
+ testNetwork(done, params);
+});
+it('Allows selection of BlackCoin', function(done) {
+ var params = {
+ selectText: "BLK - BlackCoin",
+ firstAddress: "B5MznAKwj7uQ42vDz3w4onhBXPcqhTwJ9z",
+ };
+ testNetwork(done, params);
+});
// BIP39 seed is set from phrase
it('Sets the bip39 seed from the prhase', function(done) {
// 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
});
});
+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();
+ });
+ });
+});
+
});