]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/BIP39.git/blobdiff - tests.js
Merge pull request #67 from 4eadd52d/master
[perso/Immae/Projets/Cryptomonnaies/BIP39.git] / tests.js
index debedab5aa1313c1197b6676a15081916ae10295..49d42c3e049fc24bc500b1a7caac75a949e08ca2 100644 (file)
--- a/tests.js
+++ b/tests.js
@@ -280,7 +280,9 @@ page.open(url, function(status) {
         $(".phrase").val("abandon abandon ability");
         $(".phrase").trigger("input");
         $(".network option[selected]").removeAttr("selected");
-        $(".network option[value=1]").prop("selected", true);
+        $(".network option").filter(function() {
+            return $(this).html() == "Bitcoin Testnet";
+        }).prop("selected", true);
         $(".network").trigger("change");
     });
     // check the address is generated correctly
@@ -308,7 +310,9 @@ page.open(url, function(status) {
         $(".phrase").val("abandon abandon ability");
         $(".phrase").trigger("input");
         $(".network option[selected]").removeAttr("selected");
-        $(".network option[value=2]").prop("selected", true);
+        $(".network option").filter(function() {
+            return $(this).html() == "Litecoin";
+        }).prop("selected", true);
         $(".network").trigger("change");
     });
     // check the address is generated correctly
@@ -336,7 +340,9 @@ page.open(url, function(status) {
         $(".phrase").val("abandon abandon ability");
         $(".phrase").trigger("input");
         $(".network option[selected]").removeAttr("selected");
-        $(".network option[value=3]").prop("selected", true);
+        $(".network option").filter(function() {
+            return $(this).html() == "Dogecoin";
+        }).prop("selected", true);
         $(".network").trigger("change");
     });
     // check the address is generated correctly
@@ -364,7 +370,9 @@ page.open(url, function(status) {
         $(".phrase").val("abandon abandon ability");
         $(".phrase").trigger("input");
         $(".network option[selected]").removeAttr("selected");
-        $(".network option[value=4]").prop("selected", true);
+        $(".network option").filter(function() {
+            return $(this).html() == "ShadowCash";
+        }).prop("selected", true);
         $(".network").trigger("change");
     });
     // check the address is generated correctly
@@ -392,7 +400,9 @@ page.open(url, function(status) {
         $(".phrase").val("abandon abandon ability");
         $(".phrase").trigger("input");
         $(".network option[selected]").removeAttr("selected");
-        $(".network option[value=5]").prop("selected", true);
+        $(".network option").filter(function() {
+            return $(this).html() == "ShadowCash Testnet";
+        }).prop("selected", true);
         $(".network").trigger("change");
     });
     // check the address is generated correctly
@@ -420,7 +430,9 @@ page.open(url, function(status) {
         $(".phrase").val("abandon abandon ability");
         $(".phrase").trigger("input");
         $(".network option[selected]").removeAttr("selected");
-        $(".network option[value=6]").prop("selected", true);
+        $(".network option").filter(function() {
+            return $(this).html() == "Viacoin";
+        }).prop("selected", true);
         $(".network").trigger("change");
     });
     // check the address is generated correctly
@@ -448,7 +460,9 @@ page.open(url, function(status) {
         $(".phrase").val("abandon abandon ability");
         $(".phrase").trigger("input");
         $(".network option[selected]").removeAttr("selected");
-        $(".network option[value=7]").prop("selected", true);
+        $(".network option").filter(function() {
+            return $(this).html() == "Viacoin Testnet";
+        }).prop("selected", true);
         $(".network").trigger("change");
     });
     // check the address is generated correctly
@@ -476,7 +490,9 @@ page.open(url, function(status) {
         $(".phrase").val("abandon abandon ability");
         $(".phrase").trigger("input");
         $(".network option[selected]").removeAttr("selected");
-        $(".network option[value=8]").prop("selected", true);
+        $(".network option").filter(function() {
+            return $(this).html() == "Jumbucks";
+        }).prop("selected", true);
         $(".network").trigger("change");
     });
     // check the address is generated correctly
@@ -504,7 +520,9 @@ page.open(url, function(status) {
         $(".phrase").val("abandon abandon ability");
         $(".phrase").trigger("input");
         $(".network option[selected]").removeAttr("selected");
-        $(".network option[value=9]").prop("selected", true);
+        $(".network option").filter(function() {
+            return $(this).html() == "CLAM";
+        }).prop("selected", true);
         $(".network").trigger("change");
     });
     // check the address is generated correctly
@@ -532,7 +550,9 @@ page.open(url, function(status) {
         $(".phrase").val("abandon abandon ability");
         $(".phrase").trigger("input");
         $(".network option[selected]").removeAttr("selected");
-        $(".network option[value=10]").prop("selected", true);
+        $(".network option").filter(function() {
+            return $(this).html() == "DASH";
+        }).prop("selected", true);
         $(".network").trigger("change");
     });
     // check the address is generated correctly
@@ -551,6 +571,36 @@ page.open(url, function(status) {
 });
 },
 
