From 68db52397303cfd1e8234b2cfd132ebd95393d75 Mon Sep 17 00:00:00 2001 From: jiexi Date: Wed, 2 Oct 2024 10:01:47 -0700 Subject: [PATCH] Do not assert unsupported required scopes (#27520) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** Providing unsupportable scopes in the requiredScopes param no longer causes the CAIP-25 request to fail immediately [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/27520?quickstart=1) ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** ### **Before** ### **After** ## **Pre-merge author checklist** - [ ] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- .../wallet-createSession/handler.js | 5 ---- .../wallet-createSession/handler.test.js | 30 ------------------- 2 files changed, 35 deletions(-) diff --git a/app/scripts/lib/multichain-api/wallet-createSession/handler.js b/app/scripts/lib/multichain-api/wallet-createSession/handler.js index 6cfaec85e9cd..affc03cecef2 100644 --- a/app/scripts/lib/multichain-api/wallet-createSession/handler.js +++ b/app/scripts/lib/multichain-api/wallet-createSession/handler.js @@ -71,11 +71,6 @@ export async function walletCreateSessionHandler(req, res, _next, end, hooks) { isChainIdSupported: existsNetworkClientForChainId, isChainIdSupportable: existsEip3085ForChainId, }); - // We assert if the unsupportable scopes are supported in order - // to have an appropriate error thrown for the response - assertScopesSupported(unsupportableRequiredScopes, { - isChainIdSupported: existsNetworkClientForChainId, - }); const { supportedScopes: supportedOptionalScopes, diff --git a/app/scripts/lib/multichain-api/wallet-createSession/handler.test.js b/app/scripts/lib/multichain-api/wallet-createSession/handler.test.js index 079f44311417..ef615b720f47 100644 --- a/app/scripts/lib/multichain-api/wallet-createSession/handler.test.js +++ b/app/scripts/lib/multichain-api/wallet-createSession/handler.test.js @@ -274,36 +274,6 @@ describe('wallet_createSession', () => { expect(isChainIdSupportableBody).toContain('validScopedProperties'); }); - it('asserts any unsupported required scopes', async () => { - const { handler } = createMockedHandler(); - bucketScopes.mockReturnValueOnce({ - unsupportableScopes: { - 'foo:bar': { - methods: [], - notifications: [], - }, - }, - }); - await handler(baseRequest); - - expect(assertScopesSupported).toHaveBeenNthCalledWith( - 1, - { - 'foo:bar': { - methods: [], - notifications: [], - }, - }, - expect.objectContaining({ - isChainIdSupported: expect.any(Function), - }), - ); - - const isChainIdSupportedBody = - assertScopesSupported.mock.calls[0][1].isChainIdSupported.toString(); - expect(isChainIdSupportedBody).toContain('findNetworkClientIdByChainId'); - }); - it('buckets the optional scopes', async () => { const { handler } = createMockedHandler(); validateAndFlattenScopes.mockReturnValue({