|
|
@ -1,6 +1,7 @@ |
|
|
|
const assert = require('assert') |
|
|
|
const assert = require('assert') |
|
|
|
const ObservableStore = require('obs-store') |
|
|
|
const ObservableStore = require('obs-store') |
|
|
|
const PreferencesController = require('../../../../app/scripts/controllers/preferences') |
|
|
|
const PreferencesController = require('../../../../app/scripts/controllers/preferences') |
|
|
|
|
|
|
|
const sinon = require('sinon') |
|
|
|
|
|
|
|
|
|
|
|
describe('preferences controller', function () { |
|
|
|
describe('preferences controller', function () { |
|
|
|
let preferencesController |
|
|
|
let preferencesController |
|
|
@ -339,5 +340,114 @@ describe('preferences controller', function () { |
|
|
|
assert.deepEqual(tokensSecond, initialTokensSecond, 'tokens equal for same network') |
|
|
|
assert.deepEqual(tokensSecond, initialTokensSecond, 'tokens equal for same network') |
|
|
|
}) |
|
|
|
}) |
|
|
|
}) |
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
describe('on watchAsset', function () { |
|
|
|
|
|
|
|
var stubNext, stubEnd, stubHandleWatchAssetERC20, asy, req, res |
|
|
|
|
|
|
|
const sandbox = sinon.createSandbox() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
beforeEach(() => { |
|
|
|
|
|
|
|
req = {params: {}} |
|
|
|
|
|
|
|
res = {} |
|
|
|
|
|
|
|
asy = {next: () => {}, end: () => {}} |
|
|
|
|
|
|
|
stubNext = sandbox.stub(asy, 'next') |
|
|
|
|
|
|
|
stubEnd = sandbox.stub(asy, 'end').returns(0) |
|
|
|
|
|
|
|
stubHandleWatchAssetERC20 = sandbox.stub(preferencesController, '_handleWatchAssetERC20') |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
after(() => { |
|
|
|
|
|
|
|
sandbox.restore() |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
it('should do anything if method not corresponds', async function () { |
|
|
|
|
|
|
|
const asy = {next: () => {}, end: () => {}} |
|
|
|
|
|
|
|
var stubNext = sandbox.stub(asy, 'next') |
|
|
|
|
|
|
|
var stubEnd = sandbox.stub(asy, 'end').returns(0) |
|
|
|
|
|
|
|
req.method = 'metamask' |
|
|
|
|
|
|
|
await preferencesController.requestWatchAsset(req, res, asy.next, asy.end) |
|
|
|
|
|
|
|
sandbox.assert.notCalled(stubEnd) |
|
|
|
|
|
|
|
sandbox.assert.called(stubNext) |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
it('should do something if method is supported', async function () { |
|
|
|
|
|
|
|
const asy = {next: () => {}, end: () => {}} |
|
|
|
|
|
|
|
var stubNext = sandbox.stub(asy, 'next') |
|
|
|
|
|
|
|
var stubEnd = sandbox.stub(asy, 'end').returns(0) |
|
|
|
|
|
|
|
req.method = 'metamask_watchAsset' |
|
|
|
|
|
|
|
req.params.type = 'someasset' |
|
|
|
|
|
|
|
await preferencesController.requestWatchAsset(req, res, asy.next, asy.end) |
|
|
|
|
|
|
|
sandbox.assert.called(stubEnd) |
|
|
|
|
|
|
|
sandbox.assert.notCalled(stubNext) |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
it('should through error if method is supported but asset type is not', async function () { |
|
|
|
|
|
|
|
req.method = 'metamask_watchAsset' |
|
|
|
|
|
|
|
req.params.type = 'someasset' |
|
|
|
|
|
|
|
await preferencesController.requestWatchAsset(req, res, asy.next, asy.end) |
|
|
|
|
|
|
|
sandbox.assert.called(stubEnd) |
|
|
|
|
|
|
|
sandbox.assert.notCalled(stubHandleWatchAssetERC20) |
|
|
|
|
|
|
|
sandbox.assert.notCalled(stubNext) |
|
|
|
|
|
|
|
assert.deepEqual(res, {}) |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
it('should trigger handle add asset if type supported', async function () { |
|
|
|
|
|
|
|
const asy = {next: () => {}, end: () => {}} |
|
|
|
|
|
|
|
req.method = 'metamask_watchAsset' |
|
|
|
|
|
|
|
req.params.type = 'ERC20' |
|
|
|
|
|
|
|
await preferencesController.requestWatchAsset(req, res, asy.next, asy.end) |
|
|
|
|
|
|
|
sandbox.assert.called(stubHandleWatchAssetERC20) |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
describe('on watchAsset of type ERC20', function () { |
|
|
|
|
|
|
|
var req |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const sandbox = sinon.createSandbox() |
|
|
|
|
|
|
|
beforeEach(() => { |
|
|
|
|
|
|
|
req = {params: {type: 'ERC20'}} |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
after(() => { |
|
|
|
|
|
|
|
sandbox.restore() |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
it('should add suggested token', async function () { |
|
|
|
|
|
|
|
const address = '0xabcdef1234567' |
|
|
|
|
|
|
|
const symbol = 'ABBR' |
|
|
|
|
|
|
|
const decimals = 5 |
|
|
|
|
|
|
|
const imageUrl = 'someimageurl' |
|
|
|
|
|
|
|
req.params.options = { address, symbol, decimals, imageUrl } |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
sandbox.stub(preferencesController, '_validateERC20AssetParams').returns(true) |
|
|
|
|
|
|
|
preferencesController.showWatchAssetUi = async () => {} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
await preferencesController._handleWatchAssetERC20(req.params.options) |
|
|
|
|
|
|
|
const suggested = preferencesController.getSuggestedTokens() |
|
|
|
|
|
|
|
assert.equal(Object.keys(suggested).length, 1, `one token added ${Object.keys(suggested)}`) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assert.equal(suggested[address].address, address, 'set address correctly') |
|
|
|
|
|
|
|
assert.equal(suggested[address].symbol, symbol, 'set symbol correctly') |
|
|
|
|
|
|
|
assert.equal(suggested[address].decimals, decimals, 'set decimals correctly') |
|
|
|
|
|
|
|
assert.equal(suggested[address].imageUrl, imageUrl, 'set imageUrl correctly') |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
it('should add token correctly if user confirms', async function () { |
|
|
|
|
|
|
|
const address = '0xabcdef1234567' |
|
|
|
|
|
|
|
const symbol = 'ABBR' |
|
|
|
|
|
|
|
const decimals = 5 |
|
|
|
|
|
|
|
const imageUrl = 'someimageurl' |
|
|
|
|
|
|
|
req.params.options = { address, symbol, decimals, imageUrl } |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
sandbox.stub(preferencesController, '_validateERC20AssetParams').returns(true) |
|
|
|
|
|
|
|
preferencesController.showWatchAssetUi = async () => { |
|
|
|
|
|
|
|
await preferencesController.addToken(address, symbol, decimals, imageUrl) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
await preferencesController._handleWatchAssetERC20(req.params.options) |
|
|
|
|
|
|
|
const tokens = preferencesController.getTokens() |
|
|
|
|
|
|
|
assert.equal(tokens.length, 1, `one token added`) |
|
|
|
|
|
|
|
const added = tokens[0] |
|
|
|
|
|
|
|
assert.equal(added.address, address, 'set address correctly') |
|
|
|
|
|
|
|
assert.equal(added.symbol, symbol, 'set symbol correctly') |
|
|
|
|
|
|
|
assert.equal(added.decimals, decimals, 'set decimals correctly') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const assetImages = preferencesController.getAssetImages() |
|
|
|
|
|
|
|
assert.ok(assetImages[address], `set imageurl correctly`) |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
}) |
|
|
|
}) |
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|