UNPKG

bitcore-node

Version:

A blockchain indexing node with extended capabilities using bitcore

109 lines (93 loc) 3.2 kB
import { expect } from 'chai'; import * as sinon from 'sinon'; import { Config } from '../../../src/services/config'; import { BaseP2PWorker, P2P } from '../../../src/services/p2p'; import { unitAfterHelper, unitBeforeHelper } from '../../helpers/unit'; class MockP2PWorker extends BaseP2PWorker<any> { started = false; constructor(params) { super(params); this.started = true; } } describe('P2P Service', function() { before(unitBeforeHelper); after(unitAfterHelper); it('should have a test which runs', function() { expect(true).to.equal(true); }); it('should register a class', () => { const chain = 'TEST'; const network = 'test'; P2P.register(chain, network, MockP2PWorker); const registered = P2P.get(chain, network); expect(registered).to.deep.eq(MockP2PWorker); }); it('should start the p2p class', async () => { const sandbox = sinon.createSandbox(); const chain = 'TEST'; const network = 'testnet'; const fakeConfig = {}; P2P.register(chain, network, MockP2PWorker); sandbox.stub(Config, 'chainNetworks').returns([{ chain, network }]); sandbox .stub(Config, 'chainConfig') .withArgs({ chain, network }) .returns(fakeConfig); expect(P2P.workers).to.deep.eq([]); await P2P.start(); expect(`Worker length: ${P2P.workers.length}`).to.eq('Worker length: 1'); expect(P2P.workers[0]).to.exist; const worker = P2P.workers[0] as MockP2PWorker; expect(worker.started).to.eq(true); await P2P.stop(); expect(P2P.workers).to.deep.eq([]); sandbox.restore(); }); it('should not start if disabled', async () => { const sandbox = sinon.createSandbox(); const chain = 'TEST'; const network = 'test'; P2P.register(chain, network, MockP2PWorker); sandbox .stub(Config, 'isDisabled') .withArgs('p2p') .returns(true); expect(P2P.workers).to.deep.eq([]); await P2P.start(); expect(P2P.workers.length).to.eq(0); sandbox.restore(); }); it('should not start if config has disabled', async () => { const sandbox = sinon.createSandbox(); const chain = 'TEST'; const network = 'testnet'; const fakeConfig = { disabled: true }; P2P.register(chain, network, MockP2PWorker); sandbox.stub(Config, 'chainNetworks').returns([{ chain, network }]); sandbox .stub(Config, 'chainConfig') .withArgs({ chain, network }) .returns(fakeConfig); expect(P2P.workers).to.deep.eq([]); await P2P.start(); expect(P2P.workers.length).to.eq(0); sandbox.restore(); }); it('should not start if config has chainSource other than p2p', async () => { const sandbox = sinon.createSandbox(); const chain = 'TEST'; const network = 'testnet'; const fakeConfig = { chainSource: 'rpc' }; P2P.register(chain, network, MockP2PWorker); sandbox.stub(Config, 'chainNetworks').returns([{ chain, network }]); sandbox .stub(Config, 'chainConfig') .withArgs({ chain, network }) .returns(fakeConfig); expect(P2P.workers).to.deep.eq([]); await P2P.start(); expect(P2P.workers.length).to.eq(0); sandbox.restore(); }); });