]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/BIP39.git/blobdiff - tests.js
BIP32 client select compiled into standalone
[perso/Immae/Projets/Cryptomonnaies/BIP39.git] / tests.js
index ace2fbb1f73e21be8692c34dbd351bace4158f26..debedab5aa1313c1197b6676a15081916ae10295 100644 (file)
--- a/tests.js
+++ b/tests.js
@@ -4,7 +4,7 @@
 
 var page = require('webpage').create();
 var url = 'src/index.html';
-var testMaxTime = 10000;
+var testMaxTime = 20000;
 
 page.viewportSize = {
     width: 1024,
@@ -607,6 +607,66 @@ page.open(url, function(status) {
 });
 },
 
+// Network can be set to ethereum
+function() {
+
+page.open(url, function(status) {
+
+    // set the phrase and coin
+    page.evaluate(function() {
+        $(".phrase").val("abandon abandon ability");
+        $(".phrase").trigger("input");
+        $(".network option[selected]").removeAttr("selected");
+        $(".network option[value=13]").prop("selected", true);
+        $(".network").trigger("change");
+    });
+    waitForGenerate(function() {
+        // check the address is generated correctly
+        // this value comes from
+        // https://www.myetherwallet.com/#view-wallet-info
+        // Unusual capitalization is due to checksum
+        var expected = "0xe5815d5902Ad612d49283DEdEc02100Bd44C2772";
+        var actual = page.evaluate(function() {
+            return $(".address:first").text();
+        });
+        if (actual != expected) {
+            console.log("Ethereum address is incorrect");
+            console.log("Expected: " + expected);
+            console.log("Actual: " + actual);
+            fail();
+        }
+        // check the private key is correct
+        // this private key can be imported into
+        // https://www.myetherwallet.com/#view-wallet-info
+        // and it should correlate to the address above
+        var expected = "8f253078b73d7498302bb78c171b23ce7a8fb511987d2b2702b731638a4a15e7";
+        var actual = page.evaluate(function() {
+            return $(".privkey:first").text();
+        });
+        if (actual != expected) {
+            console.log("Ethereum privkey is incorrect");
+            console.log("Expected: " + expected);
+            console.log("Actual: " + actual);
+            fail();
+        }
+        // check the public key is correct
+        // TODO
+        // don't have any third-party source to generate the expected value
+        //var expected = "?";
+        //var actual = page.evaluate(function() {
+        //    return $(".pubkey:first").text();
+        //});
+        //if (actual != expected) {
+        //    console.log("Ethereum privkey is incorrect");
+        //    console.log("Expected: " + expected);
+        //    console.log("Actual: " + actual);
+        //    fail();
+        //}
+        next();
+    });
+});
+},
+
 // BIP39 seed is set from phrase
 function() {
 page.open(url, function(status) {
@@ -3359,6 +3419,102 @@ page.open(url, function(status) {
 });
 },
 
+// Github pull request 55
+// https://github.com/iancoleman/bip39/pull/55
+// Client select
+function() {
+page.open(url, function(status) {
+    // set mnemonic and select bip32 tab
+    page.evaluate(function() {
+        $("#bip32-tab a").click();
+        $(".phrase").val("abandon abandon ability").trigger("input");
+    });
+    waitForGenerate(function() {
+        // BITCOIN CORE
+        // set bip32 client to bitcoin core
+        page.evaluate(function() {
+            var bitcoinCoreIndex = "0";
+            $("#bip32-client").val(bitcoinCoreIndex).trigger("change");
+        });
+        waitForGenerate(function() {
+            // get the derivation path
+            var actual = page.evaluate(function() {
+                return $("#bip32-path").val();
+            });
+            // check the derivation path is correct
+            expected = "m/0'/0'"
+            if (actual != expected) {
+                console.log("Selecting Bitcoin Core client does not set correct derivation path");
+                console.log("Expected: " + expected);
+                console.log("Actual: " + actual);
+                fail();
+            }
+            // get hardened addresses
+            var usesHardenedAddresses = page.evaluate(function() {
+                return $(".hardened-addresses").prop("checked");
+            });
+            // check hardened addresses is selected
+            if(!usesHardenedAddresses) {
+                console.log("Selecting Bitcoin Core client does not use hardened addresses");
+                fail();
+            }
+            // check input is readonly
+            var pathIsReadonly = page.evaluate(function() {
+                return $("#bip32-path").prop("readonly");
+            });
+            if (!pathIsReadonly) {
+                console.log("Selecting Bitcoin Core client does not set derivation path to readonly");
+                fail();
+            }
+            // MULTIBIT
+            // set bip32 client to multibit
+            page.evaluate(function() {
+                var multibitIndex = "2";
+                $("#bip32-client").val(multibitIndex).trigger("change");
+            });
+            waitForGenerate(function() {
+                // get the derivation path
+                var actual = page.evaluate(function() {
+                    return $("#bip32-path").val();
+                });
+                // check the derivation path is correct
+                expected = "m/0'/0"
+                if (actual != expected) {
+                    console.log("Selecting Multibit client does not set correct derivation path");
+                    console.log("Expected: " + expected);
+                    console.log("Actual: " + actual);
+                    fail();
+                }
+                // get hardened addresses
+                var usesHardenedAddresses = page.evaluate(function() {
+                    return $(".hardened-addresses").prop("checked");
+                });
+                // check hardened addresses is selected
+                if(usesHardenedAddresses) {
+                    console.log("Selecting Multibit client does not uncheck hardened addresses");
+                    fail();
+                }
+                // CUSTOM DERIVATION PATH
+                // check input is not readonly
+                page.evaluate(function() {
+                    $("#bip32-client").val("custom").trigger("change");
+                });
+                // do not wait for generate, since there is no change to the
+                // derivation path there is no new generation performed
+                var pathIsReadonly = page.evaluate(function() {
+                    return $("#bip32-path").prop("readonly");
+                });
+                if (pathIsReadonly) {
+                    console.log("Selecting Custom Derivation Path does not allow derivation path input");
+                    fail();
+                }
+                next();
+            });
+        });
+    });
+});
+},
+
 // If you wish to add more tests, do so here...
 
 // Here is a blank test template