consequaturfacilis
Version:
Simple cryptocurrency wallet generator for javascript
308 lines (270 loc) • 23.4 kB
JavaScript
var cw = require('./cryptowallets');
var assert = require('assert');
const NUM_TESTS = 3;
async function runTests(){
// BTC Tests
for(var i = 0; i < NUM_TESTS; i++){
var wallet = cw.generateWallet("BTC");
assert(cw.verifyBitcoinPrivateKey(wallet.privateKey, wallet.address), "BTC Test Failed");
}
assert(cw.verifyBitcoinPrivateKey("L2XCaHvBuXaR298tx2RXTJym7SzCaotzZf2D4TxrJnqEewHSwL3V", "12jJbyfELU3tqvqN5E5MWpSMLZKfu9aMCY"), "BTC Verify Test 1 Failed"); // correct
assert(!cw.verifyBitcoinPrivateKey("L2XCaHvBuXaR298tx2RXTJym7SzCaotzZf2D4TxrJnqEewHSwL3V", "13jJbyfELU3tqvqN5E5MWpSMLZKfu9aMCY"), "BTC Verify Test 2 Failed"); // wrong address
assert(!cw.verifyBitcoinPrivateKey("L3XCaHvBuXaR298tx2RXTJym7SzCaotzZf2D4TxrJnqEewHSwL3V", "12jJbyfELU3tqvqN5E5MWpSMLZKfu9aMCY"), "BTC Verify Test 3 Failed"); // wrong private key
assert(!cw.verifyBitcoinPrivateKey("foobarbaz", "blahblahblah"), "BTC Verify Test 4 Failed"); // random garbage
console.log("BTC Tests Passed");
// BCH Tests
for(var i = 0; i < NUM_TESTS; i++){
var wallet = cw.generateWallet("BCH");
assert(cw.verifyBitcoinCashPrivateKey(wallet.privateKey, wallet.address), "BCH Test Failed");
}
assert(cw.verifyBitcoinCashPrivateKey("L5h1jhT4RHEmRV77TRhroziYco7huZKwF2usvGiPaW7F4AyE3xxM", "bitcoincash:qp2847k2p3n0wfqss459csk4kwmw2gwr05t3mtp9aw"), "BCH Verify Test 1 Failed"); // correct
assert(!cw.verifyBitcoinCashPrivateKey("L5h1jhT4RHEmRV77TRhroziYco7huZKwF2usvGiPaW7F4AyE3xxM", "bitcoincash:qp3847k2p3n0wfqss459csk4kwmw2gwr05t3mtp9aw"), "BCH Verify Test 2 Failed"); // wrong address
assert(!cw.verifyBitcoinCashPrivateKey("L4h1jhT4RHEmRV77TRhroziYco7huZKwF2usvGiPaW7F4AyE3xxM", "bitcoincash:qp2847k2p3n0wfqss459csk4kwmw2gwr05t3mtp9aw"), "BCH Verify Test 3 Failed"); // wrong private key
assert(!cw.verifyBitcoinCashPrivateKey("foobarbaz", "blahblahblah"), "BCH Verify Test 4 Failed"); // random garbage
console.log("BCH Tests Passed");
// ETH Tests
for(var i = 0; i < NUM_TESTS; i++){
var wallet = cw.generateWallet("ETH");
assert(cw.verifyEthereumPrivateKey(wallet.privateKey, wallet.address), "ETH Test Failed");
}
assert(cw.verifyEthereumPrivateKey("0x2468e44a0b34cbae6e874f4138c4885b59e531f281b8440b12495a5194b4c3eb", "0x5d16d42a38452f36758e756ec2fbdd1ccb55df87"), "ETH Verify Test 1 Failed"); // correct
assert(!cw.verifyEthereumPrivateKey("0x2468e44a0b34cbae6e874f4138c4885b59e531f281b8440b12495a5194b4c3eb", "0x4d16d42a38452f36758e756ec2fbdd1ccb55df87"), "ETH Verify Test 2 Failed"); // wrong address
assert(!cw.verifyEthereumPrivateKey("0x1468e44a0b34cbae6e874f4138c4885b59e531f281b8440b12495a5194b4c3eb", "0x5d16d42a38452f36758e756ec2fbdd1ccb55df87"), "ETH Verify Test 3 Failed"); // wrong private key
assert(!cw.verifyEthereumPrivateKey("foobarbaz", "blahblahblah"), "ETH Verify Test 4 Failed"); // random garbage
console.log("ETH Tests Passed");
// LTC Tests
for(var i = 0; i < NUM_TESTS; i++){
var wallet = cw.generateWallet("LTC");
assert(cw.verifyLitecoinPrivateKey(wallet.privateKey, wallet.address), "LTC Test Failed");
}
assert(cw.verifyLitecoinPrivateKey("TB391rij1Ep3fE4znXBXRWSfgvsupWfSQYR3Yadx2NVyRg33vuXH", "La4KkHBaXJMogcGYkVCmHxhZU8hvzYnDGa"), "LTC Verify Test 1 Failed"); // correct
assert(!cw.verifyLitecoinPrivateKey("TB391rij1Ep3fE4znXBXRWSfgvsupWfSQYR3Yadx2NVyRg33vuXH", "LA4KkHBaXJMogcGYkVCmHxhZU8hvzYnDGa"), "LTC Verify Test 2 Failed"); // wrong address
assert(!cw.verifyLitecoinPrivateKey("Tb391rij1Ep3fE4znXBXRWSfgvsupWfSQYR3Yadx2NVyRg33vuXH", "La4KkHBaXJMogcGYkVCmHxhZU8hvzYnDGa"), "LTC Verify Test 3 Failed"); // wrong private key
assert(!cw.verifyLitecoinPrivateKey("foobarbaz", "blahblahblah"), "LTC Verify Test 4 Failed"); // random garbage
console.log("LTC Tests Passed");
// DOGE Tests
for(var i = 0; i < NUM_TESTS; i++){
var wallet = cw.generateWallet("DOGE");
assert(cw.verifyDogecoinPrivateKey(wallet.privateKey, wallet.address), "DOGE Test Failed");
}
assert(cw.verifyDogecoinPrivateKey("QR3L2AobP65VMhKxQhFjNQoEkHNrtXjnYVpTJmU1qHyjr7X2tzM8", "DDXKUuYWUREHod3B89ZcSRzGmmALYaoRFL"), "DOGE Verify Test 1 Failed"); // correct
assert(!cw.verifyDogecoinPrivateKey("QR3L2AobP65VMhKxQhFjNQoEkHNrtXjnYVpTJmU1qHyjr7X2tzM8", "DdXKUuYWUREHod3B89ZcSRzGmmALYaoRFL"), "DOGE Verify Test 2 Failed"); // wrong address
assert(!cw.verifyDogecoinPrivateKey("Qr3L2AobP65VMhKxQhFjNQoEkHNrtXjnYVpTJmU1qHyjr7X2tzM8", "DDXKUuYWUREHod3B89ZcSRzGmmALYaoRFL"), "DOGE Verify Test 3 Failed"); // wrong private key
assert(!cw.verifyDogecoinPrivateKey("foobarbaz", "blahblahblah"), "DOGE Verify Test 4 Failed"); // random garbage
console.log("DOGE Tests Passed");
// NMC Tests
for(var i = 0; i < NUM_TESTS; i++){
var wallet = cw.generateWallet("NMC");
assert(cw.verifyNamecoinPrivateKey(wallet.privateKey, wallet.address), "NMC Test Failed");
}
assert(cw.verifyNamecoinPrivateKey("TmscYEwr4TQJaeY1Gxkvmujyb5J4wsBWX61FfciUurziqZhpxcpR", "NE2Qp46NqJHCAYLQzqZ7GwMjjNBaD62BCo"), "NMC Verify Test 1 Failed"); // correct
assert(!cw.verifyNamecoinPrivateKey("TmscYEwr4TQJaeY1Gxkvmujyb5J4wsBWX61FfciUurziqZhpxcpR", "Ne2Qp46NqJHCAYLQzqZ7GwMjjNBaD62BCo"), "NMC Verify Test 2 Failed"); // wrong address
assert(!cw.verifyNamecoinPrivateKey("TMscYEwr4TQJaeY1Gxkvmujyb5J4wsBWX61FfciUurziqZhpxcpR", "NE2Qp46NqJHCAYLQzqZ7GwMjjNBaD62BCo"), "NMC Verify Test 3 Failed"); // wrong private key
assert(!cw.verifyNamecoinPrivateKey("foobarbaz", "blahblahblah"), "NMC Verify Test 4 Failed"); // random garbage
console.log("NMC Tests Passed");
// PPC Tests
for(var i = 0; i < NUM_TESTS; i++){
var wallet = cw.generateWallet("PPC");
assert(cw.verifyPeercoinPrivateKey(wallet.privateKey, wallet.address), "PPC Test Failed");
}
assert(cw.verifyPeercoinPrivateKey("W5Le4HJ8tEwxR5wbws77Z9AC2nS5YPX4ENUDy6AYXPPufwccu94v", "UdANp6MvASce2LJ2f6qdbBv6ur7bj9C1mj"), "PPC Verify Test 1 Failed"); // correct
assert(!cw.verifyPeercoinPrivateKey("W5Le4HJ8tEwxR5wbws77Z9AC2nS5YPX4ENUDy6AYXPPufwccu94v", "UDANp6MvASce2LJ2f6qdbBv6ur7bj9C1mj"), "PPC Verify Test 2 Failed"); // wrong address
assert(!cw.verifyPeercoinPrivateKey("W4Le4HJ8tEwxR5wbws77Z9AC2nS5YPX4ENUDy6AYXPPufwccu94v", "UdANp6MvASce2LJ2f6qdbBv6ur7bj9C1mj"), "PPC Verify Test 3 Failed"); // wrong private key
assert(!cw.verifyPeercoinPrivateKey("foobarbaz", "blahblahblah"), "PPC Verify Test 4 Failed"); // random garbage
console.log("PPC Tests Passed");
// XMR Tests
for(var i = 0; i < NUM_TESTS; i++){
var wallet = await cw.generateWallet("XMR");
assert(cw.verifyMoneroPrivateKey(wallet.privateKey, wallet.address), "XMR Test Failed");
}
assert(await cw.verifyMoneroPrivateKey("fa2bfe0a6a70296130cbc01c9da95fcaa95d9401bcd6778ab6c04171a03bcc0a",
"4A91f2Jeyi87Cq46sLR9b7FAa3ponkQ93QqvbfXRXnWz7mxzahbFpZG1vCcVx9nEbGXvGq9WnTNpB9BwbggaqBnB4acUDfE"), "XMR Verify Test 1 Failed"); // correct
assert(!await cw.verifyMoneroPrivateKey("fa2bfe0a6a70296130cbc01c9da95fcaa95d9401bcd6778ab6c04171a03bcc0a",
"4B91f2Jeyi87Cq46sLR9b7FAa3ponkQ93QqvbfXRXnWz7mxzahbFpZG1vCcVx9nEbGXvGq9WnTNpB9BwbggaqBnB4acUDfE"), "XMR Verify Test 2 Failed"); // wrong address
assert(!await cw.verifyMoneroPrivateKey("ea2bfe0a6a70296130cbc01c9da95fcaa95d9401bcd6778ab6c04171a03bcc0a",
"4A91f2Jeyi87Cq46sLR9b7FAa3ponkQ93QqvbfXRXnWz7mxzahbFpZG1vCcVx9nEbGXvGq9WnTNpB9BwbggaqBnB4acUDfE"), "XMR Verify Test 3 Failed"); // wrong private key
assert(!await cw.verifyMoneroPrivateKey("foobarbaz", "blahblahblah"), "XMR Verify Test 4 Failed"); // random garbage
console.log("XMR Tests Passed");
// XTZ Tests
for(var i = 0; i < NUM_TESTS; i++){
var wallet = cw.generateWallet("XTZ");
assert(cw.verifyTezosPrivateKey(wallet.privateKey, wallet.address), "XTZ Test Failed");
}
assert(cw.verifyTezosPrivateKey("edskRpkjCkzszTYKu3pkmwHHLkhqGDziHr2Vn5kQYgWTjuT3upQ9fFUjx573SLHZZxn4P6NthsJy9ZJJTmSN1nTG9V7wEKBBkk",
"tz1Tgc7i5cVC2qmc8Tc1iMZifC3jnQwDNP82"), "XTZ Verify Test 1 Failed"); // correct
assert(!cw.verifyTezosPrivateKey("edskRpkjCkzszTYKu3pkmwHHLkhqGDziHr2Vn5kQYgWTjuT3upQ9fFUjx573SLHZZxn4P6NthsJy9ZJJTmSN1nTG9V7wEKBBkk",
"tz1Tgc6i5cVC2qmc8Tc1iMZifC3jnQwDNP82"), "XTZ Verify Test 2 Failed"); // wrong address
assert(!cw.verifyTezosPrivateKey("edskRpkJCkzszTYKu3pkmwHHLkhqGDziHr2Vn5kQYgWTjuT3upQ9fFUjx573SLHZZxn4P6NthsJy9ZJJTmSN1nTG9V7wEKBBkk",
"tz1Tgc7i5cVC2qmc8Tc1iMZifC3jnQwDNP82"), "XTZ Verify Test 3 Failed"); // wrong private key
assert(!cw.verifyTezosPrivateKey("foobarbaz", "blahblahblah"), "XTZ Verify Test 4 Failed"); // random garbage
console.log("XTZ Tests Passed");
// IOTA Tests
for(var i = 0; i < NUM_TESTS; i++){
var wallet = await cw.generateWallet("IOTA");
assert(cw.verifyIOTAPrivateKey(wallet.privateKey, wallet.address), "IOTA Test Failed");
}
assert(await cw.verifyIOTAPrivateKey("OVXGOLZEVAPVZHJETN9WWRIPYHMQBLONCXUMGJECBRJQFZNSBRNRYZK9UXSCBJNELJVYOZG9VACLDHORM",
"VPAFE9UQ9VRIVWRQRNGNLAGJRRDZVUYKQJAKWOPJTSOWSZGNSCWLDVJ9T9PRIHZPGLAEHIVTGYZEZLUGWIJMCRDSKC"), "IOTA Verify Test 1 Failed"); // correct
assert(!await cw.verifyIOTAPrivateKey("OVXGOLZEVAPVZHJETN9WWRIPYHMQBLONCXUMGJECBRJQFZNSBRNRYZK9UXSCBJNELJVYOZG9VACLDHORM",
"APAFE9UQ9VRIVWRQRNGNLAGJRRDZVUYKQJAKWOPJTSOWSZGNSCWLDVJ9T9PRIHZPGLAEHIVTGYZEZLUGWIJMCRDSKC"), "IOTA Verify Test 2 Failed"); // wrong address
assert(!await cw.verifyIOTAPrivateKey("AVXGOLZEVAPVZHJETN9WWRIPYHMQBLONCXUMGJECBRJQFZNSBRNRYZK9UXSCBJNELJVYOZG9VACLDHORM",
"VPAFE9UQ9VRIVWRQRNGNLAGJRRDZVUYKQJAKWOPJTSOWSZGNSCWLDVJ9T9PRIHZPGLAEHIVTGYZEZLUGWIJMCRDSKC"), "IOTA Verify Test 3 Failed"); // wrong private key
assert(await cw.verifyIOTAPrivateKey("WLYYH9GEA9KONPABRAEZUNJPCYSQKAWUQWSGTCJ9FHMVVVYFJZSLRGYCWPYN9XKIXGXIRUBFWVZNVVDHU",
"F9WZPZMRPHJCMETIMGHCTTOVPLQGHXAYHPJB9NU9TNRSMYJTYKHREER9DLVEML9QOCGCKUEIYBUQGDDHXFWJRDJTRY"), "IOTA Verify Test 6 Failed"); // security level 3 and 5th address in seed generation
assert(!await cw.verifyIOTAPrivateKey("foobarbaz", "blahblahblah"), "IOTA Verify Test 4 Failed"); // random garbage
console.log("IOTA Tests Passed");
console.log(); // print blank line
/**
CLI Tests
**/
// set console.log to output to a string
var log = console.log;
var consoleOutput = "";
console.log = function(obj){consoleOutput = obj};
var cli = require('./cli.js');
// Tests
try{
cli.parseArgs(["generate", "btc"]);
assert.equal(consoleOutput.length, 1);
assert.equal(consoleOutput[0].currency.toUpperCase(), "BTC");
assert(cw.verifyPrivateKey(consoleOutput[0].currency, consoleOutput[0].privateKey, consoleOutput[0].address));
cli.parseArgs(["generate", "ltc", 1]);
assert.equal(consoleOutput.length, 1);
assert.equal(consoleOutput[0].currency.toUpperCase(), "LTC");
assert(cw.verifyPrivateKey(consoleOutput[0].currency, consoleOutput[0].privateKey, consoleOutput[0].address));
cli.parseArgs(["generate", "bCh", 8]);
assert.equal(consoleOutput.length, 8);
assert.equal(consoleOutput[2].currency.toUpperCase(), "BCH");
assert(cw.verifyPrivateKey(consoleOutput[7].currency, consoleOutput[6].privateKey, consoleOutput[6].address));
cli.parseArgs(["generate", "doge", 2]);
assert.equal(consoleOutput.length, 2);
assert.equal(consoleOutput[1].currency.toUpperCase(), "DOGE");
assert(cw.verifyPrivateKey(consoleOutput[0].currency, consoleOutput[1].privateKey, consoleOutput[1].address));
cli.parseArgs(["generate", "ppc", 3]);
assert.equal(consoleOutput.length, 3);
assert.equal(consoleOutput[0].currency.toUpperCase(), "PPC");
assert(cw.verifyPrivateKey(consoleOutput[1].currency, consoleOutput[2].privateKey, consoleOutput[2].address));
cli.parseArgs(["generate", "ETH", 4]);
assert.equal(consoleOutput.length, 4);
assert.equal(consoleOutput[3].currency.toUpperCase(), "ETH");
assert(cw.verifyPrivateKey(consoleOutput[2].currency, consoleOutput[1].privateKey, consoleOutput[1].address));
cli.parseArgs(["generate", "xtz", 9]);
assert.equal(consoleOutput.length, 9);
assert.equal(consoleOutput[2].currency.toUpperCase(), "XTZ");
assert(cw.verifyPrivateKey(consoleOutput[8].currency, consoleOutput[5].privateKey, consoleOutput[5].address));
cli.parseArgs(["generate", "NmC", 5]);
assert.equal(consoleOutput.length, 5);
assert.equal(consoleOutput[4].currency.toUpperCase(), "NMC");
assert(cw.verifyPrivateKey(consoleOutput[2].currency, consoleOutput[3].privateKey, consoleOutput[3].address));
await cli.parseArgs(["generate", "xmR", 6]);
assert.equal(consoleOutput.length, 6);
assert.equal(consoleOutput[3].currency.toUpperCase(), "XMR");
assert(cw.verifyPrivateKey(consoleOutput[5].currency, consoleOutput[2].privateKey, consoleOutput[2].address));
await cli.parseArgs(["generate", "iOtA", 2]);
assert.equal(consoleOutput.length, 2);
assert.equal(consoleOutput[1].currency.toUpperCase(), "IOTA");
assert(cw.verifyPrivateKey(consoleOutput[1].currency, consoleOutput[0].privateKey, consoleOutput[0].address));
// more CLI tests
// test help
cli.parseArgs(['help']);
assert.equal(consoleOutput, cli.helpMsg);
// test verify
cli.parseArgs(['verify', 'btc', 'L5SVDPKPN4GwS5K5HC2WUNa1qaxuxVsaatWuikQV9N7MYfqbhKxH', '1BWkXWErEmbRWHzPxYwCXGjugteqZo5K3U']) // matches
assert.equal(consoleOutput, "Success: The private key matches the address");
cli.parseArgs(['verify', 'btc', 'L5SVDPKPN4GwS5K5HC2WUNa1qaxuxVsaatWuikQV9N7MYfqbhKxH', '1BWkXWErEmbRWHzPxYwCXujugteqZo5K3U']) // address doesn't match
assert.equal(consoleOutput, "Failure: The private key does not match the address");
cli.parseArgs(['verify', 'btc', 'L5SqDPKPN4GwS5K5HC2WUNa1qaxuxVsaatWuikQV9N7MYfqbhKxH', '1BWkXWErEmbRWHzPxYwCXujugteqZo5K3U']) // private key doesn't match
assert.equal(consoleOutput, "Failure: The private key does not match the address");
cli.parseArgs(['verify', 'btc', 'foobarbaz', 'blahblahblah']) // random garbage
assert.equal(consoleOutput, "Failure: The private key does not match the address");
cli.parseArgs(['verify', 'bch', 'L4W7YJRzKeQ5bBoH2fCjTfSF7kbkWmwkmmFPapPgeLqvTvB5Jb5m', 'bitcoincash:qp64vgz7e72rpqgz53596adn4vyuzp08kvdt35nug6']) // matches
assert.equal(consoleOutput, "Success: The private key matches the address");
cli.parseArgs(['verify', 'bch', 'L4W7YJRzKeQ5bBoH2fCjTfSF7kbkWmwkmmFPapPgeLqvTvB5Jb5m', 'bitcoincash:qp64vge7e72rpqgz53596adn4vyuzp08kvdt35nug6']) // address doesn't match
assert.equal(consoleOutput, "Failure: The private key does not match the address");
cli.parseArgs(['verify', 'bch', 'L4W7YJRzKeQ5bBoH2fCjTfSF7kbkWmwkmmFPapPgeLqvTvB5Jb5v', 'bitcoincash:qp64vgz7e72rpqgz53596adn4vyuzp08kvdt35nug6']) // private key doesn't match
assert.equal(consoleOutput, "Failure: The private key does not match the address");
cli.parseArgs(['verify', 'bch', 'foobarbaz', 'blahblahblah']) // random garbage
assert.equal(consoleOutput, "Failure: The private key does not match the address");
cli.parseArgs(['verify', 'eth', '0x849c6b885314168268f31db14043982569821d04a5602275c08bef304949b74e', '0x4f14d3554ce2c63630ee10fda8ee5ac1eb849987']) // matches
assert.equal(consoleOutput, "Success: The private key matches the address");
cli.parseArgs(['verify', 'eth', '0x849c6b885314168268f31db14043982569821d04a5602275c08bef304949b74e', '0x3f14d3554ce2c63630ee10fda8ee5ac1eb849987']) // address doesn't match
assert.equal(consoleOutput, "Failure: The private key does not match the address");
cli.parseArgs(['verify', 'eth', '0x749c6b885314168268f31db14043982569821d04a5602275c08bef304949b74e', '0x4f14d3554ce2c63630ee10fda8ee5ac1eb849987']) // private key doesn't match
assert.equal(consoleOutput, "Failure: The private key does not match the address");
cli.parseArgs(['verify', 'eth', 'foobarbaz', 'blahblahblah']) // random garbage
assert.equal(consoleOutput, "Failure: The private key does not match the address");
cli.parseArgs(['verify', 'doge', 'QTeTfGEXznDgN2mGPyFJcDbrUxFUYGFoe7N6XVqj2CwFB4y7dsjg', 'DPvVrgJZJgGHaWz5aFUERyyt7noNQiq5Mh']) // matches
assert.equal(consoleOutput, "Success: The private key matches the address");
cli.parseArgs(['verify', 'doge', 'QTeTfGEXznDgN2mGPyFJcDbrUxFUYGFoe7N6XVqj2CwFB4y7dsjg', 'DPVVrgJZJgGHaWz5aFUERyyt7noNQiq5Mh']) // address doesn't match
assert.equal(consoleOutput, "Failure: The private key does not match the address");
cli.parseArgs(['verify', 'doge', 'QteTfGEXznDgN2mGPyFJcDbrUxFUYGFoe7N6XVqj2CwFB4y7dsjg', 'DPvVrgJZJgGHaWz5aFUERyyt7noNQiq5Mh']) // private key doesn't match
assert.equal(consoleOutput, "Failure: The private key does not match the address");
cli.parseArgs(['verify', 'doge', 'foobarbaz', 'blahblahblah']) // random garbage
assert.equal(consoleOutput, "Failure: The private key does not match the address");
cli.parseArgs(['verify', 'ltc', 'T8ij1U78E1u9HdMRi7L1KC5GZRsnF4XWRc29v6Xed7VQmuBwsxxY', 'LSfUpaHB3CrnkzebiSM1bujhqk4G4cDz9p']) // matches
assert.equal(consoleOutput, "Success: The private key matches the address");
cli.parseArgs(['verify', 'ltc', 'T8ij1U78E1u9HdMRi7L1KC5GZRsnF4XWRc29v6Xed7VQmuBwsxxY', 'LsfUpaHB3CrnkzebiSM1bujhqk4G4cDz9p']) // address doesn't match
assert.equal(consoleOutput, "Failure: The private key does not match the address");
cli.parseArgs(['verify', 'ltc', 'T7ij1U78E1u9HdMRi7L1KC5GZRsnF4XWRc29v6Xed7VQmuBwsxxY', 'LSfUpaHB3CrnkzebiSM1bujhqk4G4cDz9p']) // private key doesn't match
assert.equal(consoleOutput, "Failure: The private key does not match the address");
cli.parseArgs(['verify', 'ltc', 'foobarbaz', 'blahblahblah']) // random garbage
assert.equal(consoleOutput, "Failure: The private key does not match the address");
cli.parseArgs(['verify', 'nmc', 'TdwEngdXrdFeerupuvXx8zWodr8pEkrJ96YrUY3Ucsq5tZTAziqH', 'N6F9MRBrsKZWKW9q1ByQqAWQXx8mJEYMvm']) // matches
assert.equal(consoleOutput, "Success: The private key matches the address");
cli.parseArgs(['verify', 'nmc', 'TdwEngdXrdFeerupuvXx8zWodr8pEkrJ96YrUY3Ucsq5tZTAziqH', 'N5F9MRBrsKZWKW9q1ByQqAWQXx8mJEYMvm']) // address doesn't match
assert.equal(consoleOutput, "Failure: The private key does not match the address");
cli.parseArgs(['verify', 'nmc', 'TDwEngdXrdFeerupuvXx8zWodr8pEkrJ96YrUY3Ucsq5tZTAziqH', 'N6F9MRBrsKZWKW9q1ByQqAWQXx8mJEYMvm']) // private key doesn't match
assert.equal(consoleOutput, "Failure: The private key does not match the address");
cli.parseArgs(['verify', 'nmc', 'foobarbaz', 'blahblahblah']) // random garbage
assert.equal(consoleOutput, "Failure: The private key does not match the address");
cli.parseArgs(['verify', 'ppc', 'W7JKSqgmn31Q57N4RSFoXgfmSGMPVScWLZEc73Zwkh3kfC5X9FM2', 'UQH7SugCBGYzJCbYuVBRfwAvQevwBeFKgn']) // matches
assert.equal(consoleOutput, "Success: The private key matches the address");
cli.parseArgs(['verify', 'ppc', 'W7JKSqgmn31Q57N4RSFoXgfmSGMPVScWLZEc73Zwkh3kfC5X9FM2', 'UqH7SugCBGYzJCbYuVBRfwAvQevwBeFKgn']) // address doesn't match
assert.equal(consoleOutput, "Failure: The private key does not match the address");
cli.parseArgs(['verify', 'ppc', 'W6JKSqgmn31Q57N4RSFoXgfmSGMPVScWLZEc73Zwkh3kfC5X9FM2', 'UQH7SugCBGYzJCbYuVBRfwAvQevwBeFKgn']) // private key doesn't match
assert.equal(consoleOutput, "Failure: The private key does not match the address");
cli.parseArgs(['verify', 'ppc', 'foobarbaz', 'blahblahblah']) // random garbage
assert.equal(consoleOutput, "Failure: The private key does not match the address");
cli.parseArgs(['verify', 'xtz', 'edskRpkjCkzszTYKu3pkmwHHLkhqGDziHr2Vn5kQYgWTjuT3upQ9fFUjx573SLHZZxn4P6NthsJy9ZJJTmSN1nTG9V7wEKBBkk', 'tz1Tgc7i5cVC2qmc8Tc1iMZifC3jnQwDNP82']) // matches
assert.equal(consoleOutput, "Success: The private key matches the address");
cli.parseArgs(['verify', 'xtz', 'edskRpkjCkzszTYKu3pkmwHHLkhqGDziHr2Vn5kQYgWTjuT3upQ9fFUjx573SLHZZxn4P6NthsJy9ZJJTmSN1nTG9V7wEKBBkk', 'tz1TGc7i5cVC2qmc8Tc1iMZifC3jnQwDNP82']) // address doesn't match
assert.equal(consoleOutput, "Failure: The private key does not match the address");
cli.parseArgs(['verify', 'xtz', 'edskRpkJCkzszTYKu3pkmwHHLkhqGDziHr2Vn5kQYgWTjuT3upQ9fFUjx573SLHZZxn4P6NthsJy9ZJJTmSN1nTG9V7wEKBBkk', 'tz1Tgc7i5cVC2qmc8Tc1iMZifC3jnQwDNP82']) // private key doesn't match
assert.equal(consoleOutput, "Failure: The private key does not match the address");
cli.parseArgs(['verify', 'xtz', 'foobarbaz', 'blahblahblah']) // random garbage
assert.equal(consoleOutput, "Failure: The private key does not match the address");
await cli.parseArgs(['verify', 'xmr', '9ae23450868c5680f672f1224a425ee91e84f128fedaa40662d9987d87f9ae07',
'42FQ15jPQvQJ7aFcmXrs55VGr6EzbXYxf3AKiA4PvvCVB4DBbJynhKaXxRnWy1hVJKX5DMiWrkDMZiwBLVANeQ2LENWNqJw']) // matches
assert.equal(consoleOutput, "Success: The private key matches the address", "Monero CLI Test 1 Failed");
await cli.parseArgs(['verify', 'xmr', '9ae23450868c5680f672f1224a425ee91e84f128fedaa40662d9987d87f9ae07',
'41FQ15jPQvQJ7aFcmXrs55VGr6EzbXYxf3AKiA4PvvCVB4DBbJynhKaXxRnWy1hVJKX5DMiWrkDMZiwBLVANeQ2LENWNqJw']) // address doesn't match
assert.equal(consoleOutput, "Failure: The private key does not match the address", "Monero CLI Test 2 Failed");
await cli.parseArgs(['verify', 'xmr', '9be23450868c5680f672f1224a425ee91e84f128fedaa40662d9987d87f9ae07',
'42FQ15jPQvQJ7aFcmXrs55VGr6EzbXYxf3AKiA4PvvCVB4DBbJynhKaXxRnWy1hVJKX5DMiWrkDMZiwBLVANeQ2LENWNqJw']) // private key doesn't match
assert.equal(consoleOutput, "Failure: The private key does not match the address", "Monero CLI Test 3 Failed");
await cli.parseArgs(['verify', 'iota', 'WWG9RPUYNWWTLPXLHQDQVYRHUQGWBVNMQVR9KFODOJPAVGMSUBVVIDPDCIPHYGCJAWSHRTSXGFPNBJPFE',
'LCZHBSFIBOZQDV9OIQXHYNBFQYHNHHUVSPWSYGCSVYLWOAESSVCWBKBWUWZKRUQQDXDKKPZXOUWADHUX9GVJR9IMXW']) // matches
assert.equal(consoleOutput, "Success: The private key matches the address", "IOTA CLI Test 1 Failed");
await cli.parseArgs(['verify', 'iota', 'WWG9RPUYNWWTLPXLHQDQVYRHUQGWBVNMQVR9KFODOJPAVGMSUBVVIDPDCIPHYGCJAWSHRTSXGFPNBJPFE',
'ACZHBSFIBOZQDV9OIQXHYNBFQYHNHHUVSPWSYGCSVYLWOAESSVCWBKBWUWZKRUQQDXDKKPZXOUWADHUX9GVJR9IMXW']) // address doesn't match
assert.equal(consoleOutput, "Failure: The private key does not match the address", "IOTA CLI Test 2 Failed");
await cli.parseArgs(['verify', 'iota', 'AWG9RPUYNWWTLPXLHQDQVYRHUQGWBVNMQVR9KFODOJPAVGMSUBVVIDPDCIPHYGCJAWSHRTSXGFPNBJPFE',
'LCZHBSFIBOZQDV9OIQXHYNBFQYHNHHUVSPWSYGCSVYLWOAESSVCWBKBWUWZKRUQQDXDKKPZXOUWADHUX9GVJR9IMXW']) // private key doesn't match
assert.equal(consoleOutput, "Failure: The private key does not match the address", "IOTA CLI Test 3 Failed");
await cli.parseArgs(['verify', 'iota', 'N9ZASFSEDLVWRWBISHRKFAQFY9CVTD9ZELFAICGROOXWQYKFXJGKWYIAZZODALIDGRGUFTZCSXQBPBSPE',
'G9JHIDMJGUIIAENFSYKKGZMBDOADIW9UNAATVPVNGWFPIEPQITVSWXJJTDRPHTCJWUYERMGLVBOHYOXOCTDYYOEXPB']) // security level 1
assert.equal(consoleOutput, "Success: The private key matches the address", "IOTA CLI Test 4 Failed");
await cli.parseArgs(['verify', 'iota', 'DAQ9JZZLIOTAMWKRBPQYEPXVPMMGZLBAYDYNOMPUPRSEKTBTBJRE9WWNCZUIGYLQDLYOFHXAZCTHRDYSY',
'XEP9KATHNKTIVNTRW9OIJDPFV9BWEWFHNUHBVCVTELJTDPBDHYBOMZXDDTF9PNVLVDFAQLQRIGKYNZHBCYYTMUPHU9']) // 4th address in seed generation
assert.equal(consoleOutput, "Success: The private key matches the address", "IOTA CLI Test 5 Failed");
await cli.parseArgs(['verify', 'iota', 'WLYYH9GEA9KONPABRAEZUNJPCYSQKAWUQWSGTCJ9FHMVVVYFJZSLRGYCWPYN9XKIXGXIRUBFWVZNVVDHU',
'F9WZPZMRPHJCMETIMGHCTTOVPLQGHXAYHPJB9NU9TNRSMYJTYKHREER9DLVEML9QOCGCKUEIYBUQGDDHXFWJRDJTRY']) // security level 3 and 5th address in seed generation
assert.equal(consoleOutput, "Success: The private key matches the address", "IOTA CLI Test 6 Failed");
log("CLI Tests Passed\n\nAll Tests Passed");
}catch(err){
log(err);
log(consoleOutput);
console.log = log;
}
}
runTests();