Skip to content

Commit

Permalink
added unit tests for metamaskcontroller
Browse files Browse the repository at this point in the history
  • Loading branch information
brunobar79 committed Jul 16, 2018
1 parent 41879a9 commit e5512c3
Show file tree
Hide file tree
Showing 2 changed files with 87 additions and 3 deletions.
20 changes: 17 additions & 3 deletions app/scripts/metamask-controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -561,10 +561,15 @@ module.exports = class MetamaskController extends EventEmitter {
return accounts

default:
throw new Error('MetamaskController - Unknown device')
throw new Error('MetamaskController:connectHardware - Unknown device')
}
}

/**
* Check if the device is unlocked
*
* @returns {Promise<boolean>}
*/
async checkHardwareStatus (deviceName) {

switch (deviceName) {
Expand All @@ -574,12 +579,19 @@ module.exports = class MetamaskController extends EventEmitter {
'Trezor Hardware'
)[0]
if (!keyring) {
return false
throw new Error('MetamaskController:checkHardwareStatus - Trezor Hardware keyring not found')
}
return keyring.isUnlocked()
default:
throw new Error('MetamaskController:checkHardwareStatus - Unknown device')
}
}

/**
* Clear
*
* @returns {Promise<boolean>}
*/
async forgetDevice (deviceName) {

switch (deviceName) {
Expand All @@ -589,10 +601,12 @@ module.exports = class MetamaskController extends EventEmitter {
'Trezor Hardware'
)[0]
if (!keyring) {
return false
throw new Error('MetamaskController:forgetDevice - Trezor Hardware keyring not found')
}
keyring.forgetDevice()
return true
default:
throw new Error('MetamaskController:forgetDevice - Unknown device')
}
}

Expand Down
70 changes: 70 additions & 0 deletions test/unit/app/controllers/metamask-controller-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -222,6 +222,76 @@ describe('MetaMaskController', function () {
})
})

describe('connectHardware', function () {

it('should throw if it receives an unknown device name', async function () {
try {
await metamaskController.connectHardware('Some random device name', 0)
} catch (e) {
assert.equal(e, 'Error: MetamaskController:connectHardware - Unknown device')
}
})

it('should add the Trezor Hardware keyring', async function () {
await metamaskController.connectHardware('trezor', 0).catch((e) => null)
const keyrings = await metamaskController.keyringController.getKeyringsByType(
'Trezor Hardware'
)
assert.equal(keyrings.length, 1)
})

})

describe('checkHardwareStatus', function () {
it('should throw if it receives an unknown device name', async function () {
try {
await metamaskController.checkHardwareStatus('Some random device name')
} catch (e) {
assert.equal(e, 'Error: MetamaskController:checkHardwareStatus - Unknown device')
}
})

it('should be locked by default', async function () {
await metamaskController.connectHardware('trezor', 0).catch((e) => null)
const status = await metamaskController.checkHardwareStatus('trezor')
assert.equal(status, false)
})
})

describe('forgetDevice', function () {
it('should throw if it receives an unknown device name', async function () {
try {
await metamaskController.forgetDevice('Some random device name')
} catch (e) {
assert.equal(e, 'Error: MetamaskController:forgetDevice - Unknown device')
}
})

it('should wipe all the keyring info', async function () {
await metamaskController.connectHardware('trezor', 0).catch((e) => null)
await metamaskController.forgetDevice('trezor')
const keyrings = await metamaskController.keyringController.getKeyringsByType(
'Trezor Hardware'
)

assert.deepEqual(keyrings[0].accounts, [])
assert.deepEqual(keyrings[0].page, 0)
assert.deepEqual(keyrings[0].isUnlocked(), false)
})
})

describe('unlockTrezorAccount', function () {
it('should set accountToUnlock in the keyring', async function () {
await metamaskController.connectHardware('trezor', 0).catch((e) => null)
const accountToUnlock = 10
await metamaskController.unlockTrezorAccount(accountToUnlock).catch((e) => null)
const keyrings = await metamaskController.keyringController.getKeyringsByType(
'Trezor Hardware'
)
assert.equal(keyrings[0].unlockedAccount, accountToUnlock)
})
})

describe('#setCustomRpc', function () {
const customRPC = 'https://custom.rpc/'
let rpcTarget
Expand Down

0 comments on commit e5512c3

Please sign in to comment.