github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/feesplit/msg_convert_test.go (about) 1 package feesplit 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/ethereum/go-ethereum/common" 8 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 9 "github.com/fibonacci-chain/fbc/x/feesplit/types" 10 "github.com/stretchr/testify/require" 11 ) 12 13 func testMustAccAddressFromBech32(addr string) sdk.AccAddress { 14 re, err := sdk.AccAddressFromBech32(addr) 15 if err != nil { 16 panic(err) 17 } 18 return re 19 } 20 21 func TestConvertRegisterFeeSplitMsg(t *testing.T) { 22 addr, err := sdk.AccAddressFromHex("B2910E22Bb23D129C02d122B77B462ceB0E89Db9") 23 require.NoError(t, err) 24 25 contractAddr := common.HexToAddress("0xA4FFCda536CC8fF1eeFe32D32EE943b9B4e70414") 26 27 testcases := []struct { 28 msgstr string 29 res types.MsgRegisterFeeSplit 30 fnCheck func(msg sdk.Msg, err error, res types.MsgRegisterFeeSplit) 31 }{ 32 { 33 msgstr: fmt.Sprintf("{\"contract_address\":\"0xA4FFCda536CC8fF1eeFe32D32EE943b9B4e70414\",\"deployer_address\":\"%s\",\"withdrawer_address\":\"%s\",\"nonces\":[2,4]}", addr.String(), addr.String()), 34 res: types.NewMsgRegisterFeeSplit(contractAddr, 35 testMustAccAddressFromBech32(addr.String()), 36 testMustAccAddressFromBech32(addr.String()), 37 []uint64{2, 4}, 38 ), 39 fnCheck: func(msg sdk.Msg, err error, res types.MsgRegisterFeeSplit) { 40 require.NoError(t, err) 41 require.Equal(t, msg.(types.MsgRegisterFeeSplit), res) 42 }, 43 }, 44 { 45 msgstr: fmt.Sprintf("{\"contract_address\":\"A4FFCda536CC8fF1eeFe32D32EE943b9B4e70414\",\"deployer_address\":\"%s\",\"withdrawer_address\":\"%s\",\"nonces\":[2]}", addr.String(), addr.String()), 46 res: types.MsgRegisterFeeSplit{ 47 ContractAddress: "A4FFCda536CC8fF1eeFe32D32EE943b9B4e70414", 48 DeployerAddress: addr.String(), 49 WithdrawerAddress: addr.String(), 50 Nonces: []uint64{2}}, 51 fnCheck: func(msg sdk.Msg, err error, res types.MsgRegisterFeeSplit) { 52 require.NoError(t, err) 53 require.Equal(t, msg.(types.MsgRegisterFeeSplit), res) 54 }, 55 }, 56 { 57 msgstr: `{"contract_address":"0xA4FFCda536CC8fF1eeFe32D32EE943b9B4e70414","deployer_address":"0xB2910E22Bb23D129C02d122B77B462ceB0E89Db9","withdrawer_address":"0xB2910E22Bb23D129C02d122B77B462ceB0E89Db9","nonces":[1,2,4]}`, 58 res: types.MsgRegisterFeeSplit{ 59 ContractAddress: "0xA4FFCda536CC8fF1eeFe32D32EE943b9B4e70414", 60 DeployerAddress: "0xB2910E22Bb23D129C02d122B77B462ceB0E89Db9", 61 WithdrawerAddress: "0xB2910E22Bb23D129C02d122B77B462ceB0E89Db9", 62 Nonces: []uint64{1, 2, 4}}, 63 fnCheck: func(msg sdk.Msg, err error, res types.MsgRegisterFeeSplit) { 64 require.NoError(t, err) 65 require.Equal(t, msg.(types.MsgRegisterFeeSplit), res) 66 }, 67 }, 68 { 69 msgstr: `{"contract_address":"0xA4FFCda536CC8fF1eeFe32D32EE943b9B4e70414","deployer_address":"B2910E22Bb23D129C02d122B77B462ceB0E89Db9","withdrawer_address":"B2910E22Bb23D129C02d122B77B462ceB0E89Db9","nonces":[1,2,4]}`, 70 res: types.MsgRegisterFeeSplit{ 71 ContractAddress: "0xA4FFCda536CC8fF1eeFe32D32EE943b9B4e70414", 72 DeployerAddress: "B2910E22Bb23D129C02d122B77B462ceB0E89Db9", 73 WithdrawerAddress: "B2910E22Bb23D129C02d122B77B462ceB0E89Db9", 74 Nonces: []uint64{1, 2, 4}}, 75 fnCheck: func(msg sdk.Msg, err error, res types.MsgRegisterFeeSplit) { 76 require.NoError(t, err) 77 require.Equal(t, msg.(types.MsgRegisterFeeSplit), res) 78 }, 79 }, 80 // error 81 { 82 msgstr: "123", 83 res: types.MsgRegisterFeeSplit{ 84 ContractAddress: "0xA4FFCda536CC8fF1eeFe32D32EE943b9B4e70414", 85 DeployerAddress: "889Fb79ac5Ec9C1Ee86Db2D3f3857Dd3D4af0C2E", 86 WithdrawerAddress: "B2910E22Bb23D129C02d122B77B462ceB0E89Db9", 87 Nonces: []uint64{1, 2, 4}}, 88 fnCheck: func(msg sdk.Msg, err error, res types.MsgRegisterFeeSplit) { 89 require.Error(t, err) 90 require.Nil(t, msg) 91 }, 92 }, 93 { 94 msgstr: `{"contract_address":"0xA4FFCda536CC8fF1eeFe32D32EE943b9B4e70414","deployer_address":"B2910E22Bb23D129C02d122B77B462ceB0E89Db9","withdrawer_address":"B2910E22Bb23D129C02d122B77B462ceB0E89Db9","nonces":[]}`, 95 res: types.MsgRegisterFeeSplit{ 96 ContractAddress: "0xA4FFCda536CC8fF1eeFe32D32EE943b9B4e70414", 97 DeployerAddress: "889Fb79ac5Ec9C1Ee86Db2D3f3857Dd3D4af0C2E", 98 WithdrawerAddress: "B2910E22Bb23D129C02d122B77B462ceB0E89Db9", 99 Nonces: []uint64{1, 2, 4}}, 100 fnCheck: func(msg sdk.Msg, err error, res types.MsgRegisterFeeSplit) { 101 require.Error(t, err) 102 require.Nil(t, msg) 103 }, 104 }, 105 { 106 msgstr: `{"contract_address":"0xA4FFCda536CC8fF1eeFe32D32EE943b9B4e70414","deployer_address":"B2910E22Bb23D129C02d122B77B462ceB0E89Db9","withdrawer_address":"B2910E22Bb23D129C02d122B77B462ceB0E89Db9","nonces":[1,2,4]}`, 107 res: types.MsgRegisterFeeSplit{ 108 ContractAddress: "0xA4FFCda536CC8fF1eeFe32D32EE943b9B4e70414", 109 DeployerAddress: "889Fb79ac5Ec9C1Ee86Db2D3f3857Dd3D4af0C2E", 110 WithdrawerAddress: "B2910E22Bb23D129C02d122B77B462ceB0E89Db9", 111 Nonces: []uint64{1, 2, 4}}, 112 fnCheck: func(msg sdk.Msg, err error, res types.MsgRegisterFeeSplit) { 113 require.Equal(t, ErrCheckSignerFail, err) 114 require.Nil(t, msg) 115 }, 116 }, 117 } 118 119 for _, ts := range testcases { 120 msg, err := ConvertRegisterFeeSplitMsg([]byte(ts.msgstr), ts.res.GetSigners()) 121 ts.fnCheck(msg, err, ts.res) 122 } 123 } 124 125 func TestConvertUpdateFeeSplitMsg(t *testing.T) { 126 addr, err := sdk.AccAddressFromHex("B2910E22Bb23D129C02d122B77B462ceB0E89Db9") 127 require.NoError(t, err) 128 129 contractAddr := common.HexToAddress("0xA4FFCda536CC8fF1eeFe32D32EE943b9B4e70414") 130 131 testcases := []struct { 132 msgstr string 133 res types.MsgUpdateFeeSplit 134 fnCheck func(msg sdk.Msg, err error, res types.MsgUpdateFeeSplit) 135 }{ 136 { 137 msgstr: fmt.Sprintf("{\"contract_address\":\"0xA4FFCda536CC8fF1eeFe32D32EE943b9B4e70414\",\"deployer_address\":\"%s\",\"withdrawer_address\":\"%s\"}", addr.String(), addr.String()), 138 res: types.NewMsgUpdateFeeSplit(contractAddr, 139 testMustAccAddressFromBech32(addr.String()), 140 testMustAccAddressFromBech32(addr.String()), 141 ), 142 fnCheck: func(msg sdk.Msg, err error, res types.MsgUpdateFeeSplit) { 143 require.NoError(t, err) 144 require.Equal(t, msg.(types.MsgUpdateFeeSplit), res) 145 }, 146 }, 147 { 148 msgstr: fmt.Sprintf("{\"contract_address\":\"A4FFCda536CC8fF1eeFe32D32EE943b9B4e70414\",\"deployer_address\":\"%s\",\"withdrawer_address\":\"%s\"}", addr.String(), addr.String()), 149 res: types.MsgUpdateFeeSplit{ 150 ContractAddress: "A4FFCda536CC8fF1eeFe32D32EE943b9B4e70414", 151 DeployerAddress: addr.String(), 152 WithdrawerAddress: addr.String(), 153 }, 154 fnCheck: func(msg sdk.Msg, err error, res types.MsgUpdateFeeSplit) { 155 require.NoError(t, err) 156 require.Equal(t, msg.(types.MsgUpdateFeeSplit), res) 157 }, 158 }, 159 { 160 msgstr: `{"contract_address":"0xA4FFCda536CC8fF1eeFe32D32EE943b9B4e70414","deployer_address":"0xB2910E22Bb23D129C02d122B77B462ceB0E89Db9","withdrawer_address":"0xB2910E22Bb23D129C02d122B77B462ceB0E89Db9"}`, 161 res: types.MsgUpdateFeeSplit{ 162 ContractAddress: "0xA4FFCda536CC8fF1eeFe32D32EE943b9B4e70414", 163 DeployerAddress: "0xB2910E22Bb23D129C02d122B77B462ceB0E89Db9", 164 WithdrawerAddress: "0xB2910E22Bb23D129C02d122B77B462ceB0E89Db9", 165 }, 166 fnCheck: func(msg sdk.Msg, err error, res types.MsgUpdateFeeSplit) { 167 require.NoError(t, err) 168 require.Equal(t, msg.(types.MsgUpdateFeeSplit), res) 169 }, 170 }, 171 { 172 msgstr: `{"contract_address":"0xA4FFCda536CC8fF1eeFe32D32EE943b9B4e70414","deployer_address":"B2910E22Bb23D129C02d122B77B462ceB0E89Db9","withdrawer_address":"B2910E22Bb23D129C02d122B77B462ceB0E89Db9"}`, 173 res: types.MsgUpdateFeeSplit{ 174 ContractAddress: "0xA4FFCda536CC8fF1eeFe32D32EE943b9B4e70414", 175 DeployerAddress: "B2910E22Bb23D129C02d122B77B462ceB0E89Db9", 176 WithdrawerAddress: "B2910E22Bb23D129C02d122B77B462ceB0E89Db9", 177 }, 178 fnCheck: func(msg sdk.Msg, err error, res types.MsgUpdateFeeSplit) { 179 require.NoError(t, err) 180 require.Equal(t, msg.(types.MsgUpdateFeeSplit), res) 181 }, 182 }, 183 // error 184 { 185 msgstr: "123", 186 res: types.MsgUpdateFeeSplit{ 187 ContractAddress: "0xA4FFCda536CC8fF1eeFe32D32EE943b9B4e70414", 188 DeployerAddress: "889Fb79ac5Ec9C1Ee86Db2D3f3857Dd3D4af0C2E", 189 WithdrawerAddress: "B2910E22Bb23D129C02d122B77B462ceB0E89Db9", 190 }, 191 fnCheck: func(msg sdk.Msg, err error, res types.MsgUpdateFeeSplit) { 192 require.Error(t, err) 193 require.Nil(t, msg) 194 }, 195 }, 196 { 197 msgstr: `{"contract_address":"0xA4FFCda536CC8fF1eeFe32D32EE943b9B4e70414","deployer_address":"B2910E22Bb23D129C02d122B77B462ceB0E89Db9","withdrawer_address":"B2910E22Bb23D129C02d122B77B462ceB0E89Db9"}`, 198 res: types.MsgUpdateFeeSplit{ 199 ContractAddress: "0xA4FFCda536CC8fF1eeFe32D32EE943b9B4e70414", 200 DeployerAddress: "889Fb79ac5Ec9C1Ee86Db2D3f3857Dd3D4af0C2E", 201 WithdrawerAddress: "B2910E22Bb23D129C02d122B77B462ceB0E89Db9", 202 }, 203 fnCheck: func(msg sdk.Msg, err error, res types.MsgUpdateFeeSplit) { 204 require.Equal(t, ErrCheckSignerFail, err) 205 require.Nil(t, msg) 206 }, 207 }, 208 } 209 210 for _, ts := range testcases { 211 msg, err := ConvertUpdateFeeSplitMsg([]byte(ts.msgstr), ts.res.GetSigners()) 212 ts.fnCheck(msg, err, ts.res) 213 } 214 } 215 216 func TestConvertCancelFeeSplitMsg(t *testing.T) { 217 addr, err := sdk.AccAddressFromHex("B2910E22Bb23D129C02d122B77B462ceB0E89Db9") 218 require.NoError(t, err) 219 220 contractAddr := common.HexToAddress("0xA4FFCda536CC8fF1eeFe32D32EE943b9B4e70414") 221 222 testcases := []struct { 223 msgstr string 224 res types.MsgCancelFeeSplit 225 fnCheck func(msg sdk.Msg, err error, res types.MsgCancelFeeSplit) 226 }{ 227 { 228 msgstr: fmt.Sprintf("{\"contract_address\":\"0xA4FFCda536CC8fF1eeFe32D32EE943b9B4e70414\",\"deployer_address\":\"%s\"}", addr.String()), 229 res: types.NewMsgCancelFeeSplit( 230 contractAddr, 231 testMustAccAddressFromBech32(addr.String()), 232 ), 233 fnCheck: func(msg sdk.Msg, err error, res types.MsgCancelFeeSplit) { 234 require.NoError(t, err) 235 require.Equal(t, msg.(types.MsgCancelFeeSplit), res) 236 }, 237 }, 238 { 239 msgstr: fmt.Sprintf("{\"contract_address\":\"A4FFCda536CC8fF1eeFe32D32EE943b9B4e70414\",\"deployer_address\":\"%s\"}", addr.String()), 240 res: types.MsgCancelFeeSplit{ 241 ContractAddress: "A4FFCda536CC8fF1eeFe32D32EE943b9B4e70414", 242 DeployerAddress: addr.String(), 243 }, 244 fnCheck: func(msg sdk.Msg, err error, res types.MsgCancelFeeSplit) { 245 require.NoError(t, err) 246 require.Equal(t, msg.(types.MsgCancelFeeSplit), res) 247 }, 248 }, 249 { 250 msgstr: `{"contract_address":"0xA4FFCda536CC8fF1eeFe32D32EE943b9B4e70414","deployer_address":"0xB2910E22Bb23D129C02d122B77B462ceB0E89Db9"}`, 251 res: types.MsgCancelFeeSplit{ 252 ContractAddress: "0xA4FFCda536CC8fF1eeFe32D32EE943b9B4e70414", 253 DeployerAddress: "0xB2910E22Bb23D129C02d122B77B462ceB0E89Db9", 254 }, 255 fnCheck: func(msg sdk.Msg, err error, res types.MsgCancelFeeSplit) { 256 require.NoError(t, err) 257 require.Equal(t, msg.(types.MsgCancelFeeSplit), res) 258 }, 259 }, 260 { 261 msgstr: `{"contract_address":"0xA4FFCda536CC8fF1eeFe32D32EE943b9B4e70414","deployer_address":"B2910E22Bb23D129C02d122B77B462ceB0E89Db9"}`, 262 res: types.MsgCancelFeeSplit{ 263 ContractAddress: "0xA4FFCda536CC8fF1eeFe32D32EE943b9B4e70414", 264 DeployerAddress: "B2910E22Bb23D129C02d122B77B462ceB0E89Db9", 265 }, 266 fnCheck: func(msg sdk.Msg, err error, res types.MsgCancelFeeSplit) { 267 require.NoError(t, err) 268 require.Equal(t, msg.(types.MsgCancelFeeSplit), res) 269 }, 270 }, 271 // error 272 { 273 msgstr: "123", 274 res: types.MsgCancelFeeSplit{ 275 ContractAddress: "0xA4FFCda536CC8fF1eeFe32D32EE943b9B4e70414", 276 DeployerAddress: "889Fb79ac5Ec9C1Ee86Db2D3f3857Dd3D4af0C2E", 277 }, 278 fnCheck: func(msg sdk.Msg, err error, res types.MsgCancelFeeSplit) { 279 require.Error(t, err) 280 require.Nil(t, msg) 281 }, 282 }, 283 { 284 msgstr: `{"contract_address":"0xA4FFCda536CC8fF1eeFe32D32EE943b9B4e70414","deployer_address":"B2910E22Bb23D129C02d122B77B462ceB0E89Db9"}`, 285 res: types.MsgCancelFeeSplit{ 286 ContractAddress: "0xA4FFCda536CC8fF1eeFe32D32EE943b9B4e70414", 287 DeployerAddress: "889Fb79ac5Ec9C1Ee86Db2D3f3857Dd3D4af0C2E", 288 }, 289 fnCheck: func(msg sdk.Msg, err error, res types.MsgCancelFeeSplit) { 290 require.Equal(t, ErrCheckSignerFail, err) 291 require.Nil(t, msg) 292 }, 293 }, 294 } 295 296 for _, ts := range testcases { 297 msg, err := ConvertCancelFeeSplitMsg([]byte(ts.msgstr), ts.res.GetSigners()) 298 ts.fnCheck(msg, err, ts.res) 299 } 300 }