nxtjs
Version:
Local transaction signing, token creation/validation and encryption/decryption of arbitrary messages
89 lines (75 loc) • 3.39 kB
JavaScript
var assert = require('assert');
var nxt = require('../index.js');
describe('account', function() {
it('converts RS to numeric and back', function(done) {
var acc = 'NXT-MRCC-2YLS-8M54-3CMAJ';
var result = nxt.rsConvert(acc);
var result2 = nxt.rsConvert(result.account);
assert.equal(result2.accountRS, acc);
done();
});
it('get public key from secret phrase', function(done) {
var pubkey = nxt.secretPhraseToPublicKey(
'It was a bright cold day in April, and the clocks were striking thirteen.'
);
assert.equal(
pubkey,
'1259ec21d31a30898d7cd1609f80d9668b4778e3d97e941044b39f0c44d2e51b'
);
done();
});
it('get account ID from public key', function(done) {
var accountId = nxt.publicKeyToAccountId(
'1259ec21d31a30898d7cd1609f80d9668b4778e3d97e941044b39f0c44d2e51b'
);
assert.equal(accountId, 'NXT-MRCC-2YLS-8M54-3CMAJ');
done();
});
it('get account ID from public key (numeric)', function(done) {
var accountId = nxt.publicKeyToAccountId(
'1259ec21d31a30898d7cd1609f80d9668b4778e3d97e941044b39f0c44d2e51b',
true
);
assert.equal(accountId, '1739068987193023818');
done();
});
it('sign transaction bytes', function(done) {
var unsignedTxBytes = '0010802c8805a0051dc37e55e94559b6e8ad45202ab8e87cbfd76fa2ee9920c4e12ee1d6535456179bac9ed2c24b5cdd00e1f5050000000000e1f50500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ed80e00c9449dcb24d260cf';
// Please don't empty my testnet account :P
var secretPhrase = 'usually yard maybe limb peaceful curse serve peaceful nerve history crash bullet';
var signedBytes = nxt.signTransactionBytes(unsignedTxBytes, secretPhrase);
assert.equal(
signedBytes,
'0010802c8805a0051dc37e55e94559b6e8ad45202ab8e87cbfd76fa2ee9920c4e12ee1d6535456179bac9ed2c24b5cdd00e1f5050000000000e1f505000000000000000000000000000000000000000000000000000000000000000000000000c34622d13d2962386825f923198cd7dd94e65ae67d97927dbe843939aa0a9e0efe37038d4ee0e55599344cb83f4f28207175075e7b2dfb84521d8689ee4dcaca000000007ed80e00c9449dcb24d260cf'
);
done();
});
});
describe('token', function() {
it('generate and validate token', function(done) {
var token = nxt.createToken('mystring', 'mypassphrase');
var result = nxt.parseToken(token, 'mystring');
assert.equal(result.isValid, true);
var fail = nxt.parseToken(token, 'notmystring');
assert.equal(fail.isValid, false);
done();
});
});
describe('message encryption', function() {
it('encrypt and decrypt a message', function(done) {
var secretPhraseRecp = 'It was a bright cold day in April, and the clocks were striking thirteen.';
var publicKeyRecp = '1259ec21d31a30898d7cd1609f80d9668b4778e3d97e941044b39f0c44d2e51b';
var secretPhraseSender = 'test';
var publicKeySender = 'd9d5c57971eefb085e3abaf7a5a4a6cdb8185f30105583cdb09ad8f61886ec65';
var message = 'hello world';
var result = nxt.encryptMessage(message, publicKeyRecp, secretPhraseSender);
var decrypted = nxt.decryptMessage(
result.message,
result.nonce,
publicKeySender,
secretPhraseRecp
);
assert.equal(decrypted, message);
done();
});
});