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 }