+// Network can be set to game
+function() {
+page.open(url, function(status) {
+    // set the phrase and coin
+    var expected = "GSMY9bAp36cMR4zyT4uGVS7GFjpdXbao5Q";
+    page.evaluate(function() {
+        $(".phrase").val("abandon abandon ability");
+        $(".phrase").trigger("input");
+        $(".network option[selected]").removeAttr("selected");
+        $(".network option").filter(function() {
+            return $(this).html() == "GAME";
+        }).prop("selected", true);
+        $(".network").trigger("change");
+    });
+    // check the address is generated correctly
+    waitForGenerate(function() {
+        var actual = page.evaluate(function() {
+            return $(".address:first").text();
+        });
+        if (actual != expected) {
+            console.log("GAME address is incorrect");
+            console.log("Expected: " + expected);
+            console.log("Actual: " + actual);
+            fail();
+        }
+        next();
+    });
+});
+},
+
 // Network can be set to namecoin
 function() {
 page.open(url, function(status) {
@@ -560,7 +610,9 @@ page.open(url, function(status) {
         $(".phrase").val("abandon abandon ability");
         $(".phrase").trigger("input");
         $(".network option[selected]").removeAttr("selected");
-        $(".network option[value=11]").prop("selected", true);
+        $(".network option").filter(function() {
+            return $(this).html() == "Namecoin";
+        }).prop("selected", true);
         $(".network").trigger("change");
     });
     // check the address is generated correctly
@@ -588,7 +640,9 @@ page.open(url, function(status) {
         $(".phrase").val("abandon abandon ability");
         $(".phrase").trigger("input");
         $(".network option[selected]").removeAttr("selected");
-        $(".network option[value=12]").prop("selected", true);
+        $(".network option").filter(function() {
+            return $(this).html() == "Peercoin";
+        }).prop("selected", true);
         $(".network").trigger("change");
     });
     // check the address is generated correctly
@@ -617,7 +671,9 @@ page.open(url, function(status) {
         $(".phrase").val("abandon abandon ability");
         $(".phrase").trigger("input");
         $(".network option[selected]").removeAttr("selected");
-        $(".network option[value=13]").prop("selected", true);
+        $(".network option").filter(function() {
+            return $(this).html() == "Ethereum";
+        }).prop("selected", true);
         $(".network").trigger("change");
     });
     waitForGenerate(function() {
@@ -1838,7 +1894,10 @@ page.open(url, function(status) {
         waitForGenerate(function() {
             // 4) switch from bitcoin to litecoin
             page.evaluate(function() {
-                $(".network").val("2").trigger("change");
+                $(".network option").filter(function() {
+                    return $(this).html() == "Litecoin";
+                }).prop("selected", true);
+                $(".network").trigger("change");
             });
             waitForGenerate(function() {
                 // 5) Check derivation path is displayed correctly
@@ -1881,7 +1940,10 @@ page.open(url, function(status) {
     waitForGenerate(function() {
         // switch from bitcoin to clam
         page.evaluate(function() {
-            $(".network").val("9").trigger("change");
+            $(".network option").filter(function() {
+                return $(this).html() == "CLAM";
+            }).prop("selected", true);
+            $(".network").trigger("change");
         });
         waitForGenerate(function() {
             // check derivation path is displayed correctly
@@ -1912,7 +1974,10 @@ page.open(url, function(status) {
     waitForGenerate(function() {
         // 4) switch from bitcoin to viacoin
         page.evaluate(function() {
-            $(".network").val("6").trigger("change");
+            $(".network option").filter(function() {
+                return $(this).html() == "Viacoin";
+            }).prop("selected", true);
+            $(".network").trigger("change");
         });
         waitForGenerate(function() {
             // 5) ensure the derived address is correct
@@ -3515,6 +3580,67 @@ page.open(url, function(status) {
 });
 },
 
+// github issue 58
+// https://github.com/iancoleman/bip39/issues/58
+// bip32 derivation is correct, does not drop leading zeros
+// see also
+// https://medium.com/@alexberegszaszi/why-do-my-bip32-wallets-disagree-6f3254cc5846
+function() {
+page.open(url, function(status) {
+    // set the phrase and passphrase
+    var expected = "17rxURoF96VhmkcEGCj5LNQkmN9HVhWb7F";
+    // Note that bitcore generates an incorrect address
+    // 13EuKhffWkBE2KUwcbkbELZb1MpzbimJ3Y
+    // see the medium.com link above for more details
+    page.evaluate(function() {
+        $(".phrase").val("fruit wave dwarf banana earth journey tattoo true farm silk olive fence");
+        $(".passphrase").val("banana").trigger("input");
+    });
+    // check the address is generated correctly
+    waitForGenerate(function() {
+        var actual = page.evaluate(function() {
+            return $(".address:first").text();
+        });
+        if (actual != expected) {
+            console.log("BIP32 derivation is incorrect");
+            console.log("Expected: " + expected);
+            console.log("Actual: " + actual);
+            fail();
+        }
+        next();
+    });
+});
+},
+
+
+// github issue 60
+// Japanese mnemonics generate incorrect bip32 seed
+// BIP39 seed is set from phrase
+function() {
+page.open(url, function(status) {
+    // set the phrase
+    var expected = "a262d6fb6122ecf45be09c50492b31f92e9beb7d9a845987a02cefda57a15f9c467a17872029a9e92299b5cbdf306e3a0ee620245cbd508959b6cb7ca637bd55";
+    page.evaluate(function() {
+        $(".phrase").val("あいこくしん あいこくしん あいこくしん あいこくしん あいこくしん あいこくしん あいこくしん あいこくしん あいこくしん あいこくしん あいこくしん あおぞら");
+        $("#passphrase").val("メートルガバヴァぱばぐゞちぢ十人十色");
+        $("#passphrase").trigger("input");
+    });
+    // check the seed is generated correctly
+    waitForGenerate(function() {
+        var actual = page.evaluate(function() {
+            return $(".seed").val();
+        });
+        if (actual != expected) {
+            console.log("BIP39 seed is incorrectly generated from Japanese mnemonic");
+            console.log("Expected: " + expected);
+            console.log("Actual: " + actual);
+            fail();
+        }
+        next();
+    });
+});
+},
+
 // If you wish to add more tests, do so here...
 
 // Here is a blank test template