@@ -3,6 +3,8 @@ import { assert, isPlainObject } from '@metamask/utils';
33import { rpcErrors , providerErrors , errorCodes } from '.' ;
44import {
55 dummyData ,
6+ dummyDataWithCause ,
7+ dummyMessage ,
68 CUSTOM_ERROR_MESSAGE ,
79 SERVER_ERROR_CODE ,
810 CUSTOM_ERROR_CODE ,
@@ -97,6 +99,21 @@ describe('rpcErrors', () => {
9799 } ,
98100 ) ;
99101
102+ it . each ( Object . entries ( rpcErrors ) . filter ( ( [ key ] ) => key !== 'server' ) ) (
103+ '%s propagates data.cause if set' ,
104+ ( key , value ) => {
105+ const createError = value as any ;
106+ const error = createError ( {
107+ message : null ,
108+ data : Object . assign ( { } , dummyDataWithCause ) ,
109+ } ) ;
110+ // @ts -expect-error TypeScript does not like indexing into this with the key
111+ const rpcCode = errorCodes . rpc [ key ] ;
112+ expect ( error . message ) . toBe ( getMessageFromCode ( rpcCode ) ) ;
113+ expect ( error . cause . message ) . toBe ( dummyMessage ) ;
114+ } ,
115+ ) ;
116+
100117 it ( 'serializes a cause' , ( ) => {
101118 const error = rpcErrors . invalidInput ( {
102119 data : {
@@ -156,6 +173,21 @@ describe('providerErrors', () => {
156173 } ,
157174 ) ;
158175
176+ it . each ( Object . entries ( providerErrors ) . filter ( ( [ key ] ) => key !== 'custom' ) ) (
177+ '%s propagates data.cause if set' ,
178+ ( key , value ) => {
179+ const createError = value as any ;
180+ const error = createError ( {
181+ message : null ,
182+ data : Object . assign ( { } , dummyDataWithCause ) ,
183+ } ) ;
184+ // @ts -expect-error TypeScript does not like indexing into this with the key
185+ const providerCode = errorCodes . provider [ key ] ;
186+ expect ( error . message ) . toBe ( getMessageFromCode ( providerCode ) ) ;
187+ expect ( error . cause . message ) . toBe ( dummyMessage ) ;
188+ } ,
189+ ) ;
190+
159191 it ( 'custom returns appropriate value' , ( ) => {
160192 const error = providerErrors . custom ( {
161193 code : CUSTOM_ERROR_CODE ,
0 commit comments