github.com/status-im/status-go@v1.1.0/services/wallet/router/pathprocessor/errors_test.go (about) 1 package pathprocessor 2 3 import ( 4 "context" 5 "errors" 6 "testing" 7 8 s_errors "github.com/status-im/status-go/errors" 9 10 "github.com/stretchr/testify/require" 11 ) 12 13 func TestPlainError(t *testing.T) { 14 const errString = "plain error" 15 err := errors.New(errString) 16 17 processorNames := []string{ 18 ProcessorTransferName, 19 ProcessorTransferName, 20 ProcessorBridgeHopName, 21 ProcessorBridgeCelerName, 22 ProcessorSwapParaswapName, 23 ProcessorERC721Name, 24 ProcessorERC1155Name, 25 ProcessorENSRegisterName, 26 ProcessorENSReleaseName, 27 ProcessorENSPublicKeyName, 28 ProcessorStickersBuyName, 29 } 30 31 for _, processorName := range processorNames { 32 ppErrResp := createErrorResponse(processorName, err) 33 34 castPPErrResp := ppErrResp.(*s_errors.ErrorResponse) 35 require.NotEqual(t, s_errors.GenericErrorCode, castPPErrResp.Code) 36 require.Equal(t, errString, castPPErrResp.Details) 37 } 38 } 39 40 func TestContextErrors(t *testing.T) { 41 ppErrResp := createErrorResponse("Unknown", context.Canceled) 42 require.Equal(t, ErrContextCancelled, ppErrResp) 43 44 ppErrResp = createErrorResponse("Unknown", context.DeadlineExceeded) 45 require.Equal(t, ErrContextDeadlineExceeded, ppErrResp) 46 } 47 48 func TestErrorResponse(t *testing.T) { 49 const errString = "error response" 50 err := errors.New(errString) 51 errResp := s_errors.CreateErrorResponseFromError(err) 52 ppErrResp := createErrorResponse("Unknown", errResp) 53 54 castPPErrResp := ppErrResp.(*s_errors.ErrorResponse) 55 require.Equal(t, s_errors.GenericErrorCode, castPPErrResp.Code) 56 require.Equal(t, errString, castPPErrResp.Details) 57 } 58 59 func TestNonGenericErrorResponse(t *testing.T) { 60 errResp := &s_errors.ErrorResponse{ 61 Code: "Not Generic Code", 62 Details: "Not Generic Error Response", 63 } 64 err := s_errors.CreateErrorResponseFromError(errResp) 65 ppErrResp := createErrorResponse(ProcessorTransferName, err) 66 67 castPPErrResp := ppErrResp.(*s_errors.ErrorResponse) 68 require.Equal(t, errResp.Code, castPPErrResp.Code) 69 require.Equal(t, errResp.Details, castPPErrResp.Details) 70 } 71 72 func TestCustomErrors(t *testing.T) { 73 tests := []struct { 74 name string 75 err error 76 expected bool 77 }{ 78 { 79 name: "no error - nil", 80 err: nil, 81 expected: false, 82 }, 83 { 84 name: "not error response error", 85 err: errors.New("unknown error"), 86 expected: false, 87 }, 88 { 89 name: "not custom error", 90 err: ErrFromChainNotSupported, 91 expected: false, 92 }, 93 { 94 name: "custom error", 95 err: ErrTransferCustomError, 96 expected: true, 97 }, 98 } 99 100 for _, tt := range tests { 101 t.Run(tt.name, func(t *testing.T) { 102 require.Equal(t, tt.expected, IsCustomError(tt.err)) 103 }) 104 } 105 }