mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
Sync NetworkController upsertNetworkConfiguration w/ core (#19426)
This makes it easier to visually compare differences in the NetworkController unit tests between core and this repo.
This commit is contained in:
parent
006d90fee7
commit
987c08f75a
@ -15,7 +15,6 @@ import {
|
|||||||
NetworkStatus,
|
NetworkStatus,
|
||||||
NETWORK_TYPES,
|
NETWORK_TYPES,
|
||||||
} from '../../../../shared/constants/network';
|
} from '../../../../shared/constants/network';
|
||||||
import { MetaMetricsNetworkEventSource } from '../../../../shared/constants/metametrics';
|
|
||||||
import {
|
import {
|
||||||
NetworkController,
|
NetworkController,
|
||||||
NetworkControllerAction,
|
NetworkControllerAction,
|
||||||
@ -3880,13 +3879,92 @@ describe('NetworkController', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
describe('upsertNetworkConfiguration', () => {
|
describe('upsertNetworkConfiguration', () => {
|
||||||
|
it('adds the given network configuration when its rpcURL does not match an existing configuration', async () => {
|
||||||
|
uuidV4Mock.mockImplementationOnce(() => 'network-configuration-id-1');
|
||||||
|
|
||||||
|
await withController(async ({ controller }) => {
|
||||||
|
const rpcUrlNetwork = {
|
||||||
|
chainId: toHex(9999),
|
||||||
|
rpcUrl: 'https://test-rpc.com',
|
||||||
|
ticker: 'RPC',
|
||||||
|
};
|
||||||
|
|
||||||
|
expect(controller.store.getState().networkConfigurations).toStrictEqual(
|
||||||
|
{},
|
||||||
|
);
|
||||||
|
|
||||||
|
await controller.upsertNetworkConfiguration(rpcUrlNetwork, {
|
||||||
|
referrer: 'https://test-dapp.com',
|
||||||
|
source: 'dapp',
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(
|
||||||
|
Object.values(controller.store.getState().networkConfigurations),
|
||||||
|
).toStrictEqual(
|
||||||
|
expect.arrayContaining([
|
||||||
|
{
|
||||||
|
...rpcUrlNetwork,
|
||||||
|
nickname: undefined,
|
||||||
|
rpcPrefs: undefined,
|
||||||
|
id: 'network-configuration-id-1',
|
||||||
|
},
|
||||||
|
]),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('update a network configuration when the configuration being added has an rpcURL that matches an existing configuration', async () => {
|
||||||
|
await withController(
|
||||||
|
{
|
||||||
|
state: {
|
||||||
|
networkConfigurations: {
|
||||||
|
testNetworkConfigurationId: {
|
||||||
|
rpcUrl: 'https://rpc-url.com',
|
||||||
|
ticker: 'old_rpc_ticker',
|
||||||
|
nickname: 'old_rpc_nickname',
|
||||||
|
rpcPrefs: { blockExplorerUrl: 'testchainscan.io' },
|
||||||
|
chainId: toHex(1),
|
||||||
|
id: 'testNetworkConfigurationId',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
async ({ controller }) => {
|
||||||
|
await controller.upsertNetworkConfiguration(
|
||||||
|
{
|
||||||
|
rpcUrl: 'https://rpc-url.com',
|
||||||
|
ticker: 'new_rpc_ticker',
|
||||||
|
nickname: 'new_rpc_nickname',
|
||||||
|
rpcPrefs: { blockExplorerUrl: 'alternativetestchainscan.io' },
|
||||||
|
chainId: toHex(1),
|
||||||
|
},
|
||||||
|
{ referrer: 'https://test-dapp.com', source: 'dapp' },
|
||||||
|
);
|
||||||
|
expect(
|
||||||
|
Object.values(controller.store.getState().networkConfigurations),
|
||||||
|
).toStrictEqual(
|
||||||
|
expect.arrayContaining([
|
||||||
|
{
|
||||||
|
rpcUrl: 'https://rpc-url.com',
|
||||||
|
nickname: 'new_rpc_nickname',
|
||||||
|
ticker: 'new_rpc_ticker',
|
||||||
|
rpcPrefs: { blockExplorerUrl: 'alternativetestchainscan.io' },
|
||||||
|
chainId: toHex(1),
|
||||||
|
id: 'testNetworkConfigurationId',
|
||||||
|
},
|
||||||
|
]),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
it('throws if the given chain ID is not a 0x-prefixed hex number', async () => {
|
it('throws if the given chain ID is not a 0x-prefixed hex number', async () => {
|
||||||
const invalidChainId = '1';
|
const invalidChainId = '1';
|
||||||
await withController(async ({ controller }) => {
|
await withController(async ({ controller }) => {
|
||||||
await expect(() =>
|
await expect(async () =>
|
||||||
controller.upsertNetworkConfiguration(
|
controller.upsertNetworkConfiguration(
|
||||||
{
|
{
|
||||||
/* @ts-expect-error We are intentionally passing bad input. */
|
// @ts-expect-error Intentionally invalid
|
||||||
chainId: invalidChainId,
|
chainId: invalidChainId,
|
||||||
nickname: 'RPC',
|
nickname: 'RPC',
|
||||||
rpcPrefs: { blockExplorerUrl: 'test-block-explorer.com' },
|
rpcPrefs: { blockExplorerUrl: 'test-block-explorer.com' },
|
||||||
@ -3895,7 +3973,7 @@ describe('NetworkController', () => {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
referrer: 'https://test-dapp.com',
|
referrer: 'https://test-dapp.com',
|
||||||
source: MetaMetricsNetworkEventSource.Dapp,
|
source: 'dapp',
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
).rejects.toThrow(
|
).rejects.toThrow(
|
||||||
@ -3908,7 +3986,7 @@ describe('NetworkController', () => {
|
|||||||
|
|
||||||
it('throws if the given chain ID is greater than the maximum allowed ID', async () => {
|
it('throws if the given chain ID is greater than the maximum allowed ID', async () => {
|
||||||
await withController(async ({ controller }) => {
|
await withController(async ({ controller }) => {
|
||||||
await expect(() =>
|
await expect(async () =>
|
||||||
controller.upsertNetworkConfiguration(
|
controller.upsertNetworkConfiguration(
|
||||||
{
|
{
|
||||||
chainId: '0xFFFFFFFFFFFFFFFF',
|
chainId: '0xFFFFFFFFFFFFFFFF',
|
||||||
@ -3919,7 +3997,7 @@ describe('NetworkController', () => {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
referrer: 'https://test-dapp.com',
|
referrer: 'https://test-dapp.com',
|
||||||
source: MetaMetricsNetworkEventSource.Dapp,
|
source: 'dapp',
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
).rejects.toThrow(
|
).rejects.toThrow(
|
||||||
@ -3936,14 +4014,14 @@ describe('NetworkController', () => {
|
|||||||
controller.upsertNetworkConfiguration(
|
controller.upsertNetworkConfiguration(
|
||||||
/* @ts-expect-error We are intentionally passing bad input. */
|
/* @ts-expect-error We are intentionally passing bad input. */
|
||||||
{
|
{
|
||||||
chainId: '0x9999',
|
chainId: toHex(9999),
|
||||||
nickname: 'RPC',
|
nickname: 'RPC',
|
||||||
rpcPrefs: { blockExplorerUrl: 'test-block-explorer.com' },
|
rpcPrefs: { blockExplorerUrl: 'test-block-explorer.com' },
|
||||||
ticker: 'RPC',
|
ticker: 'RPC',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
referrer: 'https://test-dapp.com',
|
referrer: 'https://test-dapp.com',
|
||||||
source: MetaMetricsNetworkEventSource.Dapp,
|
source: 'dapp',
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
).rejects.toThrow(
|
).rejects.toThrow(
|
||||||
@ -3956,10 +4034,10 @@ describe('NetworkController', () => {
|
|||||||
|
|
||||||
it('throws if rpcUrl passed is not a valid Url', async () => {
|
it('throws if rpcUrl passed is not a valid Url', async () => {
|
||||||
await withController(async ({ controller }) => {
|
await withController(async ({ controller }) => {
|
||||||
await expect(() =>
|
await expect(async () =>
|
||||||
controller.upsertNetworkConfiguration(
|
controller.upsertNetworkConfiguration(
|
||||||
{
|
{
|
||||||
chainId: '0x9999',
|
chainId: toHex(9999),
|
||||||
nickname: 'RPC',
|
nickname: 'RPC',
|
||||||
rpcPrefs: { blockExplorerUrl: 'test-block-explorer.com' },
|
rpcPrefs: { blockExplorerUrl: 'test-block-explorer.com' },
|
||||||
ticker: 'RPC',
|
ticker: 'RPC',
|
||||||
@ -3967,7 +4045,7 @@ describe('NetworkController', () => {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
referrer: 'https://test-dapp.com',
|
referrer: 'https://test-dapp.com',
|
||||||
source: MetaMetricsNetworkEventSource.Dapp,
|
source: 'dapp',
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
).rejects.toThrow(new Error('rpcUrl must be a valid URL'));
|
).rejects.toThrow(new Error('rpcUrl must be a valid URL'));
|
||||||
@ -3976,18 +4054,18 @@ describe('NetworkController', () => {
|
|||||||
|
|
||||||
it('throws if the no (or a falsy) ticker is passed', async () => {
|
it('throws if the no (or a falsy) ticker is passed', async () => {
|
||||||
await withController(async ({ controller }) => {
|
await withController(async ({ controller }) => {
|
||||||
await expect(() =>
|
await expect(async () =>
|
||||||
controller.upsertNetworkConfiguration(
|
controller.upsertNetworkConfiguration(
|
||||||
/* @ts-expect-error We are intentionally passing bad input. */
|
// @ts-expect-error - we want to test the case where no ticker is present.
|
||||||
{
|
{
|
||||||
chainId: '0x5',
|
chainId: toHex(5),
|
||||||
nickname: 'RPC',
|
nickname: 'RPC',
|
||||||
rpcPrefs: { blockExplorerUrl: 'test-block-explorer.com' },
|
rpcPrefs: { blockExplorerUrl: 'test-block-explorer.com' },
|
||||||
rpcUrl: 'https://mock-rpc-url',
|
rpcUrl: 'https://mock-rpc-url',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
referrer: 'https://test-dapp.com',
|
referrer: 'https://test-dapp.com',
|
||||||
source: MetaMetricsNetworkEventSource.Dapp,
|
source: 'dapp',
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
).rejects.toThrow(
|
).rejects.toThrow(
|
||||||
@ -4000,22 +4078,63 @@ describe('NetworkController', () => {
|
|||||||
|
|
||||||
it('throws if an options object is not passed as a second argument', async () => {
|
it('throws if an options object is not passed as a second argument', async () => {
|
||||||
await withController(async ({ controller }) => {
|
await withController(async ({ controller }) => {
|
||||||
await expect(() =>
|
await expect(async () =>
|
||||||
/* @ts-expect-error We are intentionally passing bad input. */
|
// @ts-expect-error - we want to test the case where no second arg is passed.
|
||||||
controller.upsertNetworkConfiguration({
|
controller.upsertNetworkConfiguration({
|
||||||
chainId: '0x5',
|
chainId: toHex(5),
|
||||||
nickname: 'RPC',
|
nickname: 'RPC',
|
||||||
rpcPrefs: { blockExplorerUrl: 'test-block-explorer.com' },
|
rpcPrefs: { blockExplorerUrl: 'test-block-explorer.com' },
|
||||||
rpcUrl: 'https://mock-rpc-url',
|
rpcUrl: 'https://mock-rpc-url',
|
||||||
}),
|
}),
|
||||||
).rejects.toThrow(
|
).rejects.toThrow('Cannot read properties of undefined');
|
||||||
new Error(
|
|
||||||
"Cannot read properties of undefined (reading 'setActive')",
|
|
||||||
),
|
|
||||||
);
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('throws if referrer and source arguments are not passed', async () => {
|
||||||
|
uuidV4Mock.mockImplementationOnce(() => 'networkConfigurationId');
|
||||||
|
const trackEventSpy = jest.fn();
|
||||||
|
await withController(
|
||||||
|
{
|
||||||
|
state: {
|
||||||
|
providerConfig: {
|
||||||
|
type: NETWORK_TYPES.RPC,
|
||||||
|
rpcUrl: 'https://mock-rpc-url',
|
||||||
|
chainId: toHex(111),
|
||||||
|
ticker: 'TEST',
|
||||||
|
id: 'testNetworkConfigurationId',
|
||||||
|
},
|
||||||
|
networkConfigurations: {
|
||||||
|
testNetworkConfigurationId: {
|
||||||
|
rpcUrl: 'https://mock-rpc-url',
|
||||||
|
chainId: toHex(111),
|
||||||
|
ticker: 'TEST',
|
||||||
|
id: 'testNetworkConfigurationId',
|
||||||
|
nickname: undefined,
|
||||||
|
rpcPrefs: undefined,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
trackMetaMetricsEvent: trackEventSpy,
|
||||||
|
},
|
||||||
|
async ({ controller }) => {
|
||||||
|
const newNetworkConfiguration = {
|
||||||
|
rpcUrl: 'https://new-chain-rpc-url',
|
||||||
|
chainId: toHex(222),
|
||||||
|
ticker: 'NEW',
|
||||||
|
nickname: 'new-chain',
|
||||||
|
rpcPrefs: { blockExplorerUrl: 'https://block-explorer' },
|
||||||
|
};
|
||||||
|
|
||||||
|
await expect(async () =>
|
||||||
|
// @ts-expect-error - we want to test the case where the options object is empty.
|
||||||
|
controller.upsertNetworkConfiguration(newNetworkConfiguration, {}),
|
||||||
|
).rejects.toThrow(
|
||||||
|
'referrer and source are required arguments for adding or updating a network configuration',
|
||||||
|
);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
it('should add the given network if all required properties are present but nither rpcPrefs nor nickname properties are passed', async () => {
|
it('should add the given network if all required properties are present but nither rpcPrefs nor nickname properties are passed', async () => {
|
||||||
uuidV4Mock.mockImplementationOnce(() => 'networkConfigurationId');
|
uuidV4Mock.mockImplementationOnce(() => 'networkConfigurationId');
|
||||||
await withController(
|
await withController(
|
||||||
@ -4026,14 +4145,14 @@ describe('NetworkController', () => {
|
|||||||
},
|
},
|
||||||
async ({ controller }) => {
|
async ({ controller }) => {
|
||||||
const rpcUrlNetwork = {
|
const rpcUrlNetwork = {
|
||||||
chainId: '0x1' as const,
|
chainId: toHex(1),
|
||||||
rpcUrl: 'https://test-rpc-url',
|
rpcUrl: 'https://test-rpc-url',
|
||||||
ticker: 'test_ticker',
|
ticker: 'test_ticker',
|
||||||
};
|
};
|
||||||
|
|
||||||
await controller.upsertNetworkConfiguration(rpcUrlNetwork, {
|
await controller.upsertNetworkConfiguration(rpcUrlNetwork, {
|
||||||
referrer: 'https://test-dapp.com',
|
referrer: 'https://test-dapp.com',
|
||||||
source: MetaMetricsNetworkEventSource.Dapp,
|
source: 'dapp',
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(
|
expect(
|
||||||
@ -4062,7 +4181,7 @@ describe('NetworkController', () => {
|
|||||||
},
|
},
|
||||||
async ({ controller }) => {
|
async ({ controller }) => {
|
||||||
const rpcUrlNetwork = {
|
const rpcUrlNetwork = {
|
||||||
chainId: '0x1' as const,
|
chainId: toHex(1),
|
||||||
rpcUrl: 'https://test-rpc-url',
|
rpcUrl: 'https://test-rpc-url',
|
||||||
ticker: 'test_ticker',
|
ticker: 'test_ticker',
|
||||||
invalidKey: 'new-chain',
|
invalidKey: 'new-chain',
|
||||||
@ -4071,7 +4190,7 @@ describe('NetworkController', () => {
|
|||||||
|
|
||||||
await controller.upsertNetworkConfiguration(rpcUrlNetwork, {
|
await controller.upsertNetworkConfiguration(rpcUrlNetwork, {
|
||||||
referrer: 'https://test-dapp.com',
|
referrer: 'https://test-dapp.com',
|
||||||
source: MetaMetricsNetworkEventSource.Dapp,
|
source: 'dapp',
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(
|
expect(
|
||||||
@ -4079,7 +4198,7 @@ describe('NetworkController', () => {
|
|||||||
).toStrictEqual(
|
).toStrictEqual(
|
||||||
expect.arrayContaining([
|
expect.arrayContaining([
|
||||||
{
|
{
|
||||||
chainId: '0x1',
|
chainId: toHex(1),
|
||||||
rpcUrl: 'https://test-rpc-url',
|
rpcUrl: 'https://test-rpc-url',
|
||||||
ticker: 'test_ticker',
|
ticker: 'test_ticker',
|
||||||
nickname: undefined,
|
nickname: undefined,
|
||||||
@ -4103,7 +4222,7 @@ describe('NetworkController', () => {
|
|||||||
ticker: 'ticker',
|
ticker: 'ticker',
|
||||||
nickname: 'nickname',
|
nickname: 'nickname',
|
||||||
rpcPrefs: { blockExplorerUrl: 'testchainscan.io' },
|
rpcPrefs: { blockExplorerUrl: 'testchainscan.io' },
|
||||||
chainId: '0x1',
|
chainId: toHex(1),
|
||||||
id: 'networkConfigurationId',
|
id: 'networkConfigurationId',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -4111,7 +4230,7 @@ describe('NetworkController', () => {
|
|||||||
},
|
},
|
||||||
async ({ controller }) => {
|
async ({ controller }) => {
|
||||||
const rpcUrlNetwork = {
|
const rpcUrlNetwork = {
|
||||||
chainId: '0x1' as const,
|
chainId: toHex(1),
|
||||||
nickname: 'RPC',
|
nickname: 'RPC',
|
||||||
rpcPrefs: undefined,
|
rpcPrefs: undefined,
|
||||||
rpcUrl: 'https://test-rpc-url-2',
|
rpcUrl: 'https://test-rpc-url-2',
|
||||||
@ -4120,7 +4239,7 @@ describe('NetworkController', () => {
|
|||||||
|
|
||||||
await controller.upsertNetworkConfiguration(rpcUrlNetwork, {
|
await controller.upsertNetworkConfiguration(rpcUrlNetwork, {
|
||||||
referrer: 'https://test-dapp.com',
|
referrer: 'https://test-dapp.com',
|
||||||
source: MetaMetricsNetworkEventSource.Dapp,
|
source: 'dapp',
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(
|
expect(
|
||||||
@ -4132,7 +4251,7 @@ describe('NetworkController', () => {
|
|||||||
ticker: 'ticker',
|
ticker: 'ticker',
|
||||||
nickname: 'nickname',
|
nickname: 'nickname',
|
||||||
rpcPrefs: { blockExplorerUrl: 'testchainscan.io' },
|
rpcPrefs: { blockExplorerUrl: 'testchainscan.io' },
|
||||||
chainId: '0x1',
|
chainId: toHex(1),
|
||||||
id: 'networkConfigurationId',
|
id: 'networkConfigurationId',
|
||||||
},
|
},
|
||||||
{ ...rpcUrlNetwork, id: 'networkConfigurationId2' },
|
{ ...rpcUrlNetwork, id: 'networkConfigurationId2' },
|
||||||
@ -4152,7 +4271,7 @@ describe('NetworkController', () => {
|
|||||||
ticker: 'old_rpc_ticker',
|
ticker: 'old_rpc_ticker',
|
||||||
nickname: 'old_rpc_chainName',
|
nickname: 'old_rpc_chainName',
|
||||||
rpcPrefs: { blockExplorerUrl: 'testchainscan.io' },
|
rpcPrefs: { blockExplorerUrl: 'testchainscan.io' },
|
||||||
chainId: '0x1',
|
chainId: toHex(1),
|
||||||
id: 'networkConfigurationId',
|
id: 'networkConfigurationId',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -4165,11 +4284,11 @@ describe('NetworkController', () => {
|
|||||||
ticker: 'new_rpc_ticker',
|
ticker: 'new_rpc_ticker',
|
||||||
nickname: 'new_rpc_chainName',
|
nickname: 'new_rpc_chainName',
|
||||||
rpcPrefs: { blockExplorerUrl: 'alternativetestchainscan.io' },
|
rpcPrefs: { blockExplorerUrl: 'alternativetestchainscan.io' },
|
||||||
chainId: '0x1' as const,
|
chainId: toHex(1),
|
||||||
};
|
};
|
||||||
await controller.upsertNetworkConfiguration(updatedConfiguration, {
|
await controller.upsertNetworkConfiguration(updatedConfiguration, {
|
||||||
referrer: 'https://test-dapp.com',
|
referrer: 'https://test-dapp.com',
|
||||||
source: MetaMetricsNetworkEventSource.Dapp,
|
source: 'dapp',
|
||||||
});
|
});
|
||||||
expect(
|
expect(
|
||||||
Object.values(controller.store.getState().networkConfigurations),
|
Object.values(controller.store.getState().networkConfigurations),
|
||||||
@ -4179,7 +4298,7 @@ describe('NetworkController', () => {
|
|||||||
nickname: 'new_rpc_chainName',
|
nickname: 'new_rpc_chainName',
|
||||||
ticker: 'new_rpc_ticker',
|
ticker: 'new_rpc_ticker',
|
||||||
rpcPrefs: { blockExplorerUrl: 'alternativetestchainscan.io' },
|
rpcPrefs: { blockExplorerUrl: 'alternativetestchainscan.io' },
|
||||||
chainId: '0x1',
|
chainId: toHex(1),
|
||||||
id: 'networkConfigurationId',
|
id: 'networkConfigurationId',
|
||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
@ -4197,7 +4316,7 @@ describe('NetworkController', () => {
|
|||||||
ticker: 'ticker',
|
ticker: 'ticker',
|
||||||
nickname: 'nickname',
|
nickname: 'nickname',
|
||||||
rpcPrefs: { blockExplorerUrl: 'testchainscan.io' },
|
rpcPrefs: { blockExplorerUrl: 'testchainscan.io' },
|
||||||
chainId: '0x1',
|
chainId: toHex(1),
|
||||||
id: 'networkConfigurationId',
|
id: 'networkConfigurationId',
|
||||||
},
|
},
|
||||||
networkConfigurationId2: {
|
networkConfigurationId2: {
|
||||||
@ -4205,7 +4324,7 @@ describe('NetworkController', () => {
|
|||||||
ticker: 'ticker-2',
|
ticker: 'ticker-2',
|
||||||
nickname: 'nickname-2',
|
nickname: 'nickname-2',
|
||||||
rpcPrefs: { blockExplorerUrl: 'testchainscan.io' },
|
rpcPrefs: { blockExplorerUrl: 'testchainscan.io' },
|
||||||
chainId: '0x9999',
|
chainId: toHex(9999),
|
||||||
id: 'networkConfigurationId2',
|
id: 'networkConfigurationId2',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -4218,11 +4337,11 @@ describe('NetworkController', () => {
|
|||||||
ticker: 'new-ticker',
|
ticker: 'new-ticker',
|
||||||
nickname: 'new-nickname',
|
nickname: 'new-nickname',
|
||||||
rpcPrefs: { blockExplorerUrl: 'alternativetestchainscan.io' },
|
rpcPrefs: { blockExplorerUrl: 'alternativetestchainscan.io' },
|
||||||
chainId: '0x1',
|
chainId: toHex(1),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
referrer: 'https://test-dapp.com',
|
referrer: 'https://test-dapp.com',
|
||||||
source: MetaMetricsNetworkEventSource.Dapp,
|
source: 'dapp',
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -4234,7 +4353,7 @@ describe('NetworkController', () => {
|
|||||||
ticker: 'new-ticker',
|
ticker: 'new-ticker',
|
||||||
nickname: 'new-nickname',
|
nickname: 'new-nickname',
|
||||||
rpcPrefs: { blockExplorerUrl: 'alternativetestchainscan.io' },
|
rpcPrefs: { blockExplorerUrl: 'alternativetestchainscan.io' },
|
||||||
chainId: '0x1',
|
chainId: toHex(1),
|
||||||
id: 'networkConfigurationId',
|
id: 'networkConfigurationId',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -4242,7 +4361,7 @@ describe('NetworkController', () => {
|
|||||||
ticker: 'ticker-2',
|
ticker: 'ticker-2',
|
||||||
nickname: 'nickname-2',
|
nickname: 'nickname-2',
|
||||||
rpcPrefs: { blockExplorerUrl: 'testchainscan.io' },
|
rpcPrefs: { blockExplorerUrl: 'testchainscan.io' },
|
||||||
chainId: '0x9999',
|
chainId: toHex(9999),
|
||||||
id: 'networkConfigurationId2',
|
id: 'networkConfigurationId2',
|
||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
@ -4252,40 +4371,43 @@ describe('NetworkController', () => {
|
|||||||
|
|
||||||
it('should add the given network and not set it to active if the setActive option is not passed (or a falsy value is passed)', async () => {
|
it('should add the given network and not set it to active if the setActive option is not passed (or a falsy value is passed)', async () => {
|
||||||
uuidV4Mock.mockImplementationOnce(() => 'networkConfigurationId');
|
uuidV4Mock.mockImplementationOnce(() => 'networkConfigurationId');
|
||||||
const originalProviderConfig = {
|
const originalProvider = {
|
||||||
type: NETWORK_TYPES.RPC,
|
type: NETWORK_TYPES.RPC,
|
||||||
rpcUrl: 'https://mock-rpc-url',
|
rpcUrl: 'https://mock-rpc-url',
|
||||||
chainId: '0xtest' as const,
|
chainId: toHex(111),
|
||||||
ticker: 'TEST',
|
ticker: 'TEST',
|
||||||
|
id: 'testNetworkConfigurationId',
|
||||||
};
|
};
|
||||||
await withController(
|
await withController(
|
||||||
{
|
{
|
||||||
state: {
|
state: {
|
||||||
providerConfig: originalProviderConfig,
|
providerConfig: originalProvider,
|
||||||
networkConfigurations: {
|
networkConfigurations: {
|
||||||
testNetworkConfigurationId: {
|
testNetworkConfigurationId: {
|
||||||
rpcUrl: 'https://mock-rpc-url',
|
rpcUrl: 'https://mock-rpc-url',
|
||||||
chainId: '0xtest',
|
chainId: toHex(111),
|
||||||
ticker: 'TEST',
|
ticker: 'TEST',
|
||||||
id: 'testNetworkConfigurationId',
|
id: 'testNetworkConfigurationId',
|
||||||
|
nickname: undefined,
|
||||||
|
rpcPrefs: undefined,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
async ({ controller }) => {
|
async ({ controller }) => {
|
||||||
const rpcUrlNetwork = {
|
const rpcUrlNetwork = {
|
||||||
chainId: '0x1' as const,
|
chainId: toHex(222),
|
||||||
rpcUrl: 'https://test-rpc-url',
|
rpcUrl: 'https://test-rpc-url',
|
||||||
ticker: 'test_ticker',
|
ticker: 'test_ticker',
|
||||||
};
|
};
|
||||||
|
|
||||||
await controller.upsertNetworkConfiguration(rpcUrlNetwork, {
|
await controller.upsertNetworkConfiguration(rpcUrlNetwork, {
|
||||||
referrer: 'https://test-dapp.com',
|
referrer: 'https://test-dapp.com',
|
||||||
source: MetaMetricsNetworkEventSource.Dapp,
|
source: 'dapp',
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(controller.store.getState().providerConfig).toStrictEqual(
|
expect(controller.store.getState().providerConfig).toStrictEqual(
|
||||||
originalProviderConfig,
|
originalProvider,
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
@ -4297,17 +4419,22 @@ describe('NetworkController', () => {
|
|||||||
{
|
{
|
||||||
state: {
|
state: {
|
||||||
providerConfig: {
|
providerConfig: {
|
||||||
type: 'rpc',
|
type: NETWORK_TYPES.RPC,
|
||||||
rpcUrl: 'https://mock-rpc-url',
|
rpcUrl: 'https://mock-rpc-url',
|
||||||
chainId: '0xtest',
|
chainId: toHex(111),
|
||||||
ticker: 'TEST',
|
ticker: 'TEST',
|
||||||
|
id: 'testNetworkConfigurationId',
|
||||||
|
nickname: undefined,
|
||||||
|
rpcPrefs: undefined,
|
||||||
},
|
},
|
||||||
networkConfigurations: {
|
networkConfigurations: {
|
||||||
testNetworkConfigurationId: {
|
testNetworkConfigurationId: {
|
||||||
rpcUrl: 'https://mock-rpc-url',
|
rpcUrl: 'https://mock-rpc-url',
|
||||||
chainId: '0xtest',
|
chainId: toHex(111),
|
||||||
ticker: 'TEST',
|
ticker: 'TEST',
|
||||||
id: 'testNetworkConfigurationId',
|
id: 'testNetworkConfigurationId',
|
||||||
|
nickname: undefined,
|
||||||
|
rpcPrefs: undefined,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -4315,25 +4442,27 @@ describe('NetworkController', () => {
|
|||||||
async ({ controller }) => {
|
async ({ controller }) => {
|
||||||
const fakeProvider = buildFakeProvider();
|
const fakeProvider = buildFakeProvider();
|
||||||
const fakeNetworkClient = buildFakeClient(fakeProvider);
|
const fakeNetworkClient = buildFakeClient(fakeProvider);
|
||||||
mockCreateNetworkClient().mockReturnValue(fakeNetworkClient);
|
createNetworkClientMock.mockReturnValue(fakeNetworkClient);
|
||||||
const rpcUrlNetwork = {
|
const rpcUrlNetwork = {
|
||||||
chainId: '0x1' as const,
|
|
||||||
rpcUrl: 'https://test-rpc-url',
|
rpcUrl: 'https://test-rpc-url',
|
||||||
|
chainId: toHex(222),
|
||||||
ticker: 'test_ticker',
|
ticker: 'test_ticker',
|
||||||
};
|
};
|
||||||
|
|
||||||
await controller.upsertNetworkConfiguration(rpcUrlNetwork, {
|
await controller.upsertNetworkConfiguration(rpcUrlNetwork, {
|
||||||
setActive: true,
|
setActive: true,
|
||||||
referrer: 'https://test-dapp.com',
|
referrer: 'https://test-dapp.com',
|
||||||
source: MetaMetricsNetworkEventSource.Dapp,
|
source: 'dapp',
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(controller.store.getState().providerConfig).toStrictEqual({
|
expect(controller.store.getState().providerConfig).toStrictEqual({
|
||||||
...rpcUrlNetwork,
|
type: 'rpc',
|
||||||
|
rpcUrl: 'https://test-rpc-url',
|
||||||
|
chainId: toHex(222),
|
||||||
|
ticker: 'test_ticker',
|
||||||
|
id: 'networkConfigurationId',
|
||||||
nickname: undefined,
|
nickname: undefined,
|
||||||
rpcPrefs: undefined,
|
rpcPrefs: undefined,
|
||||||
type: 'rpc',
|
|
||||||
id: 'networkConfigurationId',
|
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
@ -4346,17 +4475,22 @@ describe('NetworkController', () => {
|
|||||||
{
|
{
|
||||||
state: {
|
state: {
|
||||||
providerConfig: {
|
providerConfig: {
|
||||||
type: 'rpc',
|
type: NETWORK_TYPES.RPC,
|
||||||
rpcUrl: 'https://mock-rpc-url',
|
rpcUrl: 'https://mock-rpc-url',
|
||||||
chainId: '0xtest',
|
chainId: toHex(111),
|
||||||
ticker: 'TEST',
|
ticker: 'TEST',
|
||||||
|
id: 'testNetworkConfigurationId',
|
||||||
|
nickname: undefined,
|
||||||
|
rpcPrefs: undefined,
|
||||||
},
|
},
|
||||||
networkConfigurations: {
|
networkConfigurations: {
|
||||||
testNetworkConfigurationId: {
|
testNetworkConfigurationId: {
|
||||||
rpcUrl: 'https://mock-rpc-url',
|
rpcUrl: 'https://mock-rpc-url',
|
||||||
chainId: '0xtest',
|
chainId: toHex(111),
|
||||||
ticker: 'TEST',
|
ticker: 'TEST',
|
||||||
id: 'testNetworkConfigurationId',
|
id: 'testNetworkConfigurationId',
|
||||||
|
nickname: undefined,
|
||||||
|
rpcPrefs: undefined,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -4365,7 +4499,7 @@ describe('NetworkController', () => {
|
|||||||
async ({ controller }) => {
|
async ({ controller }) => {
|
||||||
const newNetworkConfiguration = {
|
const newNetworkConfiguration = {
|
||||||
rpcUrl: 'https://new-chain-rpc-url',
|
rpcUrl: 'https://new-chain-rpc-url',
|
||||||
chainId: '0x9999' as const,
|
chainId: toHex(222),
|
||||||
ticker: 'NEW',
|
ticker: 'NEW',
|
||||||
nickname: 'new-chain',
|
nickname: 'new-chain',
|
||||||
rpcPrefs: { blockExplorerUrl: 'https://block-explorer' },
|
rpcPrefs: { blockExplorerUrl: 'https://block-explorer' },
|
||||||
@ -4373,7 +4507,7 @@ describe('NetworkController', () => {
|
|||||||
|
|
||||||
await controller.upsertNetworkConfiguration(newNetworkConfiguration, {
|
await controller.upsertNetworkConfiguration(newNetworkConfiguration, {
|
||||||
referrer: 'https://test-dapp.com',
|
referrer: 'https://test-dapp.com',
|
||||||
source: MetaMetricsNetworkEventSource.Dapp,
|
source: 'dapp',
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(
|
expect(
|
||||||
@ -4381,9 +4515,11 @@ describe('NetworkController', () => {
|
|||||||
).toStrictEqual([
|
).toStrictEqual([
|
||||||
{
|
{
|
||||||
rpcUrl: 'https://mock-rpc-url',
|
rpcUrl: 'https://mock-rpc-url',
|
||||||
chainId: '0xtest',
|
chainId: toHex(111),
|
||||||
ticker: 'TEST',
|
ticker: 'TEST',
|
||||||
id: 'testNetworkConfigurationId',
|
id: 'testNetworkConfigurationId',
|
||||||
|
nickname: undefined,
|
||||||
|
rpcPrefs: undefined,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
...newNetworkConfiguration,
|
...newNetworkConfiguration,
|
||||||
@ -4397,7 +4533,7 @@ describe('NetworkController', () => {
|
|||||||
url: 'https://test-dapp.com',
|
url: 'https://test-dapp.com',
|
||||||
},
|
},
|
||||||
properties: {
|
properties: {
|
||||||
chain_id: '0x9999',
|
chain_id: toHex(222),
|
||||||
symbol: 'NEW',
|
symbol: 'NEW',
|
||||||
source: 'dapp',
|
source: 'dapp',
|
||||||
},
|
},
|
||||||
@ -4405,48 +4541,6 @@ describe('NetworkController', () => {
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('throws if referrer and source arguments are not passed', async () => {
|
|
||||||
uuidV4Mock.mockImplementationOnce(() => 'networkConfigurationId');
|
|
||||||
const trackEventSpy = jest.fn();
|
|
||||||
await withController(
|
|
||||||
{
|
|
||||||
state: {
|
|
||||||
providerConfig: {
|
|
||||||
type: 'rpc',
|
|
||||||
rpcUrl: 'https://mock-rpc-url',
|
|
||||||
chainId: '0xtest',
|
|
||||||
ticker: 'TEST',
|
|
||||||
},
|
|
||||||
networkConfigurations: {
|
|
||||||
testNetworkConfigurationId: {
|
|
||||||
rpcUrl: 'https://mock-rpc-url',
|
|
||||||
chainId: '0xtest',
|
|
||||||
ticker: 'TEST',
|
|
||||||
id: 'testNetworkConfigurationId',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
trackMetaMetricsEvent: trackEventSpy,
|
|
||||||
},
|
|
||||||
async ({ controller }) => {
|
|
||||||
const newNetworkConfiguration = {
|
|
||||||
rpcUrl: 'https://new-chain-rpc-url',
|
|
||||||
chainId: '0x9999' as const,
|
|
||||||
ticker: 'NEW',
|
|
||||||
nickname: 'new-chain',
|
|
||||||
rpcPrefs: { blockExplorerUrl: 'https://block-explorer' },
|
|
||||||
};
|
|
||||||
|
|
||||||
await expect(() =>
|
|
||||||
/* @ts-expect-error We are intentionally passing bad input. */
|
|
||||||
controller.upsertNetworkConfiguration(newNetworkConfiguration, {}),
|
|
||||||
).rejects.toThrow(
|
|
||||||
'referrer and source are required arguments for adding or updating a network configuration',
|
|
||||||
);
|
|
||||||
},
|
|
||||||
);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('removeNetworkConfigurations', () => {
|
describe('removeNetworkConfigurations', () => {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user