package keeper_test import ( "math/big" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" ethtypes "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/params" "github.com/evmos/ethermint/x/evm/statedb" "github.com/evmos/ethermint/x/evm/types" ) func (suite *KeeperTestSuite) TestEthereumTx() { var ( err error msg *types.MsgEthereumTx signer ethtypes.Signer vmdb *statedb.StateDB chainCfg *params.ChainConfig expectedGasUsed uint64 ) testCases := []struct { name string malleate func() expErr bool }{ { "Deploy contract tx - insufficient gas", func() { msg, err = suite.createContractMsgTx( vmdb.GetNonce(suite.address), signer, chainCfg, big.NewInt(1), ) suite.Require().NoError(err) }, true, }, { "Transfer funds tx", func() { msg, _, err = newEthMsgTx( vmdb.GetNonce(suite.address), suite.ctx.BlockHeight(), suite.address, chainCfg, suite.signer, signer, ethtypes.AccessListTxType, nil, nil, ) suite.Require().NoError(err) expectedGasUsed = params.TxGas }, false, }, } for _, tc := range testCases { suite.Run(tc.name, func() { suite.SetupTest() keeperParams := suite.app.EvmKeeper.GetParams(suite.ctx) chainCfg = keeperParams.ChainConfig.EthereumConfig(suite.app.EvmKeeper.ChainID()) signer = ethtypes.LatestSignerForChainID(suite.app.EvmKeeper.ChainID()) vmdb = suite.StateDB() tc.malleate() res, err := suite.app.EvmKeeper.EthereumTx(suite.ctx, msg) if tc.expErr { suite.Require().Error(err) return } suite.Require().NoError(err) suite.Require().Equal(expectedGasUsed, res.GasUsed) suite.Require().False(res.Failed()) }) } } func (suite *KeeperTestSuite) TestUpdateParams() { testCases := []struct { name string request *types.MsgUpdateParams expectErr bool }{ { name: "fail - invalid authority", request: &types.MsgUpdateParams{Authority: "foobar"}, expectErr: true, }, { name: "pass - valid Update msg", request: &types.MsgUpdateParams{ Authority: authtypes.NewModuleAddress(govtypes.ModuleName).String(), Params: types.DefaultParams(), }, expectErr: false, }, } for _, tc := range testCases { tc := tc suite.Run("MsgUpdateParams", func() { _, err := suite.app.EvmKeeper.UpdateParams(suite.ctx, tc.request) if tc.expectErr { suite.Require().Error(err) } else { suite.Require().NoError(err) } }) } }