aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrankie <frankie.diamond@gmail.com>2017-07-26 05:46:31 +0800
committerGitHub <noreply@github.com>2017-07-26 05:46:31 +0800
commit0c73d6d852ac9c98613f71d6ee87f9d89c3c2b47 (patch)
tree12c7ec8193ddf6ed0b95423b12a3b0ed438957c7
parente081ddf34734aa647e030b9900fc225150df044a (diff)
parent5ec73c0e652f5389d14d00abed3977324043a824 (diff)
downloadtangerine-wallet-browser-0c73d6d852ac9c98613f71d6ee87f9d89c3c2b47.tar
tangerine-wallet-browser-0c73d6d852ac9c98613f71d6ee87f9d89c3c2b47.tar.gz
tangerine-wallet-browser-0c73d6d852ac9c98613f71d6ee87f9d89c3c2b47.tar.bz2
tangerine-wallet-browser-0c73d6d852ac9c98613f71d6ee87f9d89c3c2b47.tar.lz
tangerine-wallet-browser-0c73d6d852ac9c98613f71d6ee87f9d89c3c2b47.tar.xz
tangerine-wallet-browser-0c73d6d852ac9c98613f71d6ee87f9d89c3c2b47.tar.zst
tangerine-wallet-browser-0c73d6d852ac9c98613f71d6ee87f9d89c3c2b47.zip
Merge pull request #1824 from MetaMask/tx-cont-fix
TransactionController & NetworkController fixes
-rw-r--r--app/scripts/controllers/network.js5
-rw-r--r--app/scripts/controllers/transactions.js10
-rw-r--r--test/unit/network-contoller-test.js36
-rw-r--r--test/unit/tx-controller-test.js8
4 files changed, 35 insertions, 24 deletions
diff --git a/app/scripts/controllers/network.js b/app/scripts/controllers/network.js
index c07f13b8d..0a3e5e26b 100644
--- a/app/scripts/controllers/network.js
+++ b/app/scripts/controllers/network.js
@@ -28,9 +28,9 @@ module.exports = class NetworkController extends EventEmitter {
this._provider = provider
}
- initializeProvider (opts) {
+ initializeProvider (opts, providerContructor = MetaMaskProvider) {
this.providerInit = opts
- this._provider = MetaMaskProvider(opts)
+ this._provider = providerContructor(opts)
this._proxy = new Proxy(this._provider, {
get: (obj, name) => {
if (name === 'on') return this._on.bind(this)
@@ -38,6 +38,7 @@ module.exports = class NetworkController extends EventEmitter {
},
set: (obj, name, value) => {
this._provider[name] = value
+ return value
},
})
this.provider.on('block', this._logBlock.bind(this))
diff --git a/app/scripts/controllers/transactions.js b/app/scripts/controllers/transactions.js
index 5f3d84ebe..fc91bdf4d 100644
--- a/app/scripts/controllers/transactions.js
+++ b/app/scripts/controllers/transactions.js
@@ -458,7 +458,7 @@ module.exports = class TransactionController extends EventEmitter {
}))
}
- async _resubmitTx (txMeta, cb) {
+ async _resubmitTx (txMeta) {
const address = txMeta.txParams.from
const balance = this.ethStore.getState().accounts[address].balance
if (!('retryCount' in txMeta)) txMeta.retryCount = 0
@@ -467,17 +467,17 @@ module.exports = class TransactionController extends EventEmitter {
if (!this.txProviderUtils.sufficientBalance(txMeta.txParams, balance)) {
const message = 'Insufficient balance.'
this.setTxStatusFailed(txMeta.id, { message })
- cb()
- return log.error(message)
+ log.error(message)
+ return
}
// Only auto-submit already-signed txs:
- if (!('rawTx' in txMeta)) return cb()
+ if (!('rawTx' in txMeta)) return
// Increment a try counter.
txMeta.retryCount++
const rawTx = txMeta.rawTx
- return await this.txProviderUtils.publishTransaction(rawTx, cb)
+ return await this.txProviderUtils.publishTransaction(rawTx)
}
// checks the network for signed txs and
diff --git a/test/unit/network-contoller-test.js b/test/unit/network-contoller-test.js
index 0c7ee9d70..87c2ee7a3 100644
--- a/test/unit/network-contoller-test.js
+++ b/test/unit/network-contoller-test.js
@@ -3,6 +3,9 @@ const NetworkController = require('../../app/scripts/controllers/network')
describe('# Network Controller', function () {
let networkController
+ const networkControllerProviderInit = {
+ getAccounts: () => {},
+ }
beforeEach(function () {
networkController = new NetworkController({
@@ -10,26 +13,13 @@ describe('# Network Controller', function () {
type: 'rinkeby',
},
})
- // stub out provider
- networkController._provider = new Proxy({}, {
- get: (obj, name) => {
- return () => {}
- },
- })
- networkController.providerInit = {
- getAccounts: () => {},
- }
- networkController.ethQuery = new Proxy({}, {
- get: (obj, name) => {
- return () => {}
- },
- })
+ networkController.initializeProvider(networkControllerProviderInit, dummyProviderConstructor)
})
describe('network', function () {
describe('#provider', function () {
it('provider should be updatable without reassignment', function () {
- networkController.initializeProvider(networkController.providerInit)
+ networkController.initializeProvider(networkControllerProviderInit, dummyProviderConstructor)
const provider = networkController.provider
networkController._provider = {test: true}
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() {} \ No newline at end of file
diff --git a/test/unit/tx-controller-test.js b/test/unit/tx-controller-test.js
index 7b86cfe14..31908569a 100644
--- a/test/unit/tx-controller-test.js
+++ b/test/unit/tx-controller-test.js
@@ -343,13 +343,17 @@ describe('Transaction Controller', function () {
// Adding the fake tx:
txController.addTx(clone(txMeta))
- txController._resubmitTx(txMeta, function (err) {
- assert.ifError(err, 'should not throw an error')
+ txController._resubmitTx(txMeta)
+ .then(() => {
const updatedMeta = txController.getTx(txMeta.id)
assert.notEqual(updatedMeta.status, txMeta.status, 'status changed.')
assert.equal(updatedMeta.status, 'failed', 'tx set to failed.')
done()
})
+ .catch((err) => {
+ assert.ifError(err, 'should not throw an error')
+ done()
+ })
})
})
})