1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-10-23 03:36:18 +02:00
metamask-extension/test/unit/idStore-test.js

134 lines
3.9 KiB
JavaScript
Raw Normal View History

var assert = require('assert')
var IdentityStore = require('../../app/scripts/lib/idStore')
2016-06-25 01:13:27 +02:00
var configManagerGen = require('../lib/mock-config-manager')
const ethUtil = require('ethereumjs-util')
2016-09-10 21:35:52 +02:00
const async = require('async')
2016-03-25 01:51:46 +01:00
describe('IdentityStore', function() {
describe('#createNewVault', function () {
let idStore
let password = 'password123'
let entropy = 'entripppppyy duuude'
let seedWords
let accounts = []
let originalKeystore
before(function(done) {
window.localStorage = {} // Hacking localStorage support into JSDom
idStore = new IdentityStore({
2016-06-25 01:13:27 +02:00
configManager: configManagerGen(),
2016-04-28 03:14:59 +02:00
ethStore: {
addAccount(acct) { accounts.push(ethUtil.addHexPrefix(acct)) },
2016-04-28 03:14:59 +02:00
},
})
idStore.createNewVault(password, entropy, (err, seeds) => {
assert.ifError(err, 'createNewVault threw error')
seedWords = seeds
originalKeystore = idStore._idmgmt.keyStore
done()
})
})
describe('#recoverFromSeed', function() {
2016-03-25 23:38:20 +01:00
let newAccounts = []
before(function() {
window.localStorage = {} // Hacking localStorage support into JSDom
idStore = new IdentityStore({
2016-06-25 01:13:27 +02:00
configManager: configManagerGen(),
2016-04-28 03:14:59 +02:00
ethStore: {
addAccount(acct) { newAccounts.push(ethUtil.addHexPrefix(acct)) },
2016-04-28 03:14:59 +02:00
},
})
})
it('should return the expected keystore', function (done) {
idStore.recoverFromSeed(password, seedWords, (err) => {
assert.ifError(err)
let newKeystore = idStore._idmgmt.keyStore
2016-03-25 23:38:20 +01:00
assert.equal(newAccounts[0], accounts[0])
done()
})
})
})
})
describe('#recoverFromSeed BIP44 compliance', function() {
2016-09-10 21:15:05 +02:00
const salt = 'lightwalletSalt'
let password = 'secret!'
let accounts = []
let idStore
2016-09-10 21:35:52 +02:00
var assertions = [
{
seed: 'picnic injury awful upper eagle junk alert toss flower renew silly vague',
account: '0x5d8de92c205279c10e5669f797b853ccef4f739a',
},
{
seed: 'radar blur cabbage chef fix engine embark joy scheme fiction master release',
account: '0xe15D894BeCB0354c501AE69429B05143679F39e0',
2016-09-10 21:35:52 +02:00
},
{
seed: 'phone coyote caught pattern found table wedding list tumble broccoli chief swing',
account: '0xb0e868f24bc7fec2bce2efc2b1c344d7569cd9d2',
},
{
seed: 'recycle tag bird palace blue village anxiety census cook soldier example music',
account: '0xab34a45920afe4af212b96ec51232aaa6a33f663',
},
{
seed: 'half glimpse tape cute harvest sweet bike voyage actual floor poet lazy',
account: '0x28e9044597b625ac4beda7250011670223de43b2',
2016-09-10 21:38:04 +02:00
},
{
seed: 'flavor tiger carpet motor angry hungry document inquiry large critic usage liar',
account: '0xb571be96558940c4e9292e1999461aa7499fb6cd',
},
{
seed: 'this is a twelve word phrase seven eight nine ten eleven twelve',
account: '0x814e8ec0c3647e140b8e09228fc374b2a867fe48',
},
2016-09-10 21:35:52 +02:00
]
before(function() {
window.localStorage = {} // Hacking localStorage support into JSDom
idStore = new IdentityStore({
2016-06-25 01:13:27 +02:00
configManager: configManagerGen(),
2016-04-28 03:14:59 +02:00
ethStore: {
addAccount(acct) { accounts.push(ethUtil.addHexPrefix(acct)) },
},
})
})
beforeEach(function() {
accounts = []
})
2016-09-10 21:35:52 +02:00
it('should enforce seed compliance with TestRPC', function (done) {
const tests = assertions.map((assertion) => {
return function (cb) {
idStore.recoverFromSeed(password, assertion.seed, (err) => {
assert.ifError(err)
assert.equal(accounts[0], assertion.account)
cb()
})
}
})
2016-09-10 21:35:52 +02:00
async.series(tests, function(err, results) {
2016-09-10 21:15:05 +02:00
assert.ifError(err)
done()
})
})
})
})