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  }