UNPKG

bitcore-lib

Version:

A pure and powerful JavaScript Bitcoin library.

148 lines (126 loc) 4.58 kB
'use strict'; var expect = require('chai').expect; var should = require('chai').should(); var bitcore = require('..'); var networks = bitcore.Networks; describe('Networks', function() { var customnet; it('should contain all Networks', function() { should.exist(networks.livenet); should.exist(networks.testnet); should.exist(networks.defaultNetwork); }); it('should not replace testnet network with regtest', function() { const beforeEnable = networks.testnet; networks.enableRegtest(); networks.testnet.should.deep.equal(beforeEnable); networks.disableRegtest(); networks.testnet.should.deep.equal(beforeEnable); }); it('will get network based on string "regtest" value', function() { var network = networks.get('regtest'); network.should.equal(networks.regtest); }); it('should be able to define a custom Network', function() { var custom = { name: 'customnet', alias: 'mynet', pubkeyhash: 0x10, privatekey: 0x90, scripthash: 0x08, xpubkey: 0x0278b20e, xprivkey: 0x0278ade4, networkMagic: 0xe7beb4d4, port: 20001, dnsSeeds: [ 'localhost', 'mynet.localhost' ] }; networks.add(custom); customnet = networks.get('customnet'); for (var key in custom) { if (key !== 'networkMagic') { customnet[key].should.equal(custom[key]); } else { var expected = Buffer.from('e7beb4d4', 'hex'); customnet[key].should.deep.equal(expected); } } }); it('can remove a custom network', function() { networks.remove(customnet); var net = networks.get('customnet'); should.equal(net, undefined); }); it('should not set a network map for an undefined value', function() { var custom = { name: 'somenet', pubkeyhash: 0x13, privatekey: 0x93, scripthash: 0x11, xpubkey: 0x0278b20f, xprivkey: 0x0278ade5, networkMagic: 0xe7beb4d5, port: 20008, dnsSeeds: [ 'somenet.localhost' ] }; networks.add(custom); var network = networks.get(undefined); should.not.exist(network); var somenet = networks.get('somenet'); should.exist(somenet); somenet.name.should.equal('somenet'); }); it('can remove a custom network by name', function() { var net = networks.get('somenet'); should.exist(net); networks.remove('somenet'); net = networks.get('somenet'); should.equal(net, undefined); }); var constants = ['name', 'alias', 'pubkeyhash', 'scripthash', 'xpubkey', 'xprivkey']; constants.forEach(function(key){ it('should have constant '+key+' for livenet and testnet', function(){ networks.testnet.hasOwnProperty(key).should.equal(true); networks.livenet.hasOwnProperty(key).should.equal(true); }); }); it('tests only for the specified key', function() { expect(networks.get(0x6f, 'pubkeyhash')).to.equal(networks.testnet); expect(networks.get(0x6f, 'privatekey')).to.equal(undefined); }); it('can test for multiple keys', function() { expect(networks.get(0x6f, ['pubkeyhash', 'scripthash'])).to.equal(networks.testnet); expect(networks.get(0xc4, ['pubkeyhash', 'scripthash'])).to.equal(networks.testnet); expect(networks.get(0x6f, ['privatekey', 'port'])).to.equal(undefined); }); it('converts to string using the "name" property', function() { networks.livenet.toString().should.equal('livenet'); }); it('network object should be immutable', function() { expect(networks.testnet.name).to.equal('testnet') var fn = function() { networks.testnet.name = 'livenet' } expect(fn).to.throw(TypeError) }); it('should have not have network magic or port for testnet', function() { var testnet = networks.get('testnet'); var buffUtil = require('../lib/util/buffer'); buffUtil.isBuffer(testnet.networkMagic).should.equal(false); isNaN(testnet.port).should.equal(true); }); it('should have network magic and port for testnet variant "testnet3"', function() { var testnet = networks.get('testnet3'); var buffUtil = require('../lib/util/buffer'); buffUtil.isBuffer(testnet.networkMagic).should.equal(true); isNaN(testnet.port).should.equal(false); }); it('should have network magic and port for testnet variant "signet"', function() { var testnet = networks.get('signet'); var buffUtil = require('../lib/util/buffer'); buffUtil.isBuffer(testnet.networkMagic).should.equal(true); isNaN(testnet.port).should.equal(false); }); });