diff options
author | kumavis <kumavis@users.noreply.github.com> | 2018-06-07 02:54:01 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-06-07 02:54:01 +0800 |
commit | d30f03dcbf33c38cf33fc191fbe7d301a8594021 (patch) | |
tree | f4b9f8ea7aee27ed099be5cd8cc578d9dde5e9f5 /test/unit/app | |
parent | 72f7a4e1d057d712f20a3178c258f3b52873825d (diff) | |
parent | 1dda0c646940179bec6e886117a8ecf3f0f7ab48 (diff) | |
download | tangerine-wallet-browser-d30f03dcbf33c38cf33fc191fbe7d301a8594021.tar tangerine-wallet-browser-d30f03dcbf33c38cf33fc191fbe7d301a8594021.tar.gz tangerine-wallet-browser-d30f03dcbf33c38cf33fc191fbe7d301a8594021.tar.bz2 tangerine-wallet-browser-d30f03dcbf33c38cf33fc191fbe7d301a8594021.tar.lz tangerine-wallet-browser-d30f03dcbf33c38cf33fc191fbe7d301a8594021.tar.xz tangerine-wallet-browser-d30f03dcbf33c38cf33fc191fbe7d301a8594021.tar.zst tangerine-wallet-browser-d30f03dcbf33c38cf33fc191fbe7d301a8594021.zip |
Merge pull request #4414 from scsaba/recipient-blacklist
Disallow sending to ganache default accounts on main net
Diffstat (limited to 'test/unit/app')
-rw-r--r-- | test/unit/app/controllers/transactions/recipient-blacklist-checker-test.js | 77 | ||||
-rw-r--r-- | test/unit/app/controllers/transactions/tx-controller-test.js | 17 |
2 files changed, 94 insertions, 0 deletions
diff --git a/test/unit/app/controllers/transactions/recipient-blacklist-checker-test.js b/test/unit/app/controllers/transactions/recipient-blacklist-checker-test.js new file mode 100644 index 000000000..56e8d50db --- /dev/null +++ b/test/unit/app/controllers/transactions/recipient-blacklist-checker-test.js @@ -0,0 +1,77 @@ +const assert = require('assert') +const recipientBlackListChecker = require('../../../../../app/scripts/controllers/transactions/lib/recipient-blacklist-checker') +const { + ROPSTEN_CODE, + RINKEYBY_CODE, + KOVAN_CODE, +} = require('../../../../../app/scripts/controllers/network/enums') + +const KeyringController = require('eth-keyring-controller') + +describe('Recipient Blacklist Checker', function () { + + let publicAccounts + + before(async function () { + const damnedMnemonic = 'candy maple cake sugar pudding cream honey rich smooth crumble sweet treat' + const keyringController = new KeyringController({}) + const Keyring = keyringController.getKeyringClassForType('HD Key Tree') + const opts = { + mnemonic: damnedMnemonic, + numberOfAccounts: 10, + } + const keyring = new Keyring(opts) + publicAccounts = await keyring.getAccounts() + }) + + describe('#checkAccount', function () { + it('does not fail on test networks', function () { + let callCount = 0 + const networks = [ROPSTEN_CODE, RINKEYBY_CODE, KOVAN_CODE] + for (let networkId in networks) { + publicAccounts.forEach((account) => { + recipientBlackListChecker.checkAccount(networkId, account) + callCount++ + }) + } + assert.equal(callCount, 30) + }) + + it('fails on mainnet', function () { + const mainnetId = 1 + let callCount = 0 + publicAccounts.forEach((account) => { + try { + recipientBlackListChecker.checkAccount(mainnetId, account) + assert.fail('function should have thrown an error') + } catch (err) { + assert.equal(err.message, 'Recipient is a public account') + } + callCount++ + }) + assert.equal(callCount, 10) + }) + + it('fails for public account - uppercase', function () { + const mainnetId = 1 + const publicAccount = '0X0D1D4E623D10F9FBA5DB95830F7D3839406C6AF2' + try { + recipientBlackListChecker.checkAccount(mainnetId, publicAccount) + assert.fail('function should have thrown an error') + } catch (err) { + assert.equal(err.message, 'Recipient is a public account') + } + }) + + it('fails for public account - lowercase', async function () { + const mainnetId = 1 + const publicAccount = '0x0d1d4e623d10f9fba5db95830f7d3839406c6af2' + try { + await recipientBlackListChecker.checkAccount(mainnetId, publicAccount) + assert.fail('function should have thrown an error') + } catch (err) { + assert.equal(err.message, 'Recipient is a public account') + } + }) + }) +}) diff --git a/test/unit/app/controllers/transactions/tx-controller-test.js b/test/unit/app/controllers/transactions/tx-controller-test.js index 1f32a0f37..9bdfe7c1a 100644 --- a/test/unit/app/controllers/transactions/tx-controller-test.js +++ b/test/unit/app/controllers/transactions/tx-controller-test.js @@ -185,6 +185,23 @@ describe('Transaction Controller', function () { .catch(done) }) + it('should fail if recipient is public', function (done) { + txController.networkStore = new ObservableStore(1) + txController.addUnapprovedTransaction({ from: '0x1678a085c290ebd122dc42cba69373b5953b831d', to: '0x0d1d4e623D10F9FBA5Db95830F7d3839406C6AF2' }) + .catch((err) => { + if (err.message === 'Recipient is a public account') done() + else done(err) + }) + }) + + it('should not fail if recipient is public but not on mainnet', function (done) { + txController.once('newUnapprovedTx', (txMetaFromEmit) => { + assert(txMetaFromEmit, 'txMeta is falsey') + done() + }) + txController.addUnapprovedTransaction({ from: '0x1678a085c290ebd122dc42cba69373b5953b831d', to: '0x0d1d4e623D10F9FBA5Db95830F7d3839406C6AF2' }) + .catch(done) + }) }) describe('#addTxGasDefaults', function () { |