bitcore/test/test.Electrum.js

78 lines
2.3 KiB
JavaScript

'use strict';
var chai = chai || require('chai');
var bitcore = bitcore || require('../bitcore');
var should = chai.should();
var Electrum = bitcore.Electrum;
var Address = bitcore.Address;
var mpk = '92eea4d2f5263651db9e3222caded1fd4c89772f79a7c03fb6afc00e9d2c9d2ed9b86c2c95fc1171e49163079dacb7f048b3c509a27a490e1df9e7128362d468';
/**
* The hard coded values (expected public key / address hash) were retrieved
* by creating an Electrum wallet and looking which addresses were generated for
* master public key mpk. Not very rigorous but it will help catch regressions.
*/
describe('Electrum', function() {
it('should initialze the main object', function() {
should.exist(Electrum);
});
it('should be able to create instance', function() {
var elec = new Electrum(mpk);
should.exist(elec);
});
it('should be able to call generatePubKey', function() {
var elec = new Electrum(mpk);
(function () {
elec.generatePubKey(0);
}).should.not.throw(Error);
});
it('should be able to call generateChangePubKey', function() {
var elec = new Electrum(mpk);
(function () {
elec.generateChangePubKey(0);
}).should.not.throw(Error);
});
it('should generate correct public key at sequence 0', function() {
var elec = new Electrum(mpk);
var pubkey = elec.generatePubKey(0);
var addr = Address.fromPubKey(pubkey);
addr.as('base58').should.equal('15Ur7LV4hZFvFYQHkB12g1mdnKuHyHBDiW');
});
it('should generate correct (change) public keys at sequence 0,1,2', function() {
var expected_values = {
receiving: [
'15Ur7LV4hZFvFYQHkB12g1mdnKuHyHBDiW',
'19K48MhyXK4qChGCUJzAHxLFjbQRg9tb9F',
'1EfoxVmRVzYf1a1WELv2qMvEEpu2u5pXsy'
],
change: [
'138EGyTTyXFuqWBr8Jd7qmPbnfJUFmmuQg',
'12H7HZhtn7aNpTySXysKXiyxULybMktukh',
'1KMEUhmmiSdjX9fsv8aCAiYnVZnTTjqx7W'
]
};
var elec = new Electrum(mpk);
var pubkey, addr, addr_change;
for (var i = 0; i < expected_values.receiving.length; i++) {
//receiving
pubkey = elec.generatePubKey(i);
addr = Address.fromPubKey(pubkey);
addr.as('base58').should.equal(expected_values.receiving[i]);
//change
pubkey = elec.generateChangePubKey(i);
addr = Address.fromPubKey(pubkey);
addr.as('base58').should.equal(expected_values.change[i]);
}
});
});