diff --git a/lib/chain_manager.js b/lib/chain_manager.js new file mode 100644 index 00000000..2e50f35f --- /dev/null +++ b/lib/chain_manager.js @@ -0,0 +1,34 @@ +var fs = require('fs'); +var web3 = require('web3'); + +ChainManager = function() { } + +ChainManager.prototype.loadConfigFile = function(filename) { + try { + var obj = JSON.parse(fs.readFileSync(filename)); + this.chainManagerConfig = obj; + } catch (e) { + throw new Error("error reading " + filename); + } + return this; +}; + +ChainManager.prototype.loadConfig = function(config) { + this.chainManagerConfig = config; + return this; +}; + +ChainManager.prototype.init = function(env, blockchainConfig) { + var config = blockchainConfig.config(env); + + web3.setProvider(new web3.providers.HttpProvider("http://" + config.rpcHost + ":" + config.rpcPort)); + + var chainId = web3.eth.getBlock(0).hash; + + if (this.chainManagerConfig[chainId] === undefined) { + this.chainManagerConfig[chainId] = {contracts: []}; + } +} + +module.exports = ChainManager; + diff --git a/test/chain_manager.js b/test/chain_manager.js new file mode 100644 index 00000000..b589f9fb --- /dev/null +++ b/test/chain_manager.js @@ -0,0 +1,19 @@ +var ChainManager = require('../lib/chain_manager.js'); +var Config = require('../lib/config/config.js'); +var Blockchain = require('../lib/blockchain.js'); +var assert = require('assert'); + +describe('embark.chain_manager', function() { + var chainManager = (new ChainManager()).loadConfigFile('./test/support/chain_manager.json'); + var blockchainConfig = (new Config.Blockchain()).loadConfigFile('test/support/blockchain.yml'); + + describe('#init', function() { + chainManager.init('development', blockchainConfig); + + it('should initialize chain', function() { + assert.equal(chainManager.chainManagerConfig['0x629e768beb87dc8c54a475d310a7196e86c97d0006e5a6d34a8217726c90223f'] != undefined, true); + assert.equal(chainManager.chainManagerConfig['0x629e768beb87dc8c54a475d310a7196e86c97d0006e5a6d34a8217726c90223f'].contracts.length, 0); + }); + + }); +}); diff --git a/test/support/chain_manager.json b/test/support/chain_manager.json new file mode 100644 index 00000000..0967ef42 --- /dev/null +++ b/test/support/chain_manager.json @@ -0,0 +1 @@ +{}