aboutsummaryrefslogblamecommitdiffstats
path: root/test/unit/idStore-test.js
blob: 1028e35ea640658f624f8dc1f4d4b84517e24016 (plain) (tree)
1
2
3
4
5
6
7
                              
                                                            
                                                            
                                          

                                      
 











                                                                         
                                          
                   
                                                                         
          


                                                                 
                                                         






                                                   
                          


                                                                           

                                     
                                            
                     
                                                                              
            


          
                                                                 




                                                               
                                                   
                



          

                                                            
                                 
 







                                                                         
                                          
                   
                                                                         



          



                           
                                                                    

                                                                                                 



                                                             
                                               
              

        

                                                                     


                                                                                                      

                                                              



                                             
 


                                                                                                          
 


                                                             


              
    
  
var assert = require('assert')
var IdentityStore = require('../../app/scripts/lib/idStore')
var configManagerGen = require('../lib/mock-config-manager')
const ethUtil = require('ethereumjs-util')

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({
        configManager: configManagerGen(),
        ethStore: {
          addAccount(acct) { accounts.push(ethUtil.addHexPrefix(acct)) },
        },
      })

      idStore.createNewVault(password, entropy, (err, seeds) => {
        assert.ifError(err, 'createNewVault threw error')
        seedWords = seeds
        originalKeystore = idStore._idmgmt.keyStore
        done()
      })
    })

    describe('#recoverFromSeed', function() {
      let newAccounts = []

      before(function() {
        window.localStorage = {} // Hacking localStorage support into JSDom

        idStore = new IdentityStore({
          configManager: configManagerGen(),
          ethStore: {
            addAccount(acct) { newAccounts.push(ethUtil.addHexPrefix(acct)) },
          },
        })
      })

      it('should return the expected keystore', function (done) {

        idStore.recoverFromSeed(password, seedWords, (err) => {
          assert.ifError(err)

          let newKeystore = idStore._idmgmt.keyStore
          assert.equal(newAccounts[0], accounts[0])
          done()
        })
      })
    })
  })

  describe('#recoverFromSeed BIP44 compliance', function() {
   const salt = 'lightwalletSalt'

    let password = 'secret!'
    let accounts = []
    let idStore

    before(function() {
      window.localStorage = {} // Hacking localStorage support into JSDom

      idStore = new IdentityStore({
        configManager: configManagerGen(),
        ethStore: {
          addAccount(acct) { accounts.push(ethUtil.addHexPrefix(acct)) },
        },
      })
    })

    beforeEach(function() {
      accounts = []
    })

    it('should return the expected first account', function (done) {
      let seedWords =  'picnic injury awful upper eagle junk alert toss flower renew silly vague'
      let firstAccount = '0x5d8de92c205279c10e5669f797b853ccef4f739a'

      idStore.recoverFromSeed(password, seedWords, (err) => {
        assert.ifError(err)

        assert.equal(accounts[0], firstAccount)
        done()
      })
    })

    it('should return the expected second account', function (done) {
      const secondSeed = 'radar blur cabbage chef fix engine embark joy scheme fiction master release'
      const secondAcct = '0xac39b311dceb2a4b2f5d8461c1cdaf756f4f7ae9'

      idStore.recoverFromSeed(password, secondSeed, (err) => {
        assert.ifError(err)
        assert.equal(accounts[0], secondAcct)
        done()
      })
    })

    it('should return the expected third account', function (done) {
      const thirdSeed = 'phone coyote caught pattern found table wedding list tumble broccoli chief swing'
      const thirdAcct = '0xb0e868f24bc7fec2bce2efc2b1c344d7569cd9d2'

      idStore.recoverFromSeed(password, thirdSeed, (err) => {
        assert.ifError(err)
        assert.equal(accounts[0], thirdAcct)
        done()
      })
    })
  })
})