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  }