/*globals describe, it*/ const Config = require('../lib/core/config.js'); const Plugins = require('../lib/core/plugins.js'); const assert = require('assert'); const TestLogger = require('../lib/utils/test_logger'); const Events = require('../lib/core/events'); describe('embark.Config', function () { let config = new Config({ env: 'myenv', configDir: './test/test1/config/', events: new Events() }); config.plugins = new Plugins({plugins: {}}); config.logger = new TestLogger({}); describe('#loadBlockchainConfigFile', function () { it('should load blockchain config correctly', function () { config.loadBlockchainConfigFile(); let expectedConfig = { "enabled": true, "networkType": "custom", "genesisBlock": "config/development/genesis.json", "datadir": ".embark/development/datadir", "isDev": false, "mineWhenNeeded": true, "nodiscover": true, "rpcHost": "localhost", "rpcPort": 8545, "rpcCorsDomain": "http://localhost:8000", "wsOrigins": "auto", "account": { "password": "config/development/password" } }; assert.deepEqual(config.blockchainConfig, expectedConfig); }); it('should convert Ether units', function () { let expectedConfig = { "enabled": true, "networkType": "custom", "genesisBlock": "config/development/genesis.json", "datadir": ".embark/development/datadir", "isDev": false, "targetGasLimit": "300000", "gasPrice": "8000000", "mineWhenNeeded": true, "nodiscover": true, "rpcHost": "localhost", "rpcPort": 8545, "rpcCorsDomain": "http://localhost:8000", "wsOrigins": "auto", "account": { "password": "config/development/password", "balance": "3000000000000000000" } }; let config = new Config({ env: 'unitenv', configDir: './test/test1/config/', events: new Events() }); config.plugins = new Plugins({plugins: {}}); config.logger = new TestLogger({}); config.loadBlockchainConfigFile(); assert.deepEqual(config.blockchainConfig, expectedConfig); }); it('should accept unitless gas values', function () { let expectedConfig = { "enabled": true, "networkType": "custom", "genesisBlock": "config/development/genesis.json", "datadir": ".embark/development/datadir", "isDev": false, "targetGasLimit": "20000000", "gasPrice": "8000000", "mineWhenNeeded": true, "nodiscover": true, "rpcHost": "localhost", "rpcPort": 8545, "rpcCorsDomain": "http://localhost:8000", "wsOrigins": "auto", "account": { "password": "config/development/password", "balance": "3000000000000000000" } }; let config = new Config({ env: 'unitlessenv', configDir: './test/test1/config/', events: new Events() }); config.plugins = new Plugins({plugins: {}}); config.logger = new TestLogger({}); config.loadBlockchainConfigFile(); assert.deepEqual(config.blockchainConfig, expectedConfig); }); }); describe('#loadContractsConfigFile', function () { it('should load contract config correctly', function () { config.loadContractsConfigFile(); let expectedConfig = { versions: {'web3': '1.0.0-beta', solc: '0.4.25'}, deployment: {host: 'localhost', port: 8545, type: 'rpc', "accounts": [{"mnemonic": "12 word mnemonic", "balance": "5000000000"}]}, dappConnection: ['$WEB3', 'localhost:8545'], "gas": "400000", "contracts": { "SimpleStorage": { "args": [100], "gas": "123000", "gasPrice": "1000" }, "Token": { "args": [200] } } }; assert.deepEqual(config.contractsConfig, expectedConfig); }); }); describe('#loadExternalContractsFiles', function () { it('should create the right list of files and download', function () { config.contractsFiles = []; config.contractsConfig.contracts = [ { file: 'https://github.com/embark-framework/embark/blob/master/test_app/app/contracts/simple_storage.sol' }, { file: 'github.com/status-im/contracts/contracts/identity/ERC725.sol' } ]; const expected = [ { "filename": ".embark/contracts/embark-framework/embark/master/test_app/app/contracts/simple_storage.sol", "type": "http", "path": "https://raw.githubusercontent.com/embark-framework/embark/master/test_app/app/contracts/simple_storage.sol", "pluginPath": '', "importRemappings": [], "basedir": "", "resolver": undefined, "downloadedImports": false, "storageConfig": null, "ipfsUrl": null }, { "filename": ".embark/contracts/status-im/contracts/master/contracts/identity/ERC725.sol", "type": "http", "path": "https://raw.githubusercontent.com/status-im/contracts/master/contracts/identity/ERC725.sol", "pluginPath": '', "importRemappings": [], "basedir": "", "resolver": undefined, "downloadedImports": false, "storageConfig": null, "ipfsUrl": null } ]; config.loadExternalContractsFiles(); assert.deepEqual(config.contractsFiles, expected); }); }); });