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 }