From 29e252e1623004e74b29efc1b1c3a0b343d9e4bc Mon Sep 17 00:00:00 2001 From: Jyoti Puri Date: Fri, 19 Aug 2022 18:00:40 +0530 Subject: [PATCH] Add unit test coverage to ensure that addToken method is idempotent. (#15587) --- .../metamask-controller.actions.test.js | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/app/scripts/metamask-controller.actions.test.js b/app/scripts/metamask-controller.actions.test.js index 8e5fc347a..7d56007b3 100644 --- a/app/scripts/metamask-controller.actions.test.js +++ b/app/scripts/metamask-controller.actions.test.js @@ -106,6 +106,29 @@ describe('MetaMaskController', function () { }); }); + describe('#addToken', function () { + const address = '0x514910771af9ca656af840dff83e8264ecf986ca'; + const symbol = 'LINK'; + const decimals = 18; + + it('two parallel calls with same token details give same result', async function () { + const supportsInterfaceStub = sinon + .stub() + .returns(Promise.resolve(false)); + sinon + .stub(metamaskController.tokensController, '_createEthersContract') + .callsFake(() => + Promise.resolve({ supportsInterface: supportsInterfaceStub }), + ); + + const [token1, token2] = await Promise.all([ + metamaskController.getApi().addToken(address, symbol, decimals), + metamaskController.getApi().addToken(address, symbol, decimals), + ]); + assert.deepEqual(token1, token2); + }); + }); + describe('#addCustomNetwork', function () { const customRpc = { chainId: '0x1', @@ -114,7 +137,7 @@ describe('MetaMaskController', function () { ticker: 'DUMMY_TICKER', blockExplorerUrl: 'DUMMY_EXPLORER', }; - it('two calls with same accountCount give same result', async function () { + it('two successive calls with custom RPC details give same result', async function () { await metamaskController.addCustomNetwork(customRpc); const rpcList1Length = metamaskController.preferencesController.store.getState()