mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-11-22 18:00:18 +01:00
Delete ConfigManager, replacing its usages with PreferencesController
This commit is contained in:
parent
1552fe1c3e
commit
d60991ec88
@ -36,6 +36,8 @@ class PreferencesController {
|
|||||||
currentLocale: opts.initLangCode,
|
currentLocale: opts.initLangCode,
|
||||||
identities: {},
|
identities: {},
|
||||||
lostIdentities: {},
|
lostIdentities: {},
|
||||||
|
seedWords: null,
|
||||||
|
forgottenPassword: false,
|
||||||
}, opts.initState)
|
}, opts.initState)
|
||||||
|
|
||||||
this.diagnostics = opts.diagnostics
|
this.diagnostics = opts.diagnostics
|
||||||
@ -46,6 +48,22 @@ class PreferencesController {
|
|||||||
}
|
}
|
||||||
// PUBLIC METHODS
|
// PUBLIC METHODS
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the {@code forgottenPassword} state property
|
||||||
|
* @param {boolean} forgottenPassword whether or not the user has forgotten their password
|
||||||
|
*/
|
||||||
|
setPasswordForgotten (forgottenPassword) {
|
||||||
|
this.store.updateState({ forgottenPassword })
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the {@code seedWords} seed words
|
||||||
|
* @param {string|null} seedWords the seed words
|
||||||
|
*/
|
||||||
|
setSeedWords (seedWords) {
|
||||||
|
this.store.updateState({ seedWords })
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Setter for the `useBlockie` property
|
* Setter for the `useBlockie` property
|
||||||
*
|
*
|
||||||
|
@ -1,254 +0,0 @@
|
|||||||
const ethUtil = require('ethereumjs-util')
|
|
||||||
const normalize = require('eth-sig-util').normalize
|
|
||||||
const {
|
|
||||||
MAINNET_RPC_URL,
|
|
||||||
ROPSTEN_RPC_URL,
|
|
||||||
KOVAN_RPC_URL,
|
|
||||||
RINKEBY_RPC_URL,
|
|
||||||
} = require('../controllers/network/enums')
|
|
||||||
|
|
||||||
/* The config-manager is a convenience object
|
|
||||||
* wrapping a pojo-migrator.
|
|
||||||
*
|
|
||||||
* It exists mostly to allow the creation of
|
|
||||||
* convenience methods to access and persist
|
|
||||||
* particular portions of the state.
|
|
||||||
*/
|
|
||||||
module.exports = ConfigManager
|
|
||||||
function ConfigManager (opts) {
|
|
||||||
// ConfigManager is observable and will emit updates
|
|
||||||
this._subs = []
|
|
||||||
this.store = opts.store
|
|
||||||
}
|
|
||||||
|
|
||||||
ConfigManager.prototype.setConfig = function (config) {
|
|
||||||
var data = this.getData()
|
|
||||||
data.config = config
|
|
||||||
this.setData(data)
|
|
||||||
this._emitUpdates(config)
|
|
||||||
}
|
|
||||||
|
|
||||||
ConfigManager.prototype.getConfig = function () {
|
|
||||||
var data = this.getData()
|
|
||||||
return data.config
|
|
||||||
}
|
|
||||||
|
|
||||||
ConfigManager.prototype.setData = function (data) {
|
|
||||||
this.store.putState(data)
|
|
||||||
}
|
|
||||||
|
|
||||||
ConfigManager.prototype.getData = function () {
|
|
||||||
return this.store.getState()
|
|
||||||
}
|
|
||||||
|
|
||||||
ConfigManager.prototype.setPasswordForgotten = function (passwordForgottenState) {
|
|
||||||
const data = this.getData()
|
|
||||||
data.forgottenPassword = passwordForgottenState
|
|
||||||
this.setData(data)
|
|
||||||
}
|
|
||||||
|
|
||||||
ConfigManager.prototype.getPasswordForgotten = function (passwordForgottenState) {
|
|
||||||
const data = this.getData()
|
|
||||||
return data.forgottenPassword
|
|
||||||
}
|
|
||||||
|
|
||||||
ConfigManager.prototype.setWallet = function (wallet) {
|
|
||||||
var data = this.getData()
|
|
||||||
data.wallet = wallet
|
|
||||||
this.setData(data)
|
|
||||||
}
|
|
||||||
|
|
||||||
ConfigManager.prototype.setVault = function (encryptedString) {
|
|
||||||
var data = this.getData()
|
|
||||||
data.vault = encryptedString
|
|
||||||
this.setData(data)
|
|
||||||
}
|
|
||||||
|
|
||||||
ConfigManager.prototype.getVault = function () {
|
|
||||||
var data = this.getData()
|
|
||||||
return data.vault
|
|
||||||
}
|
|
||||||
|
|
||||||
ConfigManager.prototype.getKeychains = function () {
|
|
||||||
return this.getData().keychains || []
|
|
||||||
}
|
|
||||||
|
|
||||||
ConfigManager.prototype.setKeychains = function (keychains) {
|
|
||||||
var data = this.getData()
|
|
||||||
data.keychains = keychains
|
|
||||||
this.setData(data)
|
|
||||||
}
|
|
||||||
|
|
||||||
ConfigManager.prototype.getSelectedAccount = function () {
|
|
||||||
var config = this.getConfig()
|
|
||||||
return config.selectedAccount
|
|
||||||
}
|
|
||||||
|
|
||||||
ConfigManager.prototype.setSelectedAccount = function (address) {
|
|
||||||
var config = this.getConfig()
|
|
||||||
config.selectedAccount = ethUtil.addHexPrefix(address)
|
|
||||||
this.setConfig(config)
|
|
||||||
}
|
|
||||||
|
|
||||||
ConfigManager.prototype.getWallet = function () {
|
|
||||||
return this.getData().wallet
|
|
||||||
}
|
|
||||||
|
|
||||||
// Takes a boolean
|
|
||||||
ConfigManager.prototype.setShowSeedWords = function (should) {
|
|
||||||
var data = this.getData()
|
|
||||||
data.showSeedWords = should
|
|
||||||
this.setData(data)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
ConfigManager.prototype.getShouldShowSeedWords = function () {
|
|
||||||
var data = this.getData()
|
|
||||||
return data.showSeedWords
|
|
||||||
}
|
|
||||||
|
|
||||||
ConfigManager.prototype.setSeedWords = function (words) {
|
|
||||||
var data = this.getData()
|
|
||||||
data.seedWords = words
|
|
||||||
this.setData(data)
|
|
||||||
}
|
|
||||||
|
|
||||||
ConfigManager.prototype.getSeedWords = function () {
|
|
||||||
var data = this.getData()
|
|
||||||
return data.seedWords
|
|
||||||
}
|
|
||||||
ConfigManager.prototype.setRpcTarget = function (rpcUrl) {
|
|
||||||
var config = this.getConfig()
|
|
||||||
config.provider = {
|
|
||||||
type: 'rpc',
|
|
||||||
rpcTarget: rpcUrl,
|
|
||||||
}
|
|
||||||
this.setConfig(config)
|
|
||||||
}
|
|
||||||
|
|
||||||
ConfigManager.prototype.setProviderType = function (type) {
|
|
||||||
var config = this.getConfig()
|
|
||||||
config.provider = {
|
|
||||||
type: type,
|
|
||||||
}
|
|
||||||
this.setConfig(config)
|
|
||||||
}
|
|
||||||
|
|
||||||
ConfigManager.prototype.useEtherscanProvider = function () {
|
|
||||||
var config = this.getConfig()
|
|
||||||
config.provider = {
|
|
||||||
type: 'etherscan',
|
|
||||||
}
|
|
||||||
this.setConfig(config)
|
|
||||||
}
|
|
||||||
|
|
||||||
ConfigManager.prototype.getProvider = function () {
|
|
||||||
var config = this.getConfig()
|
|
||||||
return config.provider
|
|
||||||
}
|
|
||||||
|
|
||||||
ConfigManager.prototype.getCurrentRpcAddress = function () {
|
|
||||||
var provider = this.getProvider()
|
|
||||||
if (!provider) return null
|
|
||||||
switch (provider.type) {
|
|
||||||
|
|
||||||
case 'mainnet':
|
|
||||||
return MAINNET_RPC_URL
|
|
||||||
|
|
||||||
case 'ropsten':
|
|
||||||
return ROPSTEN_RPC_URL
|
|
||||||
|
|
||||||
case 'kovan':
|
|
||||||
return KOVAN_RPC_URL
|
|
||||||
|
|
||||||
case 'rinkeby':
|
|
||||||
return RINKEBY_RPC_URL
|
|
||||||
|
|
||||||
default:
|
|
||||||
return provider && provider.rpcTarget ? provider.rpcTarget : RINKEBY_RPC_URL
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Tx
|
|
||||||
//
|
|
||||||
|
|
||||||
ConfigManager.prototype.getTxList = function () {
|
|
||||||
var data = this.getData()
|
|
||||||
if (data.transactions !== undefined) {
|
|
||||||
return data.transactions
|
|
||||||
} else {
|
|
||||||
return []
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ConfigManager.prototype.setTxList = function (txList) {
|
|
||||||
var data = this.getData()
|
|
||||||
data.transactions = txList
|
|
||||||
this.setData(data)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// wallet nickname methods
|
|
||||||
|
|
||||||
ConfigManager.prototype.getWalletNicknames = function () {
|
|
||||||
var data = this.getData()
|
|
||||||
const nicknames = ('walletNicknames' in data) ? data.walletNicknames : {}
|
|
||||||
return nicknames
|
|
||||||
}
|
|
||||||
|
|
||||||
ConfigManager.prototype.nicknameForWallet = function (account) {
|
|
||||||
const address = normalize(account)
|
|
||||||
const nicknames = this.getWalletNicknames()
|
|
||||||
return nicknames[address]
|
|
||||||
}
|
|
||||||
|
|
||||||
ConfigManager.prototype.setNicknameForWallet = function (account, nickname) {
|
|
||||||
const address = normalize(account)
|
|
||||||
const nicknames = this.getWalletNicknames()
|
|
||||||
nicknames[address] = nickname
|
|
||||||
var data = this.getData()
|
|
||||||
data.walletNicknames = nicknames
|
|
||||||
this.setData(data)
|
|
||||||
}
|
|
||||||
|
|
||||||
// observable
|
|
||||||
|
|
||||||
ConfigManager.prototype.getSalt = function () {
|
|
||||||
var data = this.getData()
|
|
||||||
return data.salt
|
|
||||||
}
|
|
||||||
|
|
||||||
ConfigManager.prototype.setSalt = function (salt) {
|
|
||||||
var data = this.getData()
|
|
||||||
data.salt = salt
|
|
||||||
this.setData(data)
|
|
||||||
}
|
|
||||||
|
|
||||||
ConfigManager.prototype.subscribe = function (fn) {
|
|
||||||
this._subs.push(fn)
|
|
||||||
var unsubscribe = this.unsubscribe.bind(this, fn)
|
|
||||||
return unsubscribe
|
|
||||||
}
|
|
||||||
|
|
||||||
ConfigManager.prototype.unsubscribe = function (fn) {
|
|
||||||
var index = this._subs.indexOf(fn)
|
|
||||||
if (index !== -1) this._subs.splice(index, 1)
|
|
||||||
}
|
|
||||||
|
|
||||||
ConfigManager.prototype._emitUpdates = function (state) {
|
|
||||||
this._subs.forEach(function (handler) {
|
|
||||||
handler(state)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
ConfigManager.prototype.setLostAccounts = function (lostAccounts) {
|
|
||||||
var data = this.getData()
|
|
||||||
data.lostAccounts = lostAccounts
|
|
||||||
this.setData(data)
|
|
||||||
}
|
|
||||||
|
|
||||||
ConfigManager.prototype.getLostAccounts = function () {
|
|
||||||
var data = this.getData()
|
|
||||||
return data.lostAccounts || []
|
|
||||||
}
|
|
@ -36,7 +36,6 @@ const TransactionController = require('./controllers/transactions')
|
|||||||
const BalancesController = require('./controllers/computed-balances')
|
const BalancesController = require('./controllers/computed-balances')
|
||||||
const TokenRatesController = require('./controllers/token-rates')
|
const TokenRatesController = require('./controllers/token-rates')
|
||||||
const DetectTokensController = require('./controllers/detect-tokens')
|
const DetectTokensController = require('./controllers/detect-tokens')
|
||||||
const ConfigManager = require('./lib/config-manager')
|
|
||||||
const nodeify = require('./lib/nodeify')
|
const nodeify = require('./lib/nodeify')
|
||||||
const accountImporter = require('./account-import-strategies')
|
const accountImporter = require('./account-import-strategies')
|
||||||
const getBuyEthUrl = require('./lib/buy-eth-url')
|
const getBuyEthUrl = require('./lib/buy-eth-url')
|
||||||
@ -83,11 +82,6 @@ module.exports = class MetamaskController extends EventEmitter {
|
|||||||
// network store
|
// network store
|
||||||
this.networkController = new NetworkController(initState.NetworkController)
|
this.networkController = new NetworkController(initState.NetworkController)
|
||||||
|
|
||||||
// config manager
|
|
||||||
this.configManager = new ConfigManager({
|
|
||||||
store: this.store,
|
|
||||||
})
|
|
||||||
|
|
||||||
// preferences controller
|
// preferences controller
|
||||||
this.preferencesController = new PreferencesController({
|
this.preferencesController = new PreferencesController({
|
||||||
initState: initState.PreferencesController,
|
initState: initState.PreferencesController,
|
||||||
@ -314,18 +308,15 @@ module.exports = class MetamaskController extends EventEmitter {
|
|||||||
* @returns {Object} status
|
* @returns {Object} status
|
||||||
*/
|
*/
|
||||||
getState () {
|
getState () {
|
||||||
const wallet = this.configManager.getWallet()
|
|
||||||
const vault = this.keyringController.store.getState().vault
|
const vault = this.keyringController.store.getState().vault
|
||||||
const isInitialized = (!!wallet || !!vault)
|
const isInitialized = !!vault
|
||||||
|
|
||||||
return {
|
return {
|
||||||
...{ isInitialized },
|
...{ isInitialized },
|
||||||
...this.memStore.getFlatState(),
|
...this.memStore.getFlatState(),
|
||||||
...this.configManager.getConfig(),
|
|
||||||
...{
|
...{
|
||||||
lostAccounts: this.configManager.getLostAccounts(),
|
// TODO: Remove usages of lost accounts
|
||||||
seedWords: this.configManager.getSeedWords(),
|
lostAccounts: [],
|
||||||
forgottenPassword: this.configManager.getPasswordForgotten(),
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -727,7 +718,7 @@ module.exports = class MetamaskController extends EventEmitter {
|
|||||||
|
|
||||||
this.verifySeedPhrase()
|
this.verifySeedPhrase()
|
||||||
.then((seedWords) => {
|
.then((seedWords) => {
|
||||||
this.configManager.setSeedWords(seedWords)
|
this.preferencesController.setSeedWords(seedWords)
|
||||||
return cb(null, seedWords)
|
return cb(null, seedWords)
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
@ -776,7 +767,7 @@ module.exports = class MetamaskController extends EventEmitter {
|
|||||||
* @param {function} cb Callback function called with the current address.
|
* @param {function} cb Callback function called with the current address.
|
||||||
*/
|
*/
|
||||||
clearSeedWordCache (cb) {
|
clearSeedWordCache (cb) {
|
||||||
this.configManager.setSeedWords(null)
|
this.preferencesController.setSeedWords(null)
|
||||||
cb(null, this.preferencesController.getSelectedAddress())
|
cb(null, this.preferencesController.getSelectedAddress())
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1037,35 +1028,16 @@ module.exports = class MetamaskController extends EventEmitter {
|
|||||||
/**
|
/**
|
||||||
* A legacy method used to record user confirmation that they understand
|
* A legacy method used to record user confirmation that they understand
|
||||||
* that some of their accounts have been recovered but should be backed up.
|
* that some of their accounts have been recovered but should be backed up.
|
||||||
|
* This function no longer does anything and will be removed.
|
||||||
*
|
*
|
||||||
* @deprecated
|
* @deprecated
|
||||||
* @param {Function} cb - A callback function called with a full state update.
|
* @param {Function} cb - A callback function called with a full state update.
|
||||||
*/
|
*/
|
||||||
markAccountsFound (cb) {
|
markAccountsFound (cb) {
|
||||||
this.configManager.setLostAccounts([])
|
// TODO Remove me
|
||||||
this.sendUpdate()
|
|
||||||
cb(null, this.getState())
|
cb(null, this.getState())
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* A legacy method (probably dead code) that was used when we swapped out our
|
|
||||||
* key management library that we depended on.
|
|
||||||
*
|
|
||||||
* Described in:
|
|
||||||
* https://medium.com/metamask/metamask-3-migration-guide-914b79533cdd
|
|
||||||
*
|
|
||||||
* @deprecated
|
|
||||||
* @param {} migratorOutput
|
|
||||||
*/
|
|
||||||
restoreOldLostAccounts (migratorOutput) {
|
|
||||||
const { lostAccounts } = migratorOutput
|
|
||||||
if (lostAccounts) {
|
|
||||||
this.configManager.setLostAccounts(lostAccounts.map(acct => acct.address))
|
|
||||||
return this.importLostAccounts(migratorOutput)
|
|
||||||
}
|
|
||||||
return Promise.resolve(migratorOutput)
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An account object
|
* An account object
|
||||||
* @typedef Account
|
* @typedef Account
|
||||||
@ -1144,7 +1116,7 @@ module.exports = class MetamaskController extends EventEmitter {
|
|||||||
* @param {Function} cb - A callback function called when complete.
|
* @param {Function} cb - A callback function called when complete.
|
||||||
*/
|
*/
|
||||||
markPasswordForgotten (cb) {
|
markPasswordForgotten (cb) {
|
||||||
this.configManager.setPasswordForgotten(true)
|
this.preferencesController.setPasswordForgotten(true)
|
||||||
this.sendUpdate()
|
this.sendUpdate()
|
||||||
cb()
|
cb()
|
||||||
}
|
}
|
||||||
@ -1154,7 +1126,7 @@ module.exports = class MetamaskController extends EventEmitter {
|
|||||||
* @param {Function} cb - A callback function called when complete.
|
* @param {Function} cb - A callback function called when complete.
|
||||||
*/
|
*/
|
||||||
unMarkPasswordForgotten (cb) {
|
unMarkPasswordForgotten (cb) {
|
||||||
this.configManager.setPasswordForgotten(false)
|
this.preferencesController.setPasswordForgotten(false)
|
||||||
this.sendUpdate()
|
this.sendUpdate()
|
||||||
cb()
|
cb()
|
||||||
}
|
}
|
||||||
|
@ -1,50 +0,0 @@
|
|||||||
const version = 5
|
|
||||||
|
|
||||||
/*
|
|
||||||
|
|
||||||
This is an incomplete migration bc it requires post-decrypted data
|
|
||||||
which we dont have access to at the time of this writing.
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
const ObservableStore = require('obs-store')
|
|
||||||
const ConfigManager = require('../../app/scripts/lib/config-manager')
|
|
||||||
const IdentityStoreMigrator = require('../../app/scripts/lib/idStore-migrator')
|
|
||||||
const KeyringController = require('eth-keyring-controller')
|
|
||||||
|
|
||||||
const password = 'obviously not correct'
|
|
||||||
|
|
||||||
module.exports = {
|
|
||||||
version,
|
|
||||||
|
|
||||||
migrate: function (versionedData) {
|
|
||||||
versionedData.meta.version = version
|
|
||||||
|
|
||||||
const store = new ObservableStore(versionedData.data)
|
|
||||||
const configManager = new ConfigManager({ store })
|
|
||||||
const idStoreMigrator = new IdentityStoreMigrator({ configManager })
|
|
||||||
const keyringController = new KeyringController({
|
|
||||||
configManager: configManager,
|
|
||||||
})
|
|
||||||
|
|
||||||
// attempt to migrate to multiVault
|
|
||||||
return idStoreMigrator.migratedVaultForPassword(password)
|
|
||||||
.then((result) => {
|
|
||||||
// skip if nothing to migrate
|
|
||||||
if (!result) return Promise.resolve(versionedData)
|
|
||||||
delete versionedData.data.wallet
|
|
||||||
// create new keyrings
|
|
||||||
const privKeys = result.lostAccounts.map(acct => acct.privateKey)
|
|
||||||
return Promise.all([
|
|
||||||
keyringController.restoreKeyring(result.serialized),
|
|
||||||
keyringController.restoreKeyring({ type: 'Simple Key Pair', data: privKeys }),
|
|
||||||
]).then(() => {
|
|
||||||
return keyringController.persistAllKeyrings(password)
|
|
||||||
}).then(() => {
|
|
||||||
// copy result on to state object
|
|
||||||
versionedData.data = store.get()
|
|
||||||
return Promise.resolve(versionedData)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
},
|
|
||||||
}
|
|
@ -5,7 +5,6 @@ To add another network to our dropdown menu, make sure the following files are a
|
|||||||
```
|
```
|
||||||
app/scripts/config.js
|
app/scripts/config.js
|
||||||
app/scripts/lib/buy-eth-url.js
|
app/scripts/lib/buy-eth-url.js
|
||||||
app/scripts/lib/config-manager.js
|
|
||||||
ui/app/app.js
|
ui/app/app.js
|
||||||
ui/app/components/buy-button-subview.js
|
ui/app/components/buy-button-subview.js
|
||||||
ui/app/components/drop-menu-item.js
|
ui/app/components/drop-menu-item.js
|
||||||
|
@ -1,9 +0,0 @@
|
|||||||
const ObservableStore = require('obs-store')
|
|
||||||
const clone = require('clone')
|
|
||||||
const ConfigManager = require('../../app/scripts/lib/config-manager')
|
|
||||||
const firstTimeState = require('../../app/scripts/first-time-state')
|
|
||||||
|
|
||||||
module.exports = function () {
|
|
||||||
const store = new ObservableStore(clone(firstTimeState))
|
|
||||||
return new ConfigManager({ store })
|
|
||||||
}
|
|
@ -584,22 +584,18 @@ describe('MetaMaskController', function () {
|
|||||||
})
|
})
|
||||||
|
|
||||||
describe('#clearSeedWordCache', function () {
|
describe('#clearSeedWordCache', function () {
|
||||||
|
it('should set seed words to null', function (done) {
|
||||||
|
sandbox.stub(metamaskController.preferencesController, 'setSeedWords')
|
||||||
|
metamaskController.clearSeedWordCache((err) => {
|
||||||
|
if (err) {
|
||||||
|
done(err)
|
||||||
|
}
|
||||||
|
|
||||||
it('should have set seed words', function () {
|
assert.ok(metamaskController.preferencesController.setSeedWords.calledOnce)
|
||||||
metamaskController.configManager.setSeedWords('test words')
|
assert.deepEqual(metamaskController.preferencesController.setSeedWords.args, [[null]])
|
||||||
const getConfigSeed = metamaskController.configManager.getSeedWords()
|
done()
|
||||||
assert.equal(getConfigSeed, 'test words')
|
|
||||||
})
|
})
|
||||||
|
|
||||||
it('should clear config seed phrase', function () {
|
|
||||||
metamaskController.configManager.setSeedWords('test words')
|
|
||||||
metamaskController.clearSeedWordCache((err, result) => {
|
|
||||||
if (err) console.log(err)
|
|
||||||
})
|
})
|
||||||
const getConfigSeed = metamaskController.configManager.getSeedWords()
|
|
||||||
assert.equal(getConfigSeed, null)
|
|
||||||
})
|
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
describe('#setCurrentLocale', function () {
|
describe('#setCurrentLocale', function () {
|
||||||
@ -793,24 +789,24 @@ describe('MetaMaskController', function () {
|
|||||||
describe('#markAccountsFound', function () {
|
describe('#markAccountsFound', function () {
|
||||||
it('adds lost accounts to config manager data', function () {
|
it('adds lost accounts to config manager data', function () {
|
||||||
metamaskController.markAccountsFound(noop)
|
metamaskController.markAccountsFound(noop)
|
||||||
const configManagerData = metamaskController.configManager.getData()
|
const state = metamaskController.getState()
|
||||||
assert.deepEqual(configManagerData.lostAccounts, [])
|
assert.deepEqual(state.lostAccounts, [])
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
describe('#markPasswordForgotten', function () {
|
describe('#markPasswordForgotten', function () {
|
||||||
it('adds and sets forgottenPassword to config data to true', function () {
|
it('adds and sets forgottenPassword to config data to true', function () {
|
||||||
metamaskController.markPasswordForgotten(noop)
|
metamaskController.markPasswordForgotten(noop)
|
||||||
const configManagerData = metamaskController.configManager.getData()
|
const state = metamaskController.getState()
|
||||||
assert.equal(configManagerData.forgottenPassword, true)
|
assert.equal(state.forgottenPassword, true)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
describe('#unMarkPasswordForgotten', function () {
|
describe('#unMarkPasswordForgotten', function () {
|
||||||
it('adds and sets forgottenPassword to config data to false', function () {
|
it('adds and sets forgottenPassword to config data to false', function () {
|
||||||
metamaskController.unMarkPasswordForgotten(noop)
|
metamaskController.unMarkPasswordForgotten(noop)
|
||||||
const configManagerData = metamaskController.configManager.getData()
|
const state = metamaskController.getState()
|
||||||
assert.equal(configManagerData.forgottenPassword, false)
|
assert.equal(state.forgottenPassword, false)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -1,16 +1,11 @@
|
|||||||
const assert = require('assert')
|
const assert = require('assert')
|
||||||
const configManagerGen = require('../../../lib/mock-config-manager')
|
|
||||||
const NoticeController = require('../../../../app/scripts/notice-controller')
|
const NoticeController = require('../../../../app/scripts/notice-controller')
|
||||||
|
|
||||||
describe('notice-controller', function () {
|
describe('notice-controller', function () {
|
||||||
var noticeController
|
var noticeController
|
||||||
|
|
||||||
beforeEach(function () {
|
beforeEach(function () {
|
||||||
// simple localStorage polyfill
|
noticeController = new NoticeController({})
|
||||||
const configManager = configManagerGen()
|
|
||||||
noticeController = new NoticeController({
|
|
||||||
configManager: configManager,
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
|
|
||||||
describe('notices', function () {
|
describe('notices', function () {
|
||||||
|
@ -449,5 +449,35 @@ describe('preferences controller', function () {
|
|||||||
assert.ok(assetImages[address], `set image correctly`)
|
assert.ok(assetImages[address], `set image correctly`)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
describe('setPasswordForgotten', function () {
|
||||||
|
it('should default to false', function () {
|
||||||
|
const state = preferencesController.store.getState()
|
||||||
|
assert.equal(state.forgottenPassword, false)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('should set the forgottenPassword property in state', function () {
|
||||||
|
assert.equal(preferencesController.store.getState().forgottenPassword, false)
|
||||||
|
|
||||||
|
preferencesController.setPasswordForgotten(true)
|
||||||
|
|
||||||
|
assert.equal(preferencesController.store.getState().forgottenPassword, true)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
describe('setSeedWords', function () {
|
||||||
|
it('should default to null', function () {
|
||||||
|
const state = preferencesController.store.getState()
|
||||||
|
assert.equal(state.seedWords, null)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('should set the seedWords property in state', function () {
|
||||||
|
assert.equal(preferencesController.store.getState().seedWords, null)
|
||||||
|
|
||||||
|
preferencesController.setSeedWords('foo bar baz')
|
||||||
|
|
||||||
|
assert.equal(preferencesController.store.getState().seedWords, 'foo bar baz')
|
||||||
|
})
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -1,112 +0,0 @@
|
|||||||
const assert = require('assert')
|
|
||||||
const configManagerGen = require('../lib/mock-config-manager')
|
|
||||||
|
|
||||||
describe('config-manager', function () {
|
|
||||||
var configManager
|
|
||||||
|
|
||||||
beforeEach(function () {
|
|
||||||
configManager = configManagerGen()
|
|
||||||
})
|
|
||||||
|
|
||||||
describe('#setConfig', function () {
|
|
||||||
it('should set the config key', function () {
|
|
||||||
var testConfig = {
|
|
||||||
provider: {
|
|
||||||
type: 'rpc',
|
|
||||||
rpcTarget: 'foobar',
|
|
||||||
},
|
|
||||||
}
|
|
||||||
configManager.setConfig(testConfig)
|
|
||||||
var result = configManager.getData()
|
|
||||||
|
|
||||||
assert.equal(result.config.provider.type, testConfig.provider.type)
|
|
||||||
assert.equal(result.config.provider.rpcTarget, testConfig.provider.rpcTarget)
|
|
||||||
})
|
|
||||||
|
|
||||||
it('setting wallet should not overwrite config', function () {
|
|
||||||
var testConfig = {
|
|
||||||
provider: {
|
|
||||||
type: 'rpc',
|
|
||||||
rpcTarget: 'foobar',
|
|
||||||
},
|
|
||||||
}
|
|
||||||
configManager.setConfig(testConfig)
|
|
||||||
|
|
||||||
var testWallet = {
|
|
||||||
name: 'this is my fake wallet',
|
|
||||||
}
|
|
||||||
configManager.setWallet(testWallet)
|
|
||||||
|
|
||||||
var result = configManager.getData()
|
|
||||||
assert.equal(result.wallet.name, testWallet.name, 'wallet name is set')
|
|
||||||
assert.equal(result.config.provider.rpcTarget, testConfig.provider.rpcTarget)
|
|
||||||
|
|
||||||
testConfig.provider.type = 'something else!'
|
|
||||||
configManager.setConfig(testConfig)
|
|
||||||
|
|
||||||
result = configManager.getData()
|
|
||||||
assert.equal(result.wallet.name, testWallet.name, 'wallet name is set')
|
|
||||||
assert.equal(result.config.provider.rpcTarget, testConfig.provider.rpcTarget)
|
|
||||||
assert.equal(result.config.provider.type, testConfig.provider.type)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
describe('wallet nicknames', function () {
|
|
||||||
it('should return null when no nicknames are saved', function () {
|
|
||||||
var nick = configManager.nicknameForWallet('0x0')
|
|
||||||
assert.equal(nick, null, 'no nickname returned')
|
|
||||||
})
|
|
||||||
|
|
||||||
it('should persist nicknames', function () {
|
|
||||||
var account = '0x0'
|
|
||||||
var nick1 = 'foo'
|
|
||||||
var nick2 = 'bar'
|
|
||||||
configManager.setNicknameForWallet(account, nick1)
|
|
||||||
|
|
||||||
var result1 = configManager.nicknameForWallet(account)
|
|
||||||
assert.equal(result1, nick1)
|
|
||||||
|
|
||||||
configManager.setNicknameForWallet(account, nick2)
|
|
||||||
var result2 = configManager.nicknameForWallet(account)
|
|
||||||
assert.equal(result2, nick2)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
describe('rpc manipulations', function () {
|
|
||||||
it('changing rpc should return a different rpc', function () {
|
|
||||||
var firstRpc = 'first'
|
|
||||||
var secondRpc = 'second'
|
|
||||||
|
|
||||||
configManager.setRpcTarget(firstRpc)
|
|
||||||
var firstResult = configManager.getCurrentRpcAddress()
|
|
||||||
assert.equal(firstResult, firstRpc)
|
|
||||||
|
|
||||||
configManager.setRpcTarget(secondRpc)
|
|
||||||
var secondResult = configManager.getCurrentRpcAddress()
|
|
||||||
assert.equal(secondResult, secondRpc)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
describe('transactions', function () {
|
|
||||||
beforeEach(function () {
|
|
||||||
configManager.setTxList([])
|
|
||||||
})
|
|
||||||
|
|
||||||
describe('#getTxList', function () {
|
|
||||||
it('when new should return empty array', function () {
|
|
||||||
var result = configManager.getTxList()
|
|
||||||
assert.ok(Array.isArray(result))
|
|
||||||
assert.equal(result.length, 0)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
describe('#setTxList', function () {
|
|
||||||
it('saves the submitted data to the tx list', function () {
|
|
||||||
var target = [{ foo: 'bar' }]
|
|
||||||
configManager.setTxList(target)
|
|
||||||
var result = configManager.getTxList()
|
|
||||||
assert.equal(result[0].foo, 'bar')
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
Loading…
Reference in New Issue
Block a user