github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/vmbridge/types/tx_test.go (about)

     1  package types
     2  
     3  import (
     4  	"testing"
     5  
     6  	sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types"
     7  	"github.com/stretchr/testify/require"
     8  )
     9  
    10  func TestMsgSendToEvm_GetSigners(t *testing.T) {
    11  	testCases := []struct {
    12  		name   string
    13  		msg    MsgSendToEvm
    14  		isErr  bool
    15  		expect []sdk.AccAddress
    16  	}{
    17  		{
    18  			name:   "normal",
    19  			msg:    MsgSendToEvm{Sender: sdk.AccAddress{0x1}.String()},
    20  			expect: []sdk.AccAddress{sdk.AccAddress{0x1}},
    21  		},
    22  		{
    23  			name:  "sender is empty",
    24  			msg:   MsgSendToEvm{},
    25  			isErr: true,
    26  		},
    27  		{
    28  			name:  "sender is error",
    29  			msg:   MsgSendToEvm{Sender: "0x1111"},
    30  			isErr: true,
    31  		},
    32  	}
    33  
    34  	for _, tc := range testCases {
    35  		t.Run(tc.name, func(tt *testing.T) {
    36  
    37  			defer func() {
    38  				r := recover()
    39  				if tc.isErr {
    40  					require.NotNil(t, r)
    41  					require.Error(tt, r.(error))
    42  				}
    43  			}()
    44  			result := tc.msg.GetSigners()
    45  			require.Equal(tt, tc.expect, result)
    46  		})
    47  	}
    48  }
    49  
    50  func TestMsgSendToEvm_GetSignBytes(t *testing.T) {
    51  	testCases := []struct {
    52  		name  string
    53  		msg   MsgSendToEvm
    54  		isErr bool
    55  	}{
    56  		{
    57  			name:  "normal",
    58  			msg:   MsgSendToEvm{Sender: sdk.AccAddress{0x1}.String(), Contract: sdk.AccAddress{0x2}.String(), Recipient: sdk.AccAddress{0x3}.String(), Amount: sdk.NewInt(1)},
    59  			isErr: true,
    60  		},
    61  		{
    62  			name:  "sender is empty",
    63  			msg:   MsgSendToEvm{Contract: sdk.AccAddress{0x2}.String(), Recipient: sdk.AccAddress{0x3}.String(), Amount: sdk.NewInt(1)},
    64  			isErr: true,
    65  		},
    66  		{
    67  			name:  "sender is error",
    68  			msg:   MsgSendToEvm{Sender: "ex111", Contract: sdk.AccAddress{0x2}.String(), Recipient: sdk.AccAddress{0x3}.String(), Amount: sdk.NewInt(1)},
    69  			isErr: true,
    70  		},
    71  		{
    72  			name:  "contract is error",
    73  			msg:   MsgSendToEvm{Sender: sdk.AccAddress{0x1}.String(), Contract: "ex111", Recipient: sdk.AccAddress{0x3}.String(), Amount: sdk.NewInt(1)},
    74  			isErr: true,
    75  		},
    76  		{
    77  			name:  "recipient is error",
    78  			msg:   MsgSendToEvm{Sender: sdk.AccAddress{0x1}.String(), Contract: sdk.AccAddress{0x2}.String(), Recipient: "ex111", Amount: sdk.NewInt(1)},
    79  			isErr: true,
    80  		},
    81  		{
    82  			name:  "amount is negative",
    83  			msg:   MsgSendToEvm{Sender: sdk.AccAddress{0x1}.String(), Contract: sdk.AccAddress{0x2}.String(), Recipient: sdk.AccAddress{0x3}.String(), Amount: sdk.NewInt(-1)},
    84  			isErr: true,
    85  		},
    86  	}
    87  
    88  	for _, tc := range testCases {
    89  		t.Run(tc.name, func(tt *testing.T) {
    90  
    91  			defer func() {
    92  				r := recover()
    93  				if tc.isErr {
    94  					require.NotNil(t, r)
    95  					require.Error(tt, r.(error))
    96  				}
    97  			}()
    98  			tc.msg.GetSignBytes()
    99  		})
   100  	}
   101  }
   102  
   103  func TestMsgSendToEvm_ValidateBasic(t *testing.T) {
   104  	wasmaAddr := sdk.AccAddress(make([]byte, 64)).String()
   105  	addr := sdk.AccAddress{0x1}.String()
   106  	errAddr := "error addr"
   107  	testCases := []struct {
   108  		name  string
   109  		msg   MsgSendToEvm
   110  		isErr bool
   111  	}{
   112  		{
   113  			name:  "normal",
   114  			msg:   MsgSendToEvm{Sender: wasmaAddr, Contract: addr, Recipient: addr, Amount: sdk.NewInt(1)},
   115  			isErr: false,
   116  		},
   117  		{
   118  			name:  "sender is empty",
   119  			msg:   MsgSendToEvm{Contract: addr, Recipient: addr, Amount: sdk.NewInt(1)},
   120  			isErr: true,
   121  		},
   122  		{
   123  			name:  "sender is error",
   124  			msg:   MsgSendToEvm{Sender: errAddr, Contract: addr, Recipient: addr, Amount: sdk.NewInt(1)},
   125  			isErr: true,
   126  		},
   127  		{
   128  			name:  "sender is not wasm addr",
   129  			msg:   MsgSendToEvm{Sender: addr, Contract: addr, Recipient: addr, Amount: sdk.NewInt(1)},
   130  			isErr: true,
   131  		},
   132  		{
   133  			name:  "contract is error",
   134  			msg:   MsgSendToEvm{Sender: wasmaAddr, Contract: errAddr, Recipient: addr, Amount: sdk.NewInt(1)},
   135  			isErr: true,
   136  		},
   137  		{
   138  			name:  "recipient is error",
   139  			msg:   MsgSendToEvm{Sender: wasmaAddr, Contract: addr, Recipient: errAddr, Amount: sdk.NewInt(1)},
   140  			isErr: true,
   141  		},
   142  		{
   143  			name:  "recipient is wasm addr",
   144  			msg:   MsgSendToEvm{Sender: wasmaAddr, Contract: addr, Recipient: wasmaAddr, Amount: sdk.NewInt(1)},
   145  			isErr: true,
   146  		},
   147  		{
   148  			name:  "contract is wasm addr ",
   149  			msg:   MsgSendToEvm{Sender: wasmaAddr, Contract: wasmaAddr, Recipient: addr, Amount: sdk.NewInt(1)},
   150  			isErr: true,
   151  		},
   152  		{
   153  			name:  "amount is negative",
   154  			msg:   MsgSendToEvm{Sender: wasmaAddr, Contract: addr, Recipient: addr, Amount: sdk.NewInt(-1)},
   155  			isErr: true,
   156  		},
   157  	}
   158  
   159  	for _, tc := range testCases {
   160  		t.Run(tc.name, func(tt *testing.T) {
   161  			if err := tc.msg.ValidateBasic(); tc.isErr {
   162  				require.Error(tt, err)
   163  			}
   164  		})
   165  	}
   166  }