Add CLI tests

This commit is contained in:
Marvin ROGER 2018-07-12 10:49:33 +02:00 committed by Marvin ROGER
commit 270615d89f
2 changed files with 276 additions and 1 deletions

275
__tests__/cli.js Normal file
View file

@ -0,0 +1,275 @@
/* eslint-env jest */
const path = require('path');
const util = require('util');
const exec = util.promisify(require('child_process').exec);
const nano = require('../dist/nanocurrency.cjs');
const cli = async args => {
try {
const { stdout, stderr } = await exec(
'node ' + path.join(__dirname, '../dist/bin/index.js') + ' ' + args
);
return {
code: 0,
stdout,
stderr,
};
} catch (err) {
return {
code: err.code,
stdout: err.stdout,
stderr: err.stderr,
};
}
};
describe('check', () => {
test('seed', async () => {
expect.assertions(6);
{
const { stdout, stderr, code } = await cli(
'check seed --candidate 005f22e2dcc064196bb712dd6412762be85d1fce22e43c842d2ad17354e4216a'
);
expect(code).toBe(0);
expect(stdout.trimRight()).toBe('true');
expect(stderr).toBe('');
}
{
const { stdout, stderr, code } = await cli('check seed --candidate foo');
expect(code).toBe(0);
expect(stdout.trimRight()).toBe('false');
expect(stderr).toBe('');
}
});
test('amount', async () => {
expect.assertions(6);
{
const { stdout, stderr, code } = await cli('check amount --candidate 1');
expect(code).toBe(0);
expect(stdout.trimRight()).toBe('true');
expect(stderr).toBe('');
}
{
const { stdout, stderr, code } = await cli('check amount --candidate foo');
expect(code).toBe(0);
expect(stdout.trimRight()).toBe('false');
expect(stderr).toBe('');
}
});
test('hash', async () => {
expect.assertions(6);
{
const { stdout, stderr, code } = await cli(
'check hash --candidate 005f22e2dcc064196bb712dd6412762be85d1fce22e43c842d2ad17354e4216a'
);
expect(code).toBe(0);
expect(stdout.trimRight()).toBe('true');
expect(stderr).toBe('');
}
{
const { stdout, stderr, code } = await cli('check hash --candidate foo');
expect(code).toBe(0);
expect(stdout.trimRight()).toBe('false');
expect(stderr).toBe('');
}
});
test('key', async () => {
expect.assertions(6);
{
const { stdout, stderr, code } = await cli(
'check key --candidate 005f22e2dcc064196bb712dd6412762be85d1fce22e43c842d2ad17354e4216a'
);
expect(code).toBe(0);
expect(stdout.trimRight()).toBe('true');
expect(stderr).toBe('');
}
{
const { stdout, stderr, code } = await cli('check key --candidate foo');
expect(code).toBe(0);
expect(stdout.trimRight()).toBe('false');
expect(stderr).toBe('');
}
});
test('address', async () => {
expect.assertions(6);
{
const { stdout, stderr, code } = await cli(
'check address --candidate xrb_114z6djfsi5657oug6pxeib9eczadnhwwaq69k44tcpjgfcgaadcusoda5xf'
);
expect(code).toBe(0);
expect(stdout.trimRight()).toBe('true');
expect(stderr).toBe('');
}
{
const { stdout, stderr, code } = await cli('check address --candidate foo');
expect(code).toBe(0);
expect(stdout.trimRight()).toBe('false');
expect(stderr).toBe('');
}
});
test('work', async () => {
expect.assertions(6);
{
const { stdout, stderr, code } = await cli('check work --candidate b2ff948c874e7d62');
expect(code).toBe(0);
expect(stdout.trimRight()).toBe('true');
expect(stderr).toBe('');
}
{
const { stdout, stderr, code } = await cli('check address --candidate foo');
expect(code).toBe(0);
expect(stdout.trimRight()).toBe('false');
expect(stderr).toBe('');
}
});
test('signature', async () => {
expect.assertions(6);
{
const { stdout, stderr, code } = await cli(
'check signature --candidate 005f22e2dcc064196bb712dd6412762be85d1fce22e43c842d2ad17354e4216a005f22e2dcc064196bb712dd6412762be85d1fce22e43c842d2ad17354e4216a'
);
expect(code).toBe(0);
expect(stdout.trimRight()).toBe('true');
expect(stderr).toBe('');
}
{
const { stdout, stderr, code } = await cli('check signature --candidate foo');
expect(code).toBe(0);
expect(stdout.trimRight()).toBe('false');
expect(stderr).toBe('');
}
});
});
describe('convert', () => {
test('amount', async () => {
expect.assertions(3);
const { stdout, stderr, code } = await cli('convert amount --input 1 --from Nano --to raw');
expect(code).toBe(0);
expect(stdout.trimRight()).toBe('1000000000000000000000000000000');
expect(stderr).toBe('');
});
});
describe('sign', () => {
test('block', async () => {
expect.assertions(3);
const { stdout, stderr, code } = await cli(
'sign block --secret 005f22e2dcc064196bb712dd6412762be85d1fce22e43c842d2ad17354e4216a --hash 005f22e2dcc064196bb712dd6412762be85d1fce22e43c842d2ad17354e4216a'
);
expect(code).toBe(0);
expect(stdout.trimRight()).toBe(
'735795B9A646AFB2589145F13C19B8698AF99AD4CE7E8252D14B00AC9BD4F1FEC829713F70439D02D05FF0B71842AE135EACD90617CCF1C6AB37A68679CBAE06'
);
expect(stderr).toBe('');
});
});
describe('verify', () => {
test('block', async () => {
expect.assertions(6);
{
const { stdout, stderr, code } = await cli(
'verify block --public 4E8FE000C14158AF66F87C33541C6ABF9EF524E721CFA2A77E83C1C852D8EDA2 --hash 005f22e2dcc064196bb712dd6412762be85d1fce22e43c842d2ad17354e4216a --signature 735795B9A646AFB2589145F13C19B8698AF99AD4CE7E8252D14B00AC9BD4F1FEC829713F70439D02D05FF0B71842AE135EACD90617CCF1C6AB37A68679CBAE06'
);
expect(code).toBe(0);
expect(stdout.trimRight()).toBe('true');
expect(stderr).toBe('');
}
{
const { stdout, stderr, code } = await cli(
'verify block --public 5E8FE000C14158AF66F87C33541C6ABF9EF524E721CFA2A77E83C1C852D8EDA2 --hash 005f22e2dcc064196bb712dd6412762be85d1fce22e43c842d2ad17354e4216a --signature 735795B9A646AFB2589145F13C19B8698AF99AD4CE7E8252D14B00AC9BD4F1FEC829713F70439D02D05FF0B71842AE135EACD90617CCF1C6AB37A68679CBAE06'
);
expect(code).toBe(0);
expect(stdout.trimRight()).toBe('false');
expect(stderr).toBe('');
}
});
});
describe('validate', () => {
test('work', async () => {
expect.assertions(6);
{
const { stdout, stderr, code } = await cli(
'validate work --hash 9DB2961B2D01D49C53AE6C9E513BC51AC04273CD4DAC4277F82B44B4F084A91A --work b2ff948c874e7d62'
);
expect(code).toBe(0);
expect(stdout.trimRight()).toBe('true');
expect(stderr).toBe('');
}
{
const { stdout, stderr, code } = await cli(
'validate work --hash 9DB2961B2D01D49C53AE6C9E513BC51AC04273CD4DAC4277F82B44B4F084A91B --work b2ff948c874e7d62'
);
expect(code).toBe(0);
expect(stdout.trimRight()).toBe('false');
expect(stderr).toBe('');
}
});
});
describe('generate', () => {
test('seed', async () => {
expect.assertions(3);
const { stdout, stderr, code } = await cli('generate seed');
expect(code).toBe(0);
expect(nano.checkSeed(stdout.trimRight())).toBe(true);
expect(stderr).toBe('');
});
});
describe('derive', () => {
test('secret', async () => {
expect.assertions(3);
const { stdout, stderr, code } = await cli(
'derive secret --from 005f22e2dcc064196bb712dd6412762be85d1fce22e43c842d2ad17354e4216a'
);
expect(code).toBe(0);
expect(stdout.trimRight()).toBe(
'8211AFAB03BA059C8225DE515BEAEF91E4F629BB7906915698D51AA0992257B5'
);
expect(stderr).toBe('');
});
test('public', async () => {
expect.assertions(3);
const { stdout, stderr, code } = await cli(
'derive public --from 005f22e2dcc064196bb712dd6412762be85d1fce22e43c842d2ad17354e4216a'
);
expect(code).toBe(0);
expect(stdout.trimRight()).toBe(
'4E8FE000C14158AF66F87C33541C6ABF9EF524E721CFA2A77E83C1C852D8EDA2'
);
expect(stderr).toBe('');
});
test('address', async () => {
expect.assertions(3);
const { stdout, stderr, code } = await cli(
'derive address --from 005f22e2dcc064196bb712dd6412762be85d1fce22e43c842d2ad17354e4216a'
);
expect(code).toBe(0);
expect(stdout.trimRight()).toBe(
'xrb_114z6djfsi5657oug6pxeib9eczadnhwwaq69k44tcpjgfcgaadcusoda5xf'
);
expect(stderr).toBe('');
});
});

View file

@ -210,7 +210,7 @@ yargs
.command('verify', 'verify a [block]', yargs => {
return wrapSubcommand(
yargs.usage('usage: $0 verify <item>').command(
'verify',
'block',
'verify a block',
yargs => {
return yargs