diff --git a/lib/admin/config.js b/lib/admin/config.js index bb50b1f5..fd1e9a7c 100644 --- a/lib/admin/config.js +++ b/lib/admin/config.js @@ -1,4 +1,5 @@ const _ = require('lodash/fp') +const devMode = require('minimist')(process.argv.slice(2)).dev const currencies = require('../../currencies.json') const languageRec = require('../../languages.json') @@ -153,6 +154,12 @@ const supportedLanguages = languageRec.supported const languages = supportedLanguages.map(mapLanguage).filter(r => r) const ALL_CRYPTOS = ['BTC', 'ETH', 'LTC', 'DASH', 'ZEC', 'BCH'] +const filterAccounts = (data, isDevMode) => { + const notAllowed = ['mock-ticker', 'mock-wallet', 'mock-exchange', 'mock-sms', 'mock-id-verify', 'mock-zero-conf'] + const filterOut = o => _.includes(o.code, notAllowed) + return isDevMode ? data : {...data, accounts: _.filter(a => !filterOut(a), data.accounts)} +} + function fetchData () { return machineLoader.getMachineNames() .then(machineList => ({ @@ -200,6 +207,9 @@ function fetchData () { ], machines: machineList.map(machine => ({machine: machine.deviceId, display: machine.name})) })) + .then((data) => { + return filterAccounts(data, devMode) + }) } function saveConfigGroup (results) { @@ -213,5 +223,6 @@ module.exports = { fetchConfigGroup, saveConfigGroup, validateCurrentConfig, - fetchConfig + fetchConfig, + filterAccounts } diff --git a/test/unit/filter-config-accounts.js b/test/unit/filter-config-accounts.js new file mode 100644 index 00000000..9c8fb731 --- /dev/null +++ b/test/unit/filter-config-accounts.js @@ -0,0 +1,31 @@ +import _ from 'lodash/fp' +import test from 'ava' + +import { filterAccounts } from '../../lib/admin/config' + +const ALL_CRYPTOS = ['BTC', 'ETH', 'LTC', 'DASH', 'ZEC', 'BCH'] +const data = { + accounts: [ + {code: 'mock-ticker', display: 'Mock ticker', class: 'ticker', cryptos: ALL_CRYPTOS}, + {code: 'bitcoind', display: 'bitcoind', class: 'wallet', cryptos: ['BTC']}, + {code: 'quadrigacx', display: 'QuadrigaCX', class: 'exchange', cryptos: ['BTC', 'ETH', 'LTC', 'BCH']}, + {code: 'mock-wallet', display: 'Mock (Caution!)', class: 'wallet', cryptos: ALL_CRYPTOS} + ] +} + +test('Do not filter accounts in dev mode', t => { + t.plan(3) + const devMode = true + const filteredData = filterAccounts(data, devMode) + t.is(filteredData.accounts.length, 4) + t.true(_.some(['code', 'mock-wallet'], filteredData.accounts)) + t.true(_.some(['code', 'mock-ticker'], filteredData.accounts)) +}) + +test('Filter accounts in production', t => { + t.plan(3) + const filteredData = filterAccounts(data) + t.false(_.some(['code', 'mock-wallet'], filteredData.accounts)) + t.false(_.some(['code', 'mock-ticker'], filteredData.accounts)) + t.is(filteredData.accounts.length, 2) +})