aboutsummaryrefslogtreecommitdiffstats
path: root/test/unit
diff options
context:
space:
mode:
authorkumavis <kumavis@users.noreply.github.com>2018-03-07 09:21:36 +0800
committerGitHub <noreply@github.com>2018-03-07 09:21:36 +0800
commit8a444ec96f3127bd606b8d1fcf2b53e9c693cb03 (patch)
tree7ddc788dac09793e93945c02add63c821954111f /test/unit
parent8e0131cbb52eae9d0fd07ac20d1e39bae99446e1 (diff)
parentf9de87af51ccb1190ca93e524de24f8a32ea3d9e (diff)
downloadtangerine-wallet-browser-8a444ec96f3127bd606b8d1fcf2b53e9c693cb03.tar
tangerine-wallet-browser-8a444ec96f3127bd606b8d1fcf2b53e9c693cb03.tar.gz
tangerine-wallet-browser-8a444ec96f3127bd606b8d1fcf2b53e9c693cb03.tar.bz2
tangerine-wallet-browser-8a444ec96f3127bd606b8d1fcf2b53e9c693cb03.tar.lz
tangerine-wallet-browser-8a444ec96f3127bd606b8d1fcf2b53e9c693cb03.tar.xz
tangerine-wallet-browser-8a444ec96f3127bd606b8d1fcf2b53e9c693cb03.tar.zst
tangerine-wallet-browser-8a444ec96f3127bd606b8d1fcf2b53e9c693cb03.zip
Merge pull request #3259 from MetaMask/controllerStubs
Offline testing
Diffstat (limited to 'test/unit')
-rw-r--r--test/unit/blacklist-controller-test.js2
-rw-r--r--test/unit/metamask-controller-test.js176
-rw-r--r--test/unit/network-contoller-test.js44
3 files changed, 96 insertions, 126 deletions
diff --git a/test/unit/blacklist-controller-test.js b/test/unit/blacklist-controller-test.js
index a9260466f..cbf73d3e5 100644
--- a/test/unit/blacklist-controller-test.js
+++ b/test/unit/blacklist-controller-test.js
@@ -38,4 +38,4 @@ describe('blacklist controller', function () {
assert.equal(result, false)
})
})
-}) \ No newline at end of file
+})
diff --git a/test/unit/metamask-controller-test.js b/test/unit/metamask-controller-test.js
index 3fc7f9a98..adeca9b5f 100644
--- a/test/unit/metamask-controller-test.js
+++ b/test/unit/metamask-controller-test.js
@@ -1,129 +1,103 @@
const assert = require('assert')
const sinon = require('sinon')
const clone = require('clone')
+const nock = require('nock')
const MetaMaskController = require('../../app/scripts/metamask-controller')
+const blacklistJSON = require('../stub/blacklist')
const firstTimeState = require('../../app/scripts/first-time-state')
-const BN = require('ethereumjs-util').BN
-const GWEI_BN = new BN('1000000000')
describe('MetaMaskController', function () {
- const noop = () => {}
- const metamaskController = new MetaMaskController({
- showUnconfirmedMessage: noop,
- unlockAccountMessage: noop,
- showUnapprovedTx: noop,
- platform: {},
- encryptor: {
- encrypt: function(password, object) {
- this.object = object
- return Promise.resolve()
- },
- decrypt: function () {
- return Promise.resolve(this.object)
- }
- },
- // initial state
- initState: clone(firstTimeState),
- })
+ let metamaskController
+ const sandbox = sinon.sandbox.create()
+ const noop = () => { }
beforeEach(function () {
- // sinon allows stubbing methods that are easily verified
- this.sinon = sinon.sandbox.create()
+
+ nock('https://api.infura.io')
+ .persist()
+ .get('/v2/blacklist')
+ .reply(200, blacklistJSON)
+
+ nock('https://api.infura.io')
+ .persist()
+ .get(/.*/)
+ .reply(200)
+
+ metamaskController = new MetaMaskController({
+ showUnapprovedTx: noop,
+ encryptor: {
+ encrypt: function (password, object) {
+ this.object = object
+ return Promise.resolve()
+ },
+ decrypt: function () {
+ return Promise.resolve(this.object)
+ },
+ },
+ initState: clone(firstTimeState),
+ })
+ sandbox.spy(metamaskController.keyringController, 'createNewVaultAndKeychain')
+ sandbox.spy(metamaskController.keyringController, 'createNewVaultAndRestore')
})
afterEach(function () {
- // sinon requires cleanup otherwise it will overwrite context
- this.sinon.restore()
+ nock.cleanAll()
+ sandbox.restore()
})
- describe('Metamask Controller', function () {
- assert(metamaskController)
-
- beforeEach(function () {
- sinon.spy(metamaskController.keyringController, 'createNewVaultAndKeychain')
- sinon.spy(metamaskController.keyringController, 'createNewVaultAndRestore')
- })
-
- afterEach(function () {
- metamaskController.keyringController.createNewVaultAndKeychain.restore()
- metamaskController.keyringController.createNewVaultAndRestore.restore()
- })
-
- describe('#getGasPrice', function () {
- it('gives the 50th percentile lowest accepted gas price from recentBlocksController', async function () {
- const realRecentBlocksController = metamaskController.recentBlocksController
- metamaskController.recentBlocksController = {
- store: {
- getState: () => {
- return {
- recentBlocks: [
- { gasPrices: [ '0x3b9aca00', '0x174876e800'] },
- { gasPrices: [ '0x3b9aca00', '0x174876e800'] },
- { gasPrices: [ '0x174876e800', '0x174876e800' ]},
- { gasPrices: [ '0x174876e800', '0x174876e800' ]},
- ]
- }
- }
- }
- }
-
- const gasPrice = metamaskController.getGasPrice()
- assert.equal(gasPrice, '0x3b9aca00', 'accurately estimates 50th percentile accepted gas price')
-
- metamaskController.recentBlocksController = realRecentBlocksController
- })
-
- it('gives the 1 gwei price if no blocks have been seen.', async function () {
- const realRecentBlocksController = metamaskController.recentBlocksController
- metamaskController.recentBlocksController = {
- store: {
- getState: () => {
- return {
- recentBlocks: []
- }
+ describe('#getGasPrice', function () {
+ it('gives the 50th percentile lowest accepted gas price from recentBlocksController', async function () {
+ const realRecentBlocksController = metamaskController.recentBlocksController
+ metamaskController.recentBlocksController = {
+ store: {
+ getState: () => {
+ return {
+ recentBlocks: [
+ { gasPrices: [ '0x3b9aca00', '0x174876e800'] },
+ { gasPrices: [ '0x3b9aca00', '0x174876e800'] },
+ { gasPrices: [ '0x174876e800', '0x174876e800' ]},
+ { gasPrices: [ '0x174876e800', '0x174876e800' ]},
+ ],
}
- }
- }
-
- const gasPrice = metamaskController.getGasPrice()
- assert.equal(gasPrice, '0x' + GWEI_BN.toString(16), 'defaults to 1 gwei')
+ },
+ },
+ }
- metamaskController.recentBlocksController = realRecentBlocksController
- })
+ const gasPrice = metamaskController.getGasPrice()
+ assert.equal(gasPrice, '0x3b9aca00', 'accurately estimates 50th percentile accepted gas price')
+ metamaskController.recentBlocksController = realRecentBlocksController
})
+ })
- describe('#createNewVaultAndKeychain', function () {
- it('can only create new vault on keyringController once', async function () {
- const selectStub = sinon.stub(metamaskController, 'selectFirstIdentity')
-
+ describe('#createNewVaultAndKeychain', function () {
+ it('can only create new vault on keyringController once', async function () {
+ const selectStub = sandbox.stub(metamaskController, 'selectFirstIdentity')
- const password = 'a-fake-password'
+ const password = 'a-fake-password'
- const first = await metamaskController.createNewVaultAndKeychain(password)
- const second = await metamaskController.createNewVaultAndKeychain(password)
+ await metamaskController.createNewVaultAndKeychain(password)
+ await metamaskController.createNewVaultAndKeychain(password)
- assert(metamaskController.keyringController.createNewVaultAndKeychain.calledOnce)
+ assert(metamaskController.keyringController.createNewVaultAndKeychain.calledOnce)
- selectStub.reset()
- })
+ selectStub.reset()
})
+ })
+
+ describe('#createNewVaultAndRestore', function () {
+ it('should be able to call newVaultAndRestore despite a mistake.', async function () {
+
+ const password = 'what-what-what'
+ const wrongSeed = 'debris dizzy just program just float decrease vacant alarm reduce speak stadiu'
+ const rightSeed = 'debris dizzy just program just float decrease vacant alarm reduce speak stadium'
+ await metamaskController.createNewVaultAndRestore(password, wrongSeed)
+ .catch((e) => {
+ return
+ })
+ await metamaskController.createNewVaultAndRestore(password, rightSeed)
- describe('#createNewVaultAndRestore', function () {
- it('should be able to call newVaultAndRestore despite a mistake.', async function () {
- // const selectStub = sinon.stub(metamaskController, 'selectFirstIdentity')
-
- const password = 'what-what-what'
- const wrongSeed = 'debris dizzy just program just float decrease vacant alarm reduce speak stadiu'
- const rightSeed = 'debris dizzy just program just float decrease vacant alarm reduce speak stadium'
- const first = await metamaskController.createNewVaultAndRestore(password, wrongSeed)
- .catch((e) => {
- return
- })
- const second = await metamaskController.createNewVaultAndRestore(password, rightSeed)
-
- assert(metamaskController.keyringController.createNewVaultAndRestore.calledTwice)
- })
+ assert(metamaskController.keyringController.createNewVaultAndRestore.calledTwice)
})
})
})
diff --git a/test/unit/network-contoller-test.js b/test/unit/network-contoller-test.js
index 0b3b5adeb..51ad09f87 100644
--- a/test/unit/network-contoller-test.js
+++ b/test/unit/network-contoller-test.js
@@ -1,25 +1,38 @@
const assert = require('assert')
+const nock = require('nock')
const NetworkController = require('../../app/scripts/controllers/network')
+const { createTestProviderTools } = require('../stub/provider')
+const providerResultStub = {}
+const provider = createTestProviderTools({ scaffold: providerResultStub }).provider
+
describe('# Network Controller', function () {
let networkController
+ const noop = () => {}
const networkControllerProviderInit = {
- getAccounts: () => {},
+ getAccounts: noop,
}
beforeEach(function () {
+
+ nock('https://api.infura.io')
+ .get('/*/')
+ .reply(200)
+
+ nock('https://rinkeby.infura.io')
+ .post('/metamask')
+ .reply(200)
+
networkController = new NetworkController({
- provider: {
- type: 'rinkeby',
- },
+ provider,
})
- networkController.initializeProvider(networkControllerProviderInit, dummyProviderConstructor)
+ networkController.initializeProvider(networkControllerProviderInit, provider)
})
describe('network', function () {
describe('#provider', function () {
it('provider should be updatable without reassignment', function () {
- networkController.initializeProvider(networkControllerProviderInit, dummyProviderConstructor)
+ networkController.initializeProvider(networkControllerProviderInit, provider)
const proxy = networkController._proxy
proxy.setTarget({ test: true, on: () => {} })
assert.ok(proxy.test)
@@ -64,21 +77,4 @@ describe('# Network Controller', function () {
})
})
})
-})
-
-function dummyProviderConstructor() {
- return {
- // provider
- sendAsync: noop,
- // block tracker
- _blockTracker: {},
- start: noop,
- stop: noop,
- on: noop,
- addListener: noop,
- once: noop,
- removeAllListeners: noop,
- }
-}
-
-function noop() {} \ No newline at end of file
+}) \ No newline at end of file