github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/evm/txs/base/common_test.go (about) 1 package base 2 3 import ( 4 "math/big" 5 "reflect" 6 "testing" 7 8 "github.com/ethereum/go-ethereum/common" 9 "github.com/fibonacci-chain/fbc/app/crypto/ethsecp256k1" 10 ethereumTx "github.com/fibonacci-chain/fbc/app/types" 11 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 12 "github.com/fibonacci-chain/fbc/x/evm/types" 13 ) 14 15 func Test_getSender(t *testing.T) { 16 chainID := "evm-3" 17 ethereumTx.SetChainId(chainID) 18 privateKey, _ := ethsecp256k1.GenerateKey() 19 sender := common.HexToAddress(privateKey.PubKey().Address().String()) 20 21 msg := types.NewMsgEthereumTx(0, &sender, big.NewInt(100), 3000000, big.NewInt(1), nil) 22 23 // parse context chain ID to big.Int 24 chainIDEpoch, _ := ethereumTx.ParseChainID(chainID) 25 // sign transaction 26 msg.Sign(chainIDEpoch, privateKey.ToECDSA()) 27 28 ctxWithFrom := sdk.Context{} 29 ctxWithFrom.SetIsCheckTx(true) 30 ctxWithFrom.SetFrom(sender.String()) 31 32 type args struct { 33 ctx *sdk.Context 34 chainIDEpoch *big.Int 35 msg *types.MsgEthereumTx 36 } 37 tests := []struct { 38 name string 39 args args 40 wantSender common.Address 41 wantErr bool 42 }{ 43 {"1. get sender from verify sig", args{ctx: &sdk.Context{}, chainIDEpoch: chainIDEpoch, msg: msg}, sender, false}, 44 {"2. get sender from context", args{ctx: &ctxWithFrom, chainIDEpoch: chainIDEpoch, msg: msg}, sender, false}, 45 } 46 for _, tt := range tests { 47 t.Run(tt.name, func(t *testing.T) { 48 gotSender, err := getSender(tt.args.ctx, tt.args.chainIDEpoch, tt.args.msg) 49 if (err != nil) != tt.wantErr { 50 t.Errorf("getSender() error = %v, wantErr %v", err, tt.wantErr) 51 return 52 } 53 if !reflect.DeepEqual(gotSender, tt.wantSender) { 54 t.Errorf("getSender() gotSender = %v, want %v", gotSender, tt.wantSender) 55 } 56 }) 57 } 58 }