blockchain_test.js
1 /* global before,describe,it */ 2 const {startRPCMockServer, TestProvider} = require('./test'); 3 4 const async = require('async'); 5 const {assert} = require('chai'); 6 7 const Blockchain = require('../dist/blockchain'); 8 9 describe('Blockchain', () => { 10 describe('#connect', () => { 11 before(() => { 12 Blockchain.default.registerProvider('web3', TestProvider); 13 Blockchain.default.setProvider('web3', {}); 14 }); 15 16 const scenarios = [ 17 { 18 description: 'should not keep trying other connections if connected', 19 servers: [true, true], 20 visited: [true, false], 21 error: false 22 }, 23 { 24 description: 'should keep trying other connections if not connected', 25 servers: [false, true], 26 visited: [true, true], 27 error: false 28 }, 29 { 30 description: 'should return error if no connections succeed', 31 servers: [false, false], 32 visited: [true, true], 33 error: true 34 } 35 ]; 36 37 scenarios.forEach(scenario => { 38 it(scenario.description, done => { 39 async.parallel( 40 scenario.servers.map(validServer => 41 (cb) => startRPCMockServer({successful: validServer}, cb) 42 ), 43 (_err, servers) => { 44 const connStrings = servers.map(server => server.connectionString); 45 Blockchain.default.connect(connStrings, {}, err => { 46 if(scenario.error) assert(err); 47 48 servers.forEach((server, idx) => { 49 assert.strictEqual(server.visited, scenario.visited[idx]); 50 }); 51 done(); 52 }); 53 } 54 ); 55 }); 56 }); 57 }); 58 });