diff --git a/packages/eth-json-rpc-middleware/CHANGELOG.md b/packages/eth-json-rpc-middleware/CHANGELOG.md index 3ecb72d5955..d6308cd05e7 100644 --- a/packages/eth-json-rpc-middleware/CHANGELOG.md +++ b/packages/eth-json-rpc-middleware/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Fixed + +- Include `WalletContext` in EIP-7715 requests ([#7331](https://github.com/MetaMask/core/pull/7331)) + ## [22.0.0] ### Added diff --git a/packages/eth-json-rpc-middleware/src/methods/wallet-request-execution-permissions.test.ts b/packages/eth-json-rpc-middleware/src/methods/wallet-request-execution-permissions.test.ts index 71600b8c598..d948d666c7c 100644 --- a/packages/eth-json-rpc-middleware/src/methods/wallet-request-execution-permissions.test.ts +++ b/packages/eth-json-rpc-middleware/src/methods/wallet-request-execution-permissions.test.ts @@ -68,13 +68,14 @@ describe('wallet_requestExecutionPermissions', () => { let request: JsonRpcRequest; let params: RequestExecutionPermissionsRequestParams; let processRequestExecutionPermissionsMock: jest.MockedFunction; + let context: WalletMiddlewareParams['context']; const callMethod = async () => { const handler = createWalletRequestExecutionPermissionsHandler({ processRequestExecutionPermissions: processRequestExecutionPermissionsMock, }); - return handler({ request } as WalletMiddlewareParams); + return handler({ request, context } as WalletMiddlewareParams); }; beforeEach(() => { @@ -83,6 +84,10 @@ describe('wallet_requestExecutionPermissions', () => { request = klona(REQUEST_MOCK); params = request.params as RequestExecutionPermissionsRequestParams; + context = new Map([ + ['origin', 'test-origin'], + ]) as WalletMiddlewareParams['context']; + processRequestExecutionPermissionsMock = jest.fn(); processRequestExecutionPermissionsMock.mockResolvedValue(RESULT_MOCK); }); @@ -92,6 +97,7 @@ describe('wallet_requestExecutionPermissions', () => { expect(processRequestExecutionPermissionsMock).toHaveBeenCalledWith( params, request, + context, ); }); @@ -108,6 +114,7 @@ describe('wallet_requestExecutionPermissions', () => { expect(processRequestExecutionPermissionsMock).toHaveBeenCalledWith( params, request, + context, ); }); @@ -119,6 +126,7 @@ describe('wallet_requestExecutionPermissions', () => { expect(processRequestExecutionPermissionsMock).toHaveBeenCalledWith( params, request, + context, ); }); diff --git a/packages/eth-json-rpc-middleware/src/methods/wallet-request-execution-permissions.ts b/packages/eth-json-rpc-middleware/src/methods/wallet-request-execution-permissions.ts index 20bef04a1a4..cb1c0f17f53 100644 --- a/packages/eth-json-rpc-middleware/src/methods/wallet-request-execution-permissions.ts +++ b/packages/eth-json-rpc-middleware/src/methods/wallet-request-execution-permissions.ts @@ -60,6 +60,7 @@ export type RequestExecutionPermissionsResult = Json & export type ProcessRequestExecutionPermissionsHook = ( request: RequestExecutionPermissionsRequestParams, req: JsonRpcRequest, + context: WalletMiddlewareContext, ) => Promise; /** @@ -76,7 +77,7 @@ export function createWalletRequestExecutionPermissionsHandler({ }: { processRequestExecutionPermissions?: ProcessRequestExecutionPermissionsHook; }): JsonRpcMiddleware { - return async ({ request }) => { + return async ({ request, context }) => { if (!processRequestExecutionPermissions) { throw rpcErrors.methodNotSupported( 'wallet_requestExecutionPermissions - no middleware configured', @@ -87,6 +88,6 @@ export function createWalletRequestExecutionPermissionsHandler({ validateParams(params, RequestExecutionPermissionsStruct); - return await processRequestExecutionPermissions(params, request); + return await processRequestExecutionPermissions(params, request, context); }; } diff --git a/packages/eth-json-rpc-middleware/src/methods/wallet-revoke-execution-permission.test.ts b/packages/eth-json-rpc-middleware/src/methods/wallet-revoke-execution-permission.test.ts index a2d2fa2999c..9c12a399db9 100644 --- a/packages/eth-json-rpc-middleware/src/methods/wallet-revoke-execution-permission.test.ts +++ b/packages/eth-json-rpc-middleware/src/methods/wallet-revoke-execution-permission.test.ts @@ -20,12 +20,13 @@ describe('wallet_revokeExecutionPermission', () => { let request: JsonRpcRequest; let params: RevokeExecutionPermissionRequestParams; let processRevokeExecutionPermissionMock: jest.MockedFunction; + let context: WalletMiddlewareParams['context']; const callMethod = async () => { const handler = createWalletRevokeExecutionPermissionHandler({ processRevokeExecutionPermission: processRevokeExecutionPermissionMock, }); - return handler({ request } as WalletMiddlewareParams); + return handler({ request, context } as WalletMiddlewareParams); }; beforeEach(() => { @@ -34,6 +35,10 @@ describe('wallet_revokeExecutionPermission', () => { request = klona(REQUEST_MOCK); params = request.params as RevokeExecutionPermissionRequestParams; + context = new Map([ + ['origin', 'test-origin'], + ]) as WalletMiddlewareParams['context']; + processRevokeExecutionPermissionMock = jest.fn(); processRevokeExecutionPermissionMock.mockResolvedValue({}); }); @@ -43,6 +48,7 @@ describe('wallet_revokeExecutionPermission', () => { expect(processRevokeExecutionPermissionMock).toHaveBeenCalledWith( params, request, + context, ); }); diff --git a/packages/eth-json-rpc-middleware/src/methods/wallet-revoke-execution-permission.ts b/packages/eth-json-rpc-middleware/src/methods/wallet-revoke-execution-permission.ts index 314901545db..fe2f7a6d833 100644 --- a/packages/eth-json-rpc-middleware/src/methods/wallet-revoke-execution-permission.ts +++ b/packages/eth-json-rpc-middleware/src/methods/wallet-revoke-execution-permission.ts @@ -25,6 +25,7 @@ export type RevokeExecutionPermissionRequestParams = Infer< export type ProcessRevokeExecutionPermissionHook = ( request: RevokeExecutionPermissionRequestParams, req: JsonRpcRequest, + context: WalletMiddlewareContext, ) => Promise; /** @@ -41,7 +42,7 @@ export function createWalletRevokeExecutionPermissionHandler({ }: { processRevokeExecutionPermission?: ProcessRevokeExecutionPermissionHook; }): JsonRpcMiddleware { - return async ({ request }) => { + return async ({ request, context }) => { if (!processRevokeExecutionPermission) { throw rpcErrors.methodNotSupported( 'wallet_revokeExecutionPermission - no middleware configured', @@ -52,6 +53,6 @@ export function createWalletRevokeExecutionPermissionHandler({ validateParams(params, RevokeExecutionPermissionRequestParamsStruct); - return await processRevokeExecutionPermission(params, request); + return await processRevokeExecutionPermission(params, request, context); }; }