Merge branch 'betterErrorsOnTx' of https://github.com/MetaMask/metamask-extension into betterErrorsOnTx

feature/default_network_editable
frankiebee 7 years ago
commit 30cbe74ba6
  1. 5
      app/scripts/controllers/network.js
  2. 10
      app/scripts/controllers/transactions.js
  3. 2
      package.json
  4. 36
      test/unit/network-contoller-test.js
  5. 8
      test/unit/tx-controller-test.js

@ -28,9 +28,9 @@ module.exports = class NetworkController extends EventEmitter {
this._provider = provider this._provider = provider
} }
initializeProvider (opts) { initializeProvider (opts, providerContructor = MetaMaskProvider) {
this.providerInit = opts this.providerInit = opts
this._provider = MetaMaskProvider(opts) this._provider = providerContructor(opts)
this._proxy = new Proxy(this._provider, { this._proxy = new Proxy(this._provider, {
get: (obj, name) => { get: (obj, name) => {
if (name === 'on') return this._on.bind(this) if (name === 'on') return this._on.bind(this)
@ -38,6 +38,7 @@ module.exports = class NetworkController extends EventEmitter {
}, },
set: (obj, name, value) => { set: (obj, name, value) => {
this._provider[name] = value this._provider[name] = value
return value
}, },
}) })
this.provider.on('block', this._logBlock.bind(this)) this.provider.on('block', this._logBlock.bind(this))

@ -469,7 +469,7 @@ module.exports = class TransactionController extends EventEmitter {
})) }))
} }
async _resubmitTx (txMeta, cb) { async _resubmitTx (txMeta) {
const address = txMeta.txParams.from const address = txMeta.txParams.from
const balance = this.ethStore.getState().accounts[address].balance const balance = this.ethStore.getState().accounts[address].balance
if (!('retryCount' in txMeta)) txMeta.retryCount = 0 if (!('retryCount' in txMeta)) txMeta.retryCount = 0
@ -481,17 +481,17 @@ module.exports = class TransactionController extends EventEmitter {
stack: '_resubmitTx: custom tx-controller error', stack: '_resubmitTx: custom tx-controller error',
message, message,
}) })
cb() log.error(message)
return log.error(message) return
} }
// Only auto-submit already-signed txs: // Only auto-submit already-signed txs:
if (!('rawTx' in txMeta)) return cb() if (!('rawTx' in txMeta)) return
// Increment a try counter. // Increment a try counter.
txMeta.retryCount++ txMeta.retryCount++
const rawTx = txMeta.rawTx const rawTx = txMeta.rawTx
return await this.txProviderUtils.publishTransaction(rawTx, cb) return await this.txProviderUtils.publishTransaction(rawTx)
} }
// checks the network for signed txs and // checks the network for signed txs and

@ -127,7 +127,7 @@
"valid-url": "^1.0.9", "valid-url": "^1.0.9",
"vreme": "^3.0.2", "vreme": "^3.0.2",
"web3": "0.19.1", "web3": "0.19.1",
"web3-provider-engine": "^13.2.8", "web3-provider-engine": "^13.2.9",
"web3-stream-provider": "^3.0.1", "web3-stream-provider": "^3.0.1",
"xtend": "^4.0.1" "xtend": "^4.0.1"
}, },

@ -3,6 +3,9 @@ const NetworkController = require('../../app/scripts/controllers/network')
describe('# Network Controller', function () { describe('# Network Controller', function () {
let networkController let networkController
const networkControllerProviderInit = {
getAccounts: () => {},
}
beforeEach(function () { beforeEach(function () {
networkController = new NetworkController({ networkController = new NetworkController({
@ -10,26 +13,13 @@ describe('# Network Controller', function () {
type: 'rinkeby', type: 'rinkeby',
}, },
}) })
// stub out provider
networkController._provider = new Proxy({}, {
get: (obj, name) => {
return () => {}
},
})
networkController.providerInit = {
getAccounts: () => {},
}
networkController.ethQuery = new Proxy({}, { networkController.initializeProvider(networkControllerProviderInit, dummyProviderConstructor)
get: (obj, name) => {
return () => {}
},
})
}) })
describe('network', function () { describe('network', function () {
describe('#provider', function () { describe('#provider', function () {
it('provider should be updatable without reassignment', function () { it('provider should be updatable without reassignment', function () {
networkController.initializeProvider(networkController.providerInit) networkController.initializeProvider(networkControllerProviderInit, dummyProviderConstructor)
const provider = networkController.provider const provider = networkController.provider
networkController._provider = {test: true} networkController._provider = {test: true}
assert.ok(provider.test) assert.ok(provider.test)
@ -75,3 +65,19 @@ describe('# Network Controller', function () {
}) })
}) })
}) })
function dummyProviderConstructor() {
return {
// provider
sendAsync: noop,
// block tracker
start: noop,
stop: noop,
on: noop,
addListener: noop,
once: noop,
removeAllListeners: noop,
}
}
function noop() {}

@ -343,13 +343,17 @@ describe('Transaction Controller', function () {
// Adding the fake tx: // Adding the fake tx:
txController.addTx(clone(txMeta)) txController.addTx(clone(txMeta))
txController._resubmitTx(txMeta, function (err) { txController._resubmitTx(txMeta)
assert.ifError(err, 'should not throw an error') .then(() => {
const updatedMeta = txController.getTx(txMeta.id) const updatedMeta = txController.getTx(txMeta.id)
assert.notEqual(updatedMeta.status, txMeta.status, 'status changed.') assert.notEqual(updatedMeta.status, txMeta.status, 'status changed.')
assert.equal(updatedMeta.status, 'failed', 'tx set to failed.') assert.equal(updatedMeta.status, 'failed', 'tx set to failed.')
done() done()
}) })
.catch((err) => {
assert.ifError(err, 'should not throw an error')
done()
})
}) })
}) })
}) })

Loading…
Cancel
Save