]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/BIP39.git/blobdiff - tests/spec/tests.js
add testcase for ethercore
[perso/Immae/Projets/Cryptomonnaies/BIP39.git] / tests / spec / tests.js
index bbc1f570207a75c8aefdf71fea80ff3b059b203f..62647d2663640b7bfae798ed5d3358630dc755db 100644 (file)
@@ -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",
@@ -588,7 +595,6 @@ it('Allows selection of ethereum', function(done) {
         firstAddress: "0xe5815d5902Ad612d49283DEdEc02100Bd44C2772",
     };
     testNetwork(done, params);
-    // TODO test private key and public key
 });
 it('Allows selection of slimcoin', function(done) {
     var params = {
@@ -1629,6 +1635,13 @@ it('Allows selection of Thought', function(done) {
     };
     testNetwork(done, params);
 });
+it('Allows selection of EtherCore', function(done) {
+    var params = {
+        selectText: "ERE - EtherCore",
+        firstAddress: "0xDeeAD0297F06dfe6c7Ad0C1D0CF5B06D6047bEEe",
+    };
+    testNetwork(done, params);
+});
 
 // BIP39 seed is set from phrase
 it('Sets the bip39 seed from the prhase', function(done) {
@@ -2002,11 +2015,7 @@ it('Allows the user to set the BIP32 root key', function(done) {
 });
 
 // Setting BIP32 root key clears the existing phrase, passphrase and seed
-// TODO this doesn't work in selenium with chrome
 it('Confirms the existing phrase should be cleared', function(done) {
-    if (browser == "chrome") {
-        pending("Selenium + Chrome headless bug for alert, see https://stackoverflow.com/q/45242264");
-    }
     driver.findElement(By.css('.phrase'))
         .sendKeys('A non-blank but invalid value');
     driver.findElement(By.css('.root-key'))
@@ -2020,11 +2029,7 @@ it('Confirms the existing phrase should be cleared', function(done) {
 });
 
 // Clearing of phrase, passphrase and seed can be cancelled by user
-// TODO this doesn't work in selenium with chrome
 it('Allows the clearing of the phrase to be cancelled', function(done) {
-    if (browser == "chrome") {
-        pending("Selenium + Chrome headless bug for alert, see https://stackoverflow.com/q/45242264");
-    }
     driver.findElement(By.css('.phrase'))
         .sendKeys('abandon abandon ability');
     driver.sleep(generateDelay).then(function() {
@@ -4243,7 +4248,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) {
@@ -4285,4 +4290,77 @@ 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();
+            });
+    });
+});
+
+// https://github.com/iancoleman/bip39/issues/388
+// Make field for bip39 seed editable
+it('Generates addresses when seed is set', function(done) {
+    driver.findElement(By.css('.seed'))
+        .sendKeys("20da140d3dd1df8713cefcc4d54ce0e445b4151027a1ab567b832f6da5fcc5afc1c3a3f199ab78b8e0ab4652efd7f414ac2c9a3b81bceb879a70f377aa0a58f3");
+    driver.sleep(generateDelay).then(function() {
+        getFirstAddress(function(address) {
+            expect(address).toBe("1Di3Vp7tBWtyQaDABLAjfWtF6V7hYKJtug");
+            done();
+        });
+    });
+});
+
+// https://github.com/iancoleman/bip39/issues/169
+it('Generates ethereum addresses from a public key', function(done) {
+    var pubkey = "xpub68UK3hrMEp2jLPxPASgXSiqiUsQsUWZHCeuu6NqcJLt259LMeWzwDyufXLN1QmjLeLRY5he4QfArDDLbsXiw3xN3kFcYtyDy74BY73RPhhW";
+    driver.findElement(By.css('.root-key'))
+      .sendKeys(pubkey);
+    driver.findElement(By.css('#bip32-tab a'))
+        .click()
+    selectNetwork('ETH - Ethereum');
+    driver.sleep(generateDelay).then(function() {
+        getFirstAddress(function(address) {
+            expect(address).toBe("0x1Bd54748903438C7E386b4a3fCbe16237A316a98");
+            done();
+        });
+    });
+});
+
 });