X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=tests.js;h=ec368cbf4ec018dbbe4502154a49d13c1b48bc76;hb=c6624d51f4e5607202e48903352574c47571baab;hp=c9189a73268d6d890d6c8fba21cae3692ce5c68e;hpb=4974fd7f0024213a8b5af4ff569a2510e711e3b0;p=perso%2FImmae%2FProjets%2FCryptomonnaies%2FBIP39.git diff --git a/tests.js b/tests.js index c9189a7..ec368cb 100644 --- a/tests.js +++ b/tests.js @@ -44,6 +44,37 @@ function waitForGenerate(fn, maxTime) { wait(); } +function waitForFeedback(fn, maxTime) { + if (!maxTime) { + maxTime = testMaxTime; + } + var start = new Date().getTime(); + var wait = function keepWaiting() { + var now = new Date().getTime(); + var hasTimedOut = now - start > maxTime; + if (hasTimedOut) { + console.log("Test timed out"); + fn(); + return; + } + var feedback = page.evaluate(function() { + var feedback = $(".feedback"); + if (feedback.css("display") == "none") { + return ""; + } + return feedback.text(); + }); + var hasFinished = feedback.length > 0 && feedback != "Calculating..."; + if (hasFinished) { + fn(); + } + else { + setTimeout(keepWaiting, 100); + } + } + wait(); +} + function next() { if (tests.length > 0) { var testsStr = tests.length == 1 ? "test" : "tests"; @@ -101,18 +132,17 @@ page.open(url, function(status) { // Entering mnemonic generates addresses function() { page.open(url, function(status) { - var expected = "1Di3Vp7tBWtyQaDABLAjfWtF6V7hYKJtug"; // set the phrase page.evaluate(function() { $(".phrase").val("abandon abandon ability").trigger("input"); }); // get the address waitForGenerate(function() { - var actual = page.evaluate(function() { - return $(".address:first").text(); + var addressCount = page.evaluate(function() { + return $(".address").length; }); - if (actual != expected) { - console.log("Mnemonic did not generate address"); + if (addressCount != 20) { + console.log("Mnemonic did not generate addresses"); console.log("Expected: " + expected); console.log("Got: " + actual); fail(); @@ -458,6 +488,90 @@ page.open(url, function(status) { }); }, +// Network can be set to dash +function() { +page.open(url, function(status) { + // set the phrase and coin + var expected = "XdbhtMuGsPSkE6bPdNTHoFSszQKmK4S5LT"; + page.evaluate(function() { + $(".phrase").val("abandon abandon ability"); + $(".phrase").trigger("input"); + $(".network option[selected]").removeAttr("selected"); + $(".network option[value=10]").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("DASH 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) { + // set the phrase and coin + var expected = "Mw2vK2Bvex1yYtYF6sfbEg2YGoUc98YUD2"; + page.evaluate(function() { + $(".phrase").val("abandon abandon ability"); + $(".phrase").trigger("input"); + $(".network option[selected]").removeAttr("selected"); + $(".network option[value=11]").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("Namecoin address is incorrect"); + console.log("Expected: " + expected); + console.log("Actual: " + actual); + fail(); + } + next(); + }); +}); +}, + +// Network can be set to peercoin +function() { +page.open(url, function(status) { + // set the phrase and coin + var expected = "PVAiioTaK2eDHSEo3tppT9AVdBYqxRTBAm"; + page.evaluate(function() { + $(".phrase").val("abandon abandon ability"); + $(".phrase").trigger("input"); + $(".network option[selected]").removeAttr("selected"); + $(".network option[value=12]").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("Peercoin address is incorrect"); + console.log("Expected: " + expected); + console.log("Actual: " + actual); + fail(); + } + next(); + }); +}); +}, + // BIP39 seed is set from phrase function() { page.open(url, function(status) { @@ -944,38 +1058,1545 @@ page.open(url, function(status) { }, // Derivation path visibility can be toggled +function() { +page.open(url, function(status) { + // set the phrase + page.evaluate(function() { + $(".phrase").val("abandon abandon ability"); + $(".phrase").trigger("input"); + }); + waitForGenerate(function() { + // toggle path visibility + page.evaluate(function() { + $(".index-toggle").click(); + }); + // check the path is not visible + var isInvisible = page.evaluate(function() { + return $(".index:first span").hasClass("invisible"); + }); + if (!isInvisible) { + console.log("Toggled derivation path is visible"); + fail(); + } + next(); + }); +}); +}, + // Address is shown -// Addresses are shown in order of derivation path -// Address visibility can be toggled -// Private key is shown -// Private key visibility can be toggled +function() { +page.open(url, function(status) { + var expected = "1Di3Vp7tBWtyQaDABLAjfWtF6V7hYKJtug"; + // set the phrase + page.evaluate(function() { + $(".phrase").val("abandon abandon ability").trigger("input"); + }); + // get the address + waitForGenerate(function() { + var actual = page.evaluate(function() { + return $(".address:first").text(); + }); + if (actual != expected) { + console.log("Address is not shown"); + console.log("Expected: " + expected); + console.log("Got: " + actual); + fail(); + } + next(); + }); +}); +}, -// More addresses can be generated -// A custom number of additional addresses can be generated -// Additional addresses are shown in order of derivation path +// Addresses are shown in order of derivation path +function() { +page.open(url, function(status) { + // set the phrase + page.evaluate(function() { + $(".phrase").val("abandon abandon ability").trigger("input"); + }); + // get the derivation paths + waitForGenerate(function() { + var paths = page.evaluate(function() { + return $(".index").map(function(i, e) { + return $(e).text(); + }); + }); + if (paths.length != 20) { + console.log("Total paths is less than expected: " + paths.length); + fail(); + } + for (var i=0; i