github.com/ChainSafe/chainbridge-core@v1.4.2/chains/evm/calls/util_test.go (about)

     1  package calls_test
     2  
     3  import (
     4  	"github.com/ChainSafe/chainbridge-core/chains/evm/calls"
     5  	mock_calls "github.com/ChainSafe/chainbridge-core/chains/evm/calls/mock"
     6  	"math/big"
     7  	"testing"
     8  
     9  	"github.com/ChainSafe/chainbridge-core/crypto/secp256k1"
    10  	"github.com/ethereum/go-ethereum"
    11  	"github.com/ethereum/go-ethereum/common"
    12  	"github.com/ethereum/go-ethereum/common/hexutil"
    13  	"github.com/golang/mock/gomock"
    14  	"github.com/stretchr/testify/suite"
    15  )
    16  
    17  type GetSolidityFunctionSigTestSuite struct {
    18  	suite.Suite
    19  	gomockController *gomock.Controller
    20  }
    21  
    22  func TestRunGetSolidityFunctionSigTestSuite(t *testing.T) {
    23  	suite.Run(t, new(GetSolidityFunctionSigTestSuite))
    24  }
    25  
    26  func (s *GetSolidityFunctionSigTestSuite) SetupSuite()    {}
    27  func (s *GetSolidityFunctionSigTestSuite) TearDownSuite() {}
    28  func (s *GetSolidityFunctionSigTestSuite) SetupTest() {
    29  	s.gomockController = gomock.NewController(s.T())
    30  }
    31  func (s *GetSolidityFunctionSigTestSuite) TearDownTest() {}
    32  
    33  func (s *GetSolidityFunctionSigTestSuite) TestReturnsValidSolidityFunctionSig() {
    34  	sig := calls.GetSolidityFunctionSig([]byte("store(bytes32)"))
    35  
    36  	s.Equal(sig, [4]byte{0x65, 0x4c, 0xf8, 0x8c})
    37  }
    38  
    39  type UtilsTestSuite struct {
    40  	suite.Suite
    41  	mockClientDispatcher *mock_calls.MockClientDispatcher
    42  	mockgasPricer        *mock_calls.MockGasPricer
    43  }
    44  
    45  func TestRunUtilsTestSuite(t *testing.T) {
    46  	suite.Run(t, new(UtilsTestSuite))
    47  }
    48  
    49  func (s *UtilsTestSuite) SetupSuite() {
    50  	gomockController := gomock.NewController(s.T())
    51  	s.mockClientDispatcher = mock_calls.NewMockClientDispatcher(gomockController)
    52  	s.mockgasPricer = mock_calls.NewMockGasPricer(gomockController)
    53  }
    54  func (s *UtilsTestSuite) TearDownSuite() {}
    55  func (s *UtilsTestSuite) SetupTest()     {}
    56  func (s *UtilsTestSuite) TearDownTest()  {}
    57  
    58  func (s *UtilsTestSuite) TestToCallArg() {
    59  	kp, err := secp256k1.GenerateKeypair()
    60  
    61  	s.Nil(err)
    62  	address := common.HexToAddress(kp.Address())
    63  
    64  	msg := ethereum.CallMsg{
    65  		From:     common.Address{},
    66  		To:       &address,
    67  		Value:    big.NewInt(1),
    68  		Gas:      uint64(21000),
    69  		GasPrice: big.NewInt(3000),
    70  		Data:     []byte("test"),
    71  	}
    72  	got := calls.ToCallArg(msg)
    73  	want := map[string]interface{}{
    74  		"from":     msg.From,
    75  		"to":       msg.To,
    76  		"value":    (*hexutil.Big)(msg.Value),
    77  		"gas":      hexutil.Uint64(msg.Gas),
    78  		"gasPrice": (*hexutil.Big)(msg.GasPrice),
    79  		"data":     hexutil.Bytes(msg.Data),
    80  	}
    81  	s.Equal(want, got)
    82  }
    83  
    84  func (s *UtilsTestSuite) TestToCallArgWithEmptyMessage() {
    85  	msg := ethereum.CallMsg{}
    86  	got := calls.ToCallArg(msg)
    87  	want := map[string]interface{}{
    88  		"from": common.HexToAddress(""),
    89  		"to":   (*common.Address)(nil),
    90  	}
    91  	s.Equal(want, got)
    92  }
    93  
    94  func (s *UtilsTestSuite) TestUserAmountToWei() {
    95  	wei, err := calls.UserAmountToWei("1", big.NewInt(18))
    96  	s.Nil(err)
    97  	s.Equal(big.NewInt(1000000000000000000), wei)
    98  }