diff --git a/lib/address.js b/lib/address.js index b017bc7..2fd487e 100644 --- a/lib/address.js +++ b/lib/address.js @@ -195,10 +195,14 @@ Address._transformBuffer = function(buffer, network, type) { throw new TypeError('Address buffers must be exactly 21 bytes.'); } - network = Networks.get(network); + var networkObj = Networks.get(network); var bufferVersion = Address._classifyFromVersion(buffer); - if (!bufferVersion.network || (network && network !== bufferVersion.network)) { + if (network && !networkObj) { + throw new TypeError('Unknown network'); + } + + if (!bufferVersion.network || (networkObj && networkObj !== bufferVersion.network)) { throw new TypeError('Address has mismatched network type.'); } diff --git a/test/address.js b/test/address.js index 4982ad7..f4632c7 100644 --- a/test/address.js +++ b/test/address.js @@ -250,6 +250,12 @@ describe('Address', function() { Address.fromString(str, Networks.livenet).toString().should.equal(str); }); + it('should throw with bad network param', function() { + (function(){ + Address.fromString(str, 'somenet'); + }).should.throw('Unknown network'); + }); + it('should error because of unrecognized data format', function() { (function() { return new Address(new Error()); diff --git a/test/networks.js b/test/networks.js index 7d82f92..ea265cf 100644 --- a/test/networks.js +++ b/test/networks.js @@ -89,7 +89,10 @@ describe('Networks', function() { networks.add(custom); var network = networks.get(undefined); should.not.exist(network); - networks.remove(custom); + var somenet = networks.get('somenet'); + should.exist(somenet); + somenet.name.should.equal('somenet'); + networks.remove(somenet); }); var constants = ['name', 'alias', 'pubkeyhash', 'scripthash', 'xpubkey', 'xprivkey'];