1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-12-23 09:52:26 +01:00

Rename recipientBlacklistChecker function (#8365)

This commit is contained in:
Whymarrh Whitby 2020-04-20 16:29:41 -02:30 committed by GitHub
parent a2a51e78d1
commit 9d535b949f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 41 additions and 66 deletions

View File

@ -25,7 +25,7 @@ import NonceTracker from 'nonce-tracker'
import * as txUtils from './lib/util' import * as txUtils from './lib/util'
import cleanErrorStack from '../../lib/cleanErrorStack' import cleanErrorStack from '../../lib/cleanErrorStack'
import log from 'loglevel' import log from 'loglevel'
import recipientBlacklistChecker from './lib/recipient-blacklist-checker' import { throwIfAccountIsBlacklisted } from './lib/recipient-blacklist-checker'
import { import {
TRANSACTION_TYPE_CANCEL, TRANSACTION_TYPE_CANCEL,
@ -234,9 +234,7 @@ class TransactionController extends EventEmitter {
this.emit('newUnapprovedTx', txMeta) this.emit('newUnapprovedTx', txMeta)
try { try {
// check whether recipient account is blacklisted throwIfAccountIsBlacklisted(txMeta.metamaskNetworkId, normalizedTxParams.to)
recipientBlacklistChecker.checkAccount(txMeta.metamaskNetworkId, normalizedTxParams.to)
// add default tx params
txMeta = await this.addTxGasDefaults(txMeta, getCodeResponse) txMeta = await this.addTxGasDefaults(txMeta, getCodeResponse)
} catch (error) { } catch (error) {
log.warn(error) log.warn(error)

View File

@ -1,17 +1,12 @@
import blacklist from './recipient-blacklist' import blacklist from './recipient-blacklist'
/** @module*/
export default {
checkAccount,
}
/** /**
* Checks if a specified account on a specified network is blacklisted. * Checks if a specified account on a specified network is blacklisted
@param {number} networkId * @param {number} networkId
@param {string} account * @param {string} account
*/ * @throws {Error} if the account is blacklisted on mainnet
function checkAccount (networkId, account) { */
export function throwIfAccountIsBlacklisted (networkId, account) {
const mainnetId = 1 const mainnetId = 1
if (networkId !== mainnetId) { if (networkId !== mainnetId) {
return return

View File

@ -1,71 +1,53 @@
import { strict as assert } from 'assert' import { strict as assert } from 'assert'
import recipientBlackListChecker from '../../../../../app/scripts/controllers/transactions/lib/recipient-blacklist-checker' import { throwIfAccountIsBlacklisted } from '../../../../../app/scripts/controllers/transactions/lib/recipient-blacklist-checker'
import { ROPSTEN_CODE, RINKEBY_CODE, KOVAN_CODE, GOERLI_CODE } from '../../../../../app/scripts/controllers/network/enums' import { ROPSTEN_CODE, RINKEBY_CODE, KOVAN_CODE, GOERLI_CODE } from '../../../../../app/scripts/controllers/network/enums'
import KeyringController from 'eth-keyring-controller'
describe('Recipient Blacklist Checker', function () { describe('Recipient Blacklist Checker', function () {
describe('#checkAccount', function () { describe('#throwIfAccountIsBlacklisted', function () {
let publicAccounts // Accounts from Ganache's original default seed phrase
const publicAccounts = [
before(async function () { '0x627306090abab3a6e1400e9345bc60c78a8bef57',
const damnedMnemonic = 'candy maple cake sugar pudding cream honey rich smooth crumble sweet treat' '0xf17f52151ebef6c7334fad080c5704d77216b732',
const keyringController = new KeyringController({}) '0xc5fdf4076b8f3a5357c5e395ab970b5b54098fef',
const Keyring = keyringController.getKeyringClassForType('HD Key Tree') '0x821aea9a577a9b44299b9c15c88cf3087f3b5544',
const opts = { '0x0d1d4e623d10f9fba5db95830f7d3839406c6af2',
mnemonic: damnedMnemonic, '0x2932b7a2355d6fecc4b5c0b6bd44cc31df247a2e',
numberOfAccounts: 10, '0x2191ef87e392377ec08e7c08eb105ef5448eced5',
} '0x0f4f2ac550a1b4e2280d04c21cea7ebd822934b5',
const keyring = new Keyring(opts) '0x6330a553fc93768f612722bb8c2ec78ac90b3bbc',
publicAccounts = await keyring.getAccounts() '0x5aeda56215b167893e80b4fe645ba6d5bab767de',
}) ]
it('does not fail on test networks', function () { it('does not fail on test networks', function () {
let callCount = 0
const networks = [ROPSTEN_CODE, RINKEBY_CODE, KOVAN_CODE, GOERLI_CODE] const networks = [ROPSTEN_CODE, RINKEBY_CODE, KOVAN_CODE, GOERLI_CODE]
for (const networkId of networks) { for (const networkId of networks) {
publicAccounts.forEach((account) => { for (const account of publicAccounts) {
recipientBlackListChecker.checkAccount(networkId, account) assert.doesNotThrow(() => throwIfAccountIsBlacklisted(networkId, account))
callCount++ }
})
} }
assert.equal(callCount, 40)
}) })
it('fails on mainnet', function () { it('fails on mainnet', function () {
const mainnetId = 1 for (const account of publicAccounts) {
let callCount = 0 assert.throws(
publicAccounts.forEach((account) => { () => throwIfAccountIsBlacklisted(1, account),
try { { message: 'Recipient is a public account' },
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 () { it('fails for public account - uppercase', function () {
const mainnetId = 1 assert.throws(
const publicAccount = '0X0D1D4E623D10F9FBA5DB95830F7D3839406C6AF2' () => throwIfAccountIsBlacklisted(1, '0X0D1D4E623D10F9FBA5DB95830F7D3839406C6AF2'),
try { { message: 'Recipient is a public account' },
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 () { it('fails for public account - lowercase', function () {
const mainnetId = 1 assert.throws(
const publicAccount = '0x0d1d4e623d10f9fba5db95830f7d3839406c6af2' () => throwIfAccountIsBlacklisted(1, '0x0d1d4e623d10f9fba5db95830f7d3839406c6af2'),
try { { message: 'Recipient is a public account' },
await recipientBlackListChecker.checkAccount(mainnetId, publicAccount) )
assert.fail('function should have thrown an error')
} catch (err) {
assert.equal(err.message, 'Recipient is a public account')
}
}) })
}) })
}) })