aboutsummaryrefslogtreecommitdiffstats
path: root/test/unit
diff options
context:
space:
mode:
Diffstat (limited to 'test/unit')
-rw-r--r--test/unit/app/controllers/metamask-controller-test.js8
-rw-r--r--test/unit/app/controllers/transactions/recipient-blacklist-checker-test.js77
-rw-r--r--test/unit/app/controllers/transactions/tx-controller-test.js17
3 files changed, 97 insertions, 5 deletions
diff --git a/test/unit/app/controllers/metamask-controller-test.js b/test/unit/app/controllers/metamask-controller-test.js
index 7ec98766a..0dda4609b 100644
--- a/test/unit/app/controllers/metamask-controller-test.js
+++ b/test/unit/app/controllers/metamask-controller-test.js
@@ -53,6 +53,9 @@ describe('MetaMaskController', function () {
},
initState: clone(firstTimeState),
})
+ // disable diagnostics
+ metamaskController.diagnostics = null
+ // add sinon method spies
sandbox.spy(metamaskController.keyringController, 'createNewVaultAndKeychain')
sandbox.spy(metamaskController.keyringController, 'createNewVaultAndRestore')
})
@@ -72,11 +75,6 @@ describe('MetaMaskController', function () {
it('removes any identities that do not correspond to known accounts.', async function () {
const fakeAddress = '0xbad0'
metamaskController.preferencesController.addAddresses([fakeAddress])
- metamaskController.preferencesController.notifier = {
- notify: async () => {
- return true
- },
- }
await metamaskController.submitPassword(password)
const identities = Object.keys(metamaskController.preferencesController.store.getState().identities)
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 () {