fix Address validation issue

This commit is contained in:
Manuel Araoz 2014-03-19 18:44:24 -03:00
parent 2323e2a67a
commit 3cd4e31c31
3 changed files with 13 additions and 1 deletions

View File

@ -16,6 +16,7 @@ Address.prototype.validate = function() {
Address.super(this, 'validate', arguments); Address.super(this, 'validate', arguments);
if(this.data.length !== 21) throw new Error('invalid data length'); if(this.data.length !== 21) throw new Error('invalid data length');
}); });
if (typeof this.network() === 'undefined') throw new Error('invalid network');
}; };
Address.prototype.isValid = function() { Address.prototype.isValid = function() {

View File

@ -35,6 +35,9 @@ describe('Address', function() {
['1AGNa15ZQXAZUgFiqJ2i7Z2DPU2J6hW62iz', false], // too long Bitcoin address ['1AGNa15ZQXAZUgFiqJ2i7Z2DPU2J6hW62iz', false], // too long Bitcoin address
['1AGNa15ZQXAZUgFiqJ2i7Z2DPU2J6hW62izz', false],// too long Bitcoin address ['1AGNa15ZQXAZUgFiqJ2i7Z2DPU2J6hW62izz', false],// too long Bitcoin address
['2cFupjhnEsSn59qHXstmK2ffpLv2', false], // valid base58 invalid data ['2cFupjhnEsSn59qHXstmK2ffpLv2', false], // valid base58 invalid data
['dB7cwYdcPSgiyAwKWL3JwCVwSk6epU2txw', false], // valid base58, valid length, invalid network
['2MnmgiRH4eGLyLc9eAqStzk7dFgBjFtUCtu', false], // valid base58, valid length, invalid network
['32QBdjycLwbDTuGafUwaU5p5GxzSLPYoF6', true], // valid base58, valid length, valid network
]; ];
data.forEach(function(datum) { data.forEach(function(datum) {
var address = datum[0]; var address = datum[0];

View File

@ -122,12 +122,20 @@ describe('Miscelaneous stuff', function() {
a.network().should.equal(network); a.network().should.equal(network);
}); });
it('should generate correctly from hex', function() { it('should generate correctly from hex', function() {
var version = shouldBeScript? network.addressScript: network.addressPubkey; var version = shouldBeScript ? network.addressScript : network.addressPubkey;
var b = new Address(version, new Buffer(hexPayload, 'hex')); var b = new Address(version, new Buffer(hexPayload, 'hex'));
b.toString().should.equal(b58); b.toString().should.equal(b58);
}); });
}); });
} }
}); });
testdata.dataBase58KeysInvalid.forEach(function(datum) {
var b58 = datum[0];
it('shouldnt be able to create Address nor WalletKey with ' + b58, function() {
var a = new Address(b58);
var invalidAddress = (!a.isValid());
invalidAddress.should.equal(true);
});
});
}); });