mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-22 09:23:21 +01:00
Mostly got async keyringController tests passing
This commit is contained in:
parent
c77d355e98
commit
600f5c31db
@ -99,16 +99,17 @@ module.exports = class KeyringController extends EventEmitter {
|
||||
mnemonic: seed,
|
||||
numberOfAccounts: 1,
|
||||
}, (err) => {
|
||||
if (err) return cb(err)
|
||||
const firstKeyring = this.keyrings[0]
|
||||
const accounts = firstKeyring.getAccounts()
|
||||
const firstAccount = accounts[0]
|
||||
const hexAccount = normalize(firstAccount)
|
||||
this.configManager.setSelectedAccount(hexAccount)
|
||||
this.setupAccounts(accounts)
|
||||
|
||||
this.emit('update')
|
||||
cb()
|
||||
this.persistAllKeyrings()
|
||||
.then(() => {
|
||||
this.emit('update')
|
||||
cb(err)
|
||||
})
|
||||
})
|
||||
})
|
||||
}
|
||||
@ -152,6 +153,7 @@ module.exports = class KeyringController extends EventEmitter {
|
||||
createFirstKeyTree (password, cb) {
|
||||
this.clearKeyrings()
|
||||
this.addNewKeyring('HD Key Tree', {numberOfAccounts: 1}, (err) => {
|
||||
if (err) return cb(err)
|
||||
const accounts = this.keyrings[0].getAccounts()
|
||||
const firstAccount = accounts[0]
|
||||
const hexAccount = normalize(firstAccount)
|
||||
@ -162,7 +164,7 @@ module.exports = class KeyringController extends EventEmitter {
|
||||
this.setupAccounts(accounts)
|
||||
this.persistAllKeyrings()
|
||||
.then(() => {
|
||||
cb(err)
|
||||
cb()
|
||||
})
|
||||
.catch((reason) => {
|
||||
cb(reason)
|
||||
@ -335,10 +337,10 @@ module.exports = class KeyringController extends EventEmitter {
|
||||
|
||||
getAccounts () {
|
||||
const keyrings = this.keyrings || []
|
||||
return keyrings.map(kr => kr.getAccounts())
|
||||
return Promise.all(keyrings.map(kr => kr.getAccounts())
|
||||
.reduce((res, arr) => {
|
||||
return res.concat(arr)
|
||||
}, [])
|
||||
}, []))
|
||||
}
|
||||
|
||||
setSelectedAccount (address, cb) {
|
||||
|
@ -61,7 +61,7 @@ describe('KeyringController', function() {
|
||||
|
||||
describe('#restoreKeyring', function() {
|
||||
|
||||
it(`should pass a keyring's serialized data back to the correct type.`, function() {
|
||||
it(`should pass a keyring's serialized data back to the correct type.`, function(done) {
|
||||
const mockSerialized = {
|
||||
type: 'HD Key Tree',
|
||||
data: {
|
||||
@ -74,12 +74,14 @@ describe('KeyringController', function() {
|
||||
mock.expects('getBalanceAndNickname')
|
||||
.exactly(1)
|
||||
|
||||
var keyring = keyringController.restoreKeyring(mockSerialized)
|
||||
assert.equal(keyring.wallets.length, 1, 'one wallet restored')
|
||||
assert.equal(keyring.getAccounts()[0], addresses[0])
|
||||
mock.verify()
|
||||
keyringController.restoreKeyring(mockSerialized)
|
||||
.then((keyring) => {
|
||||
assert.equal(keyring.wallets.length, 1, 'one wallet restored')
|
||||
assert.equal(keyring.getAccounts()[0], addresses[0])
|
||||
mock.verify()
|
||||
done()
|
||||
})
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
describe('#migrateOldVaultIfAny', function() {
|
||||
@ -92,6 +94,7 @@ describe('KeyringController', function() {
|
||||
})
|
||||
.catch((reason) => {
|
||||
assert.ifError(reason)
|
||||
done()
|
||||
})
|
||||
})
|
||||
})
|
||||
@ -110,15 +113,17 @@ describe('KeyringController', function() {
|
||||
})
|
||||
|
||||
describe('#saveAccountLabel', function() {
|
||||
it ('sets the nickname', function() {
|
||||
it ('sets the nickname', function(done) {
|
||||
const account = addresses[0]
|
||||
var nick = 'Test nickname'
|
||||
keyringController.identities[ethUtil.addHexPrefix(account)] = {}
|
||||
const label = keyringController.saveAccountLabel(account, nick)
|
||||
assert.equal(label, nick)
|
||||
|
||||
const persisted = keyringController.configManager.nicknameForWallet(account)
|
||||
assert.equal(persisted, nick)
|
||||
keyringController.saveAccountLabel(account, nick, (err, label) => {
|
||||
assert.ifError(err)
|
||||
assert.equal(label, nick)
|
||||
const persisted = keyringController.configManager.nicknameForWallet(account)
|
||||
assert.equal(persisted, nick)
|
||||
done()
|
||||
})
|
||||
})
|
||||
|
||||
this.timeout(10000)
|
||||
@ -126,9 +131,7 @@ describe('KeyringController', function() {
|
||||
const account = addresses[0]
|
||||
var nick = 'Test nickname'
|
||||
keyringController.configManager.setNicknameForWallet(account, nick)
|
||||
console.log('calling to restore')
|
||||
keyringController.createNewVaultAndRestore(password, seedWords, (err, state) => {
|
||||
console.dir({err})
|
||||
assert.ifError(err)
|
||||
|
||||
const identity = keyringController.identities['0x' + account]
|
||||
@ -143,12 +146,15 @@ describe('KeyringController', function() {
|
||||
describe('#getAccounts', function() {
|
||||
it('returns the result of getAccounts for each keyring', function() {
|
||||
keyringController.keyrings = [
|
||||
{ getAccounts() { return [1,2,3] } },
|
||||
{ getAccounts() { return [4,5,6] } },
|
||||
{ getAccounts() { return Promise.resolve([1,2,3]) } },
|
||||
{ getAccounts() { return Promise.resolve([4,5,6]) } },
|
||||
]
|
||||
|
||||
const result = keyringController.getAccounts()
|
||||
assert.deepEqual(result, [1,2,3,4,5,6])
|
||||
keyringController.getAccounts()
|
||||
.then((result) => {
|
||||
assert.deepEqual(result, [1,2,3,4,5,6])
|
||||
done()
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
|
@ -16,15 +16,18 @@ describe('hd-keyring', function() {
|
||||
keyring = new HdKeyring()
|
||||
})
|
||||
|
||||
describe('constructor', function() {
|
||||
describe('constructor', function(done) {
|
||||
keyring = new HdKeyring({
|
||||
mnemonic: sampleMnemonic,
|
||||
numberOfAccounts: 2,
|
||||
})
|
||||
|
||||
const accounts = keyring.getAccounts()
|
||||
assert.equal(accounts[0], firstAcct)
|
||||
assert.equal(accounts[1], secondAcct)
|
||||
.then((accounts) => {
|
||||
assert.equal(accounts[0], firstAcct)
|
||||
assert.equal(accounts[1], secondAcct)
|
||||
done()
|
||||
})
|
||||
})
|
||||
|
||||
describe('Keyring.type', function() {
|
||||
@ -44,49 +47,62 @@ describe('hd-keyring', function() {
|
||||
|
||||
describe('#serialize empty wallets.', function() {
|
||||
it('serializes a new mnemonic', function() {
|
||||
const output = keyring.serialize()
|
||||
assert.equal(output.numberOfAccounts, 0)
|
||||
assert.equal(output.mnemonic, null)
|
||||
keyring.serialize()
|
||||
.then((output) => {
|
||||
assert.equal(output.numberOfAccounts, 0)
|
||||
assert.equal(output.mnemonic, null)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
describe('#deserialize a private key', function() {
|
||||
it('serializes what it deserializes', function() {
|
||||
it('serializes what it deserializes', function(done) {
|
||||
keyring.deserialize({
|
||||
mnemonic: sampleMnemonic,
|
||||
numberOfAccounts: 1
|
||||
})
|
||||
assert.equal(keyring.wallets.length, 1, 'restores two accounts')
|
||||
keyring.addAccounts(1)
|
||||
.then(() => {
|
||||
assert.equal(keyring.wallets.length, 1, 'restores two accounts')
|
||||
keyring.addAccounts(1)
|
||||
|
||||
const accounts = keyring.getAccounts()
|
||||
assert.equal(accounts[0], firstAcct)
|
||||
assert.equal(accounts[1], secondAcct)
|
||||
assert.equal(accounts.length, 2)
|
||||
const accounts = keyring.getAccounts()
|
||||
assert.equal(accounts[0], firstAcct)
|
||||
assert.equal(accounts[1], secondAcct)
|
||||
assert.equal(accounts.length, 2)
|
||||
|
||||
const serialized = keyring.serialize()
|
||||
assert.equal(serialized.mnemonic, sampleMnemonic)
|
||||
keyring.serialize()
|
||||
.then((serialized) => {
|
||||
assert.equal(serialized.mnemonic, sampleMnemonic)
|
||||
done()
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
describe('#addAccounts', function() {
|
||||
describe('with no arguments', function() {
|
||||
it('creates a single wallet', function() {
|
||||
it('creates a single wallet', function(done) {
|
||||
keyring.addAccounts()
|
||||
assert.equal(keyring.wallets.length, 1)
|
||||
.then(() => {
|
||||
assert.equal(keyring.wallets.length, 1)
|
||||
done()
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
describe('with a numeric argument', function() {
|
||||
it('creates that number of wallets', function() {
|
||||
it('creates that number of wallets', function(done) {
|
||||
keyring.addAccounts(3)
|
||||
assert.equal(keyring.wallets.length, 3)
|
||||
.then(() => {
|
||||
assert.equal(keyring.wallets.length, 3)
|
||||
done()
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
describe('#getAccounts', function() {
|
||||
it('calls getAddress on each wallet', function() {
|
||||
it('calls getAddress on each wallet', function(done) {
|
||||
|
||||
// Push a mock wallet
|
||||
const desiredOutput = 'foo'
|
||||
@ -101,8 +117,11 @@ describe('hd-keyring', function() {
|
||||
})
|
||||
|
||||
const output = keyring.getAccounts()
|
||||
assert.equal(output[0], desiredOutput)
|
||||
assert.equal(output.length, 1)
|
||||
.then((output) => {
|
||||
assert.equal(output[0], desiredOutput)
|
||||
assert.equal(output.length, 1)
|
||||
done()
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
|
@ -28,19 +28,23 @@ describe('simple-keyring', function() {
|
||||
})
|
||||
|
||||
describe('#serialize empty wallets.', function() {
|
||||
it('serializes an empty array', function() {
|
||||
const output = keyring.serialize()
|
||||
assert.deepEqual(output, [])
|
||||
it('serializes an empty array', function(done) {
|
||||
keyring.serialize()
|
||||
.then((output) => {
|
||||
assert.deepEqual(output, [])
|
||||
done()
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
describe('#deserialize a private key', function() {
|
||||
it('serializes what it deserializes', function() {
|
||||
keyring.deserialize([privKeyHex])
|
||||
assert.equal(keyring.wallets.length, 1, 'has one wallet')
|
||||
|
||||
const serialized = keyring.serialize()
|
||||
assert.equal(serialized[0], privKeyHex)
|
||||
.then(() => {
|
||||
assert.equal(keyring.wallets.length, 1, 'has one wallet')
|
||||
const serialized = keyring.serialize()
|
||||
assert.equal(serialized[0], privKeyHex)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
@ -48,20 +52,24 @@ describe('simple-keyring', function() {
|
||||
describe('with no arguments', function() {
|
||||
it('creates a single wallet', function() {
|
||||
keyring.addAccounts()
|
||||
assert.equal(keyring.wallets.length, 1)
|
||||
.then(() => {
|
||||
assert.equal(keyring.wallets.length, 1)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
describe('with a numeric argument', function() {
|
||||
it('creates that number of wallets', function() {
|
||||
keyring.addAccounts(3)
|
||||
assert.equal(keyring.wallets.length, 3)
|
||||
.then(() => {
|
||||
assert.equal(keyring.wallets.length, 3)
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
describe('#getAccounts', function() {
|
||||
it('calls getAddress on each wallet', function() {
|
||||
it('calls getAddress on each wallet', function(done) {
|
||||
|
||||
// Push a mock wallet
|
||||
const desiredOutput = 'foo'
|
||||
@ -75,9 +83,12 @@ describe('simple-keyring', function() {
|
||||
}
|
||||
})
|
||||
|
||||
const output = keyring.getAccounts()
|
||||
assert.equal(output[0], desiredOutput)
|
||||
assert.equal(output.length, 1)
|
||||
keyring.getAccounts()
|
||||
.then((output) => {
|
||||
assert.equal(output[0], desiredOutput)
|
||||
assert.equal(output.length, 1)
|
||||
done()
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
|
Loading…
Reference in New Issue
Block a user