From 8202773716fd7a0268c5a195d16a7d22acbd3c77 Mon Sep 17 00:00:00 2001 From: Frederik Bolding Date: Wed, 29 Jan 2025 14:11:02 +0100 Subject: [PATCH] Update error message and add assertion --- packages/snaps-controllers/coverage.json | 6 +++--- .../src/multichain/MultichainRouter.test.ts | 2 +- .../snaps-controllers/src/multichain/MultichainRouter.ts | 9 +++++++-- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/packages/snaps-controllers/coverage.json b/packages/snaps-controllers/coverage.json index 9f6176ebba..7c78633b13 100644 --- a/packages/snaps-controllers/coverage.json +++ b/packages/snaps-controllers/coverage.json @@ -1,6 +1,6 @@ { - "branches": 93.26, + "branches": 93.28, "functions": 96.79, - "lines": 98.14, - "statements": 97.87 + "lines": 98.15, + "statements": 97.88 } diff --git a/packages/snaps-controllers/src/multichain/MultichainRouter.test.ts b/packages/snaps-controllers/src/multichain/MultichainRouter.test.ts index 6c7d247ced..8c858a4816 100644 --- a/packages/snaps-controllers/src/multichain/MultichainRouter.test.ts +++ b/packages/snaps-controllers/src/multichain/MultichainRouter.test.ts @@ -266,7 +266,7 @@ describe('MultichainRouter', () => { }, }, }), - ).rejects.toThrow('Invalid method parameter(s)'); + ).rejects.toThrow('No available account found for request.'); }); }); diff --git a/packages/snaps-controllers/src/multichain/MultichainRouter.ts b/packages/snaps-controllers/src/multichain/MultichainRouter.ts index 31b646099c..3cdafbdc41 100644 --- a/packages/snaps-controllers/src/multichain/MultichainRouter.ts +++ b/packages/snaps-controllers/src/multichain/MultichainRouter.ts @@ -13,7 +13,7 @@ import type { CaipChainId, JsonRpcParams, } from '@metamask/utils'; -import { hasProperty, parseCaipAccountId } from '@metamask/utils'; +import { assert, hasProperty, parseCaipAccountId } from '@metamask/utils'; import { getRunnableSnaps } from '../snaps'; import type { GetAllSnaps, HandleSnapRequest } from '../snaps'; @@ -225,7 +225,9 @@ export class MultichainRouter { ); if (!selectedAccount) { - throw rpcErrors.invalidParams(); + throw rpcErrors.invalidParams({ + message: 'No available account found for request.', + }); } return selectedAccount.id; @@ -288,6 +290,9 @@ export class MultichainRouter { scope: CaipChainId; request: JsonRpcRequest; }): Promise { + // Explicitly block EVM scopes, just in case. + assert(!scope.startsWith('eip155') && !scope.startsWith('wallet:eip155')); + const { method, params } = request; // If the RPC request can be serviced by an account Snap, route it there.