diff --git a/packages/assets-controllers/src/AssetsContractController.test.ts b/packages/assets-controllers/src/AssetsContractController.test.ts index b859b5cdaf..a912019848 100644 --- a/packages/assets-controllers/src/AssetsContractController.test.ts +++ b/packages/assets-controllers/src/AssetsContractController.test.ts @@ -37,6 +37,7 @@ const setupControllers = () => { allowedActions: [], }); const network = new NetworkController({ + infuraProjectId: 'infura-project-id', messenger, trackMetaMetricsEvent: jest.fn(), }); diff --git a/packages/assets-controllers/src/TokenRatesController.test.ts b/packages/assets-controllers/src/TokenRatesController.test.ts index d2c74da455..8f08ec376f 100644 --- a/packages/assets-controllers/src/TokenRatesController.test.ts +++ b/packages/assets-controllers/src/TokenRatesController.test.ts @@ -216,7 +216,11 @@ describe('TokenRatesController', () => { }); it('should update all rates', async () => { - new NetworkController({ messenger, trackMetaMetricsEvent: jest.fn() }); + new NetworkController({ + infuraProjectId: 'infura-project-id', + messenger, + trackMetaMetricsEvent: jest.fn(), + }); const preferences = new PreferencesController(); const tokensController = new TokensController({ onPreferencesStateChange: (listener) => preferences.subscribe(listener), diff --git a/packages/network-controller/src/NetworkController.ts b/packages/network-controller/src/NetworkController.ts index b3c6226303..54efdee388 100644 --- a/packages/network-controller/src/NetworkController.ts +++ b/packages/network-controller/src/NetworkController.ts @@ -173,7 +173,7 @@ export type NetworkControllerMessenger = RestrictedControllerMessenger< export type NetworkControllerOptions = { messenger: NetworkControllerMessenger; trackMetaMetricsEvent: () => void; - infuraProjectId?: string; + infuraProjectId: string; state?: Partial; }; @@ -213,7 +213,7 @@ export class NetworkController extends BaseControllerV2< > { #ethQuery: EthQuery; - #infuraProjectId: string | undefined; + #infuraProjectId: string; #trackMetaMetricsEvent: (event: MetaMetricsEventPayload) => void; @@ -260,6 +260,9 @@ export class NetworkController extends BaseControllerV2< messenger, state: { ...defaultState, ...state }, }); + if (!infuraProjectId || typeof infuraProjectId !== 'string') { + throw new Error('Invalid Infura project ID'); + } this.#infuraProjectId = infuraProjectId; this.#trackMetaMetricsEvent = trackMetaMetricsEvent; this.messagingSystem.registerActionHandler( diff --git a/packages/network-controller/tests/NetworkController.test.ts b/packages/network-controller/tests/NetworkController.test.ts index 9b1fe873f2..b4abbe5301 100644 --- a/packages/network-controller/tests/NetworkController.test.ts +++ b/packages/network-controller/tests/NetworkController.test.ts @@ -162,6 +162,35 @@ describe('NetworkController', () => { }, ); }); + + it('throws if the infura project ID is missing', async () => { + const messenger = buildMessenger(); + + expect( + () => + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + new NetworkController({ + messenger, + trackMetaMetricsEvent: jest.fn(), + }), + ).toThrow('Invalid Infura project ID'); + }); + + it('throws if the infura project ID is not a string', async () => { + const messenger = buildMessenger(); + + expect( + () => + new NetworkController({ + messenger, + trackMetaMetricsEvent: jest.fn(), + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + infuraProjectId: 10, + }), + ).toThrow('Invalid Infura project ID'); + }); }); describe('initializeProvider', () => { @@ -235,7 +264,6 @@ describe('NetworkController', () => { type: networkType, }), }, - infuraProjectId: 'infura-project-id', }, async ({ controller }) => { const fakeInfuraProvider = buildFakeInfuraProvider(); @@ -273,7 +301,6 @@ describe('NetworkController', () => { type: networkType, }), }, - infuraProjectId: 'infura-project-id', }, async ({ controller }) => { const fakeInfuraProvider = buildFakeInfuraProvider(); @@ -351,7 +378,6 @@ describe('NetworkController', () => { type: networkType, }), }, - infuraProjectId: 'infura-project-id', }, async ({ controller }) => { const fakeInfuraProvider = buildFakeInfuraProvider(); @@ -3325,7 +3351,6 @@ describe('NetworkController', () => { chainId: '0x9999999', }, }, - infuraProjectId: 'infura-project-id', }, async ({ controller }) => { const fakeInfuraProvider = buildFakeInfuraProvider(); @@ -5673,6 +5698,7 @@ async function withController( const controller = new NetworkController({ messenger, trackMetaMetricsEvent: jest.fn(), + infuraProjectId: 'infura-project-id', ...rest, }); try {