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  }