From 4e62b566e3cfd70304d534ceeb1a66532dc701f7 Mon Sep 17 00:00:00 2001 From: Loredana Date: Wed, 6 Apr 2022 20:40:06 +0300 Subject: [PATCH 1/7] x/fees - add unit tests for params & msg --- x/fees/types/msg.go | 10 +- x/fees/types/msg_test.go | 260 ++++++++++++++++++++++++++++++++++++ x/fees/types/params.go | 7 +- x/fees/types/params_test.go | 84 ++++++++++++ 4 files changed, 355 insertions(+), 6 deletions(-) create mode 100644 x/fees/types/msg_test.go create mode 100644 x/fees/types/params_test.go diff --git a/x/fees/types/msg.go b/x/fees/types/msg.go index ba0a6171d8..fd3829f1ea 100644 --- a/x/fees/types/msg.go +++ b/x/fees/types/msg.go @@ -80,9 +80,9 @@ func (msg MsgRegisterDevFeeInfo) GetSigners() []sdk.AccAddress { // NewMsgClawbackcreates new instance of MsgClawback. The dest_address may be // nil - defaulting to the funder. -func NewMsgCancelDevFeeInfo(deployer sdk.AccAddress, contract string) *MsgCancelDevFeeInfo { +func NewMsgCancelDevFeeInfo(contract common.Address, deployer sdk.AccAddress) *MsgCancelDevFeeInfo { return &MsgCancelDevFeeInfo{ - ContractAddress: contract, + ContractAddress: contract.String(), DeployerAddress: deployer.String(), } } @@ -122,13 +122,13 @@ func (msg MsgCancelDevFeeInfo) GetSigners() []sdk.AccAddress { // NewMsgUpdateDevFeeInfo creates new instance of MsgUpdateDevFeeInfo func NewMsgUpdateDevFeeInfo( + contract common.Address, deployer sdk.AccAddress, - contract string, withdraw sdk.AccAddress, ) *MsgUpdateDevFeeInfo { return &MsgUpdateDevFeeInfo{ + ContractAddress: contract.String(), DeployerAddress: deployer.String(), - ContractAddress: contract, WithdrawAddress: withdraw.String(), } } @@ -154,7 +154,7 @@ func (msg MsgUpdateDevFeeInfo) ValidateBasic() error { } if msg.DeployerAddress == msg.WithdrawAddress { - return sdkerrors.Wrapf(ErrInternalFee, "withdraw address %s must be different that deployer address %s", msg.WithdrawAddress, msg.DeployerAddress) + return sdkerrors.Wrapf(ErrInternalFee, "withdraw address must be different that deployer address: withdraw %s, deployer %s", msg.WithdrawAddress, msg.DeployerAddress) } return nil diff --git a/x/fees/types/msg_test.go b/x/fees/types/msg_test.go new file mode 100644 index 0000000000..6951571fbf --- /dev/null +++ b/x/fees/types/msg_test.go @@ -0,0 +1,260 @@ +package types + +import ( + "testing" + + "github.com/stretchr/testify/suite" + + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/tharsis/ethermint/tests" + + "github.com/ethereum/go-ethereum/crypto" +) + +type MsgsTestSuite struct { + suite.Suite +} + +func TestMsgsTestSuite(t *testing.T) { + suite.Run(t, new(MsgsTestSuite)) +} + +func (suite *MsgsTestSuite) TestMsgRegisterDevFeeInfoGetters() { + msgInvalid := MsgRegisterDevFeeInfo{} + deployer := tests.GenerateAddress() + contract := crypto.CreateAddress(deployer, 1) + msg := NewMsgRegisterDevFeeInfo( + contract, + sdk.AccAddress(deployer.Bytes()), + sdk.AccAddress(deployer.Bytes()), + []uint64{1}, + ) + suite.Require().Equal(RouterKey, msg.Route()) + suite.Require().Equal(TypeMsgRegisterDevFeeInfo, msg.Type()) + suite.Require().NotNil(msgInvalid.GetSignBytes()) + suite.Require().Nil(msgInvalid.GetSigners()) + suite.Require().NotNil(msg.GetSigners()) +} + +func (suite *MsgsTestSuite) TestMsgRegisterDevFeeInfoNew() { + deployer := tests.GenerateAddress() + deployerStr := sdk.AccAddress(deployer.Bytes()).String() + contract := crypto.CreateAddress(deployer, 1) + testCases := []struct { + msg string + contract string + deployer string + withdraw string + nonces []uint64 + expectPass bool + }{ + { + "msg register contract - pass", + contract.String(), + deployerStr, + deployerStr, + []uint64{1}, + true, + }, + { + "msg register contract empty withdraw - pass", + contract.String(), + deployerStr, + deployerStr, + []uint64{1}, + true, + }, + { + "invalid contract address", + "", + deployerStr, + deployerStr, + []uint64{1}, + false, + }, + { + "invalid deployer address", + contract.String(), + "", + deployerStr, + []uint64{1}, + false, + }, + { + "invalid withdraw address", + contract.String(), + deployerStr, + "withdraw", + []uint64{1}, + false, + }, + { + "invalid nonces", + contract.String(), + deployerStr, + deployerStr, + []uint64{}, + false, + }, + } + + for i, tc := range testCases { + tx := MsgRegisterDevFeeInfo{ + ContractAddress: tc.contract, + DeployerAddress: tc.deployer, + WithdrawAddress: tc.withdraw, + Nonces: tc.nonces, + } + err := tx.ValidateBasic() + + if tc.expectPass { + suite.Require().NoError(err, "valid test %d failed: %s, %v", i, tc.msg) + } else { + suite.Require().Error(err, "invalid test %d passed: %s, %v", i, tc.msg) + suite.Require().Contains(err.Error(), tc.msg) + } + } +} + +func (suite *MsgsTestSuite) TestMsgCancelDevFeeInfoGetters() { + msgInvalid := MsgCancelDevFeeInfo{} + deployer := tests.GenerateAddress() + contract := crypto.CreateAddress(deployer, 1) + msg := NewMsgCancelDevFeeInfo( + contract, + sdk.AccAddress(deployer.Bytes()), + ) + suite.Require().Equal(RouterKey, msg.Route()) + suite.Require().Equal(TypeMsgCancelDevFeeInfo, msg.Type()) + suite.Require().NotNil(msgInvalid.GetSignBytes()) + suite.Require().Nil(msgInvalid.GetSigners()) + suite.Require().NotNil(msg.GetSigners()) +} + +func (suite *MsgsTestSuite) TestMsgCancelDevFeeInfoNew() { + deployer := tests.GenerateAddress() + deployerStr := sdk.AccAddress(deployer.Bytes()).String() + contract := crypto.CreateAddress(deployer, 1) + testCases := []struct { + msg string + contract string + deployer string + expectPass bool + }{ + { + "msg cancel contract fee - pass", + contract.String(), + deployerStr, + true, + }, + { + "invalid contract address", + "", + deployerStr, + false, + }, + { + "invalid deployer address", + contract.String(), + "", + false, + }, + } + + for i, tc := range testCases { + tx := MsgCancelDevFeeInfo{ + ContractAddress: tc.contract, + DeployerAddress: tc.deployer, + } + err := tx.ValidateBasic() + + if tc.expectPass { + suite.Require().NoError(err, "valid test %d failed: %s, %v", i, tc.msg) + } else { + suite.Require().Error(err, "invalid test %d passed: %s, %v", i, tc.msg) + suite.Require().Contains(err.Error(), tc.msg) + } + } +} + +func (suite *MsgsTestSuite) TestMsgUpdateDevFeeInfoGetters() { + msgInvalid := MsgUpdateDevFeeInfo{} + deployer := tests.GenerateAddress() + contract := crypto.CreateAddress(deployer, 1) + msg := NewMsgUpdateDevFeeInfo( + contract, + sdk.AccAddress(deployer.Bytes()), + sdk.AccAddress(deployer.Bytes()), + ) + suite.Require().Equal(RouterKey, msg.Route()) + suite.Require().Equal(TypeMsgUpdateDevFeeInfo, msg.Type()) + suite.Require().NotNil(msgInvalid.GetSignBytes()) + suite.Require().Nil(msgInvalid.GetSigners()) + suite.Require().NotNil(msg.GetSigners()) +} + +func (suite *MsgsTestSuite) TestMsgUpdateDevFeeInfoNew() { + deployer := tests.GenerateAddress() + deployerStr := sdk.AccAddress(deployer.Bytes()).String() + withdrawStr := sdk.AccAddress(tests.GenerateAddress().Bytes()).String() + contract := crypto.CreateAddress(deployer, 1) + testCases := []struct { + msg string + contract string + deployer string + withdraw string + expectPass bool + }{ + { + "msg update fee info - pass", + contract.String(), + deployerStr, + withdrawStr, + true, + }, + { + "invalid contract address", + "", + deployerStr, + deployerStr, + false, + }, + { + "invalid deployer address", + contract.String(), + "", + deployerStr, + false, + }, + { + "invalid withdraw address", + contract.String(), + deployerStr, + "withdraw", + false, + }, + { + "withdraw address must be different that deployer", + contract.String(), + deployerStr, + deployerStr, + false, + }, + } + + for i, tc := range testCases { + tx := MsgUpdateDevFeeInfo{ + ContractAddress: tc.contract, + DeployerAddress: tc.deployer, + WithdrawAddress: tc.withdraw, + } + err := tx.ValidateBasic() + + if tc.expectPass { + suite.Require().NoError(err, "valid test %d failed: %s, %v", i, tc.msg) + } else { + suite.Require().Error(err, "invalid test %d passed: %s, %v", i, tc.msg) + suite.Require().Contains(err.Error(), tc.msg) + } + } +} diff --git a/x/fees/types/params.go b/x/fees/types/params.go index 8497d5682a..6791c0765e 100644 --- a/x/fees/types/params.go +++ b/x/fees/types/params.go @@ -63,10 +63,15 @@ func validateBool(i interface{}) error { func validateShares(i interface{}) error { v, ok := i.(sdk.Dec) + if !ok { return fmt.Errorf("invalid parameter type: %T", i) } + if v.IsNil() { + return fmt.Errorf("invalid parameter: nil") + } + if v.IsNegative() { return fmt.Errorf("value cannot be negative: %T", i) } @@ -89,7 +94,7 @@ func (p Params) Validate() error { return err } if p.DeveloperShares.Add(p.ValidatorShares).GT(sdk.OneDec()) { - return fmt.Errorf("total shares cannot be greater than 1: %T + %T", p.DeveloperShares, p.ValidatorShares) + return fmt.Errorf("total shares cannot be greater than 1: %#v + %#v", p.DeveloperShares, p.ValidatorShares) } return nil diff --git a/x/fees/types/params_test.go b/x/fees/types/params_test.go new file mode 100644 index 0000000000..b8c6f464fa --- /dev/null +++ b/x/fees/types/params_test.go @@ -0,0 +1,84 @@ +package types + +import ( + "testing" + + sdk "github.com/cosmos/cosmos-sdk/types" + paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" + "github.com/stretchr/testify/suite" +) + +type ParamsTestSuite struct { + suite.Suite +} + +func TestParamsTestSuite(t *testing.T) { + suite.Run(t, new(ParamsTestSuite)) +} + +func (suite *ParamsTestSuite) TestParamKeyTable() { + suite.Require().IsType(paramtypes.KeyTable{}, ParamKeyTable()) +} + +func (suite *ParamsTestSuite) TestParamsValidate() { + devShares := sdk.NewDecWithPrec(60, 2) + validatorShares := sdk.NewDecWithPrec(40, 2) + + testCases := []struct { + name string + params Params + expError bool + }{ + {"default", DefaultParams(), false}, + { + "valid: enabled", + NewParams(true, devShares, validatorShares), + false, + }, + { + "valid: disabled", + NewParams(false, devShares, validatorShares), + false, + }, + { + "valid: 100% devs", + Params{true, sdk.NewDecFromInt(sdk.NewInt(1)), sdk.NewDecFromInt(sdk.NewInt(0))}, + false, + }, + { + "empty", + Params{}, + true, + }, + { + "invalid: > 1", + Params{true, sdk.NewDecFromInt(sdk.NewInt(2)), sdk.NewDecFromInt(sdk.NewInt(0))}, + true, + }, + { + "invalid: < 0", + Params{true, sdk.NewDecFromInt(sdk.NewInt(-1)), sdk.NewDecFromInt(sdk.NewInt(0))}, + true, + }, + { + "invalid: sum > 1 ", + Params{true, sdk.NewDecFromInt(sdk.NewInt(1)), sdk.NewDecFromInt(sdk.NewInt(1))}, + true, + }, + } + + for _, tc := range testCases { + err := tc.params.Validate() + + if tc.expError { + suite.Require().Error(err, tc.name) + } else { + suite.Require().NoError(err, tc.name) + } + } +} + +func (suite *ParamsTestSuite) TestParamsValidatePriv() { + suite.Require().Error(validateBool(1)) + suite.Require().NoError(validateBool(true)) +} From 3ebf4d3fa470d661a4a3f15d4c38481929e6d083 Mon Sep 17 00:00:00 2001 From: Loredana Date: Wed, 6 Apr 2022 21:32:54 +0300 Subject: [PATCH 2/7] x/fees - add genesis unit tests --- x/fees/types/fee.go | 6 +- x/fees/types/genesis_test.go | 130 +++++++++++++++++++++++++++++++++++ 2 files changed, 134 insertions(+), 2 deletions(-) create mode 100644 x/fees/types/genesis_test.go diff --git a/x/fees/types/fee.go b/x/fees/types/fee.go index 5b7ac3f35e..dffaf23f52 100644 --- a/x/fees/types/fee.go +++ b/x/fees/types/fee.go @@ -29,8 +29,10 @@ func (i DevFeeInfo) Validate() error { return err } - if _, err := sdk.AccAddressFromBech32(i.WithdrawAddress); err != nil { - return err + if i.WithdrawAddress != "" { + if _, err := sdk.AccAddressFromBech32(i.WithdrawAddress); err != nil { + return err + } } return nil diff --git a/x/fees/types/genesis_test.go b/x/fees/types/genesis_test.go new file mode 100644 index 0000000000..efc94ffb6e --- /dev/null +++ b/x/fees/types/genesis_test.go @@ -0,0 +1,130 @@ +package types + +import ( + "testing" + + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/stretchr/testify/suite" + "github.com/tharsis/ethermint/tests" +) + +type GenesisTestSuite struct { + suite.Suite +} + +func (suite *GenesisTestSuite) SetupTest() { +} + +func TestGenesisTestSuite(t *testing.T) { + suite.Run(t, new(GenesisTestSuite)) +} + +func (suite *GenesisTestSuite) TestValidateGenesis() { + address1 := sdk.AccAddress(tests.GenerateAddress().Bytes()).String() + address2 := sdk.AccAddress(tests.GenerateAddress().Bytes()).String() + newGen := NewGenesisState(DefaultParams(), []DevFeeInfo{}) + testCases := []struct { + name string + genState *GenesisState + expPass bool + }{ + { + name: "valid genesis constructor", + genState: &newGen, + expPass: true, + }, + { + name: "default", + genState: DefaultGenesisState(), + expPass: true, + }, + { + name: "valid genesis", + genState: &GenesisState{ + Params: DefaultParams(), + DevFeeInfos: []DevFeeInfo{}, + }, + expPass: true, + }, + { + name: "valid genesis - with fee information", + genState: &GenesisState{ + Params: DefaultParams(), + DevFeeInfos: []DevFeeInfo{ + { + ContractAddress: "0xdac17f958d2ee523a2206206994597c13d831ec7", + DeployerAddress: address1, + }, + { + ContractAddress: "0xdac17f958d2ee523a2206206994597c13d831ec8", + DeployerAddress: address2, + WithdrawAddress: address2, + }, + }, + }, + expPass: true, + }, + { + name: "empty genesis", + genState: &GenesisState{}, + expPass: false, + }, + { + name: "invalid genesis - duplicated fee info", + genState: &GenesisState{ + Params: DefaultParams(), + DevFeeInfos: []DevFeeInfo{ + { + ContractAddress: "0xdac17f958d2ee523a2206206994597c13d831ec7", + DeployerAddress: address1, + }, + { + ContractAddress: "0xdac17f958d2ee523a2206206994597c13d831ec7", + DeployerAddress: address1, + }, + }, + }, + expPass: false, + }, + { + name: "invalid genesis - duplicated fee info 2", + genState: &GenesisState{ + Params: DefaultParams(), + DevFeeInfos: []DevFeeInfo{ + { + ContractAddress: "0xdac17f958d2ee523a2206206994597c13d831ec7", + DeployerAddress: address1, + }, + { + ContractAddress: "0xdac17f958d2ee523a2206206994597c13d831ec7", + DeployerAddress: address2, + }, + }, + }, + expPass: false, + }, + { + name: "invalid genesis - invalid params", + genState: &GenesisState{ + Params: DefaultParams(), + DevFeeInfos: []DevFeeInfo{ + { + ContractAddress: "0xdac17f958d2ee523a2206206994597c13d831ec7", + DeployerAddress: address1, + WithdrawAddress: "withdraw", + }, + }, + }, + expPass: false, + }, + } + + for _, tc := range testCases { + err := tc.genState.Validate() + if tc.expPass { + suite.Require().NoError(err, tc.name) + } else { + suite.Require().Error(err, tc.name) + } + } +} From 8c6159bb3ecb3e66c8bb7cedc35bc259364cfa57 Mon Sep 17 00:00:00 2001 From: Loredana Date: Wed, 6 Apr 2022 22:26:36 +0300 Subject: [PATCH 3/7] x/fees - add unit tests for types/fee --- x/fees/types/fee.go | 12 ++- x/fees/types/fee_test.go | 146 +++++++++++++++++++++++++++++++++++ x/fees/types/genesis_test.go | 40 ++++++++++ x/fees/types/msg.go | 21 +++++ x/fees/types/msg_test.go | 8 ++ 5 files changed, 225 insertions(+), 2 deletions(-) create mode 100644 x/fees/types/fee_test.go diff --git a/x/fees/types/fee.go b/x/fees/types/fee.go index dffaf23f52..5345e21f3b 100644 --- a/x/fees/types/fee.go +++ b/x/fees/types/fee.go @@ -2,6 +2,7 @@ package types import ( sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/ethereum/go-ethereum/common" ethermint "github.com/tharsis/ethermint/types" ) @@ -9,12 +10,12 @@ import ( // NewFee returns an instance of DevFeeInfo func NewDevFeeInfo( contract common.Address, - owner, + deployer, withdraw sdk.AccAddress, ) DevFeeInfo { return DevFeeInfo{ ContractAddress: contract.String(), - DeployerAddress: owner.String(), + DeployerAddress: deployer.String(), WithdrawAddress: withdraw.String(), } } @@ -25,6 +26,13 @@ func (i DevFeeInfo) Validate() error { return err } + if ethermint.IsZeroAddress(i.ContractAddress) { + return sdkerrors.Wrapf( + sdkerrors.ErrInvalidAddress, "address must not be empty %s", + i.ContractAddress, + ) + } + if _, err := sdk.AccAddressFromBech32(i.DeployerAddress); err != nil { return err } diff --git a/x/fees/types/fee_test.go b/x/fees/types/fee_test.go new file mode 100644 index 0000000000..0a124edb7c --- /dev/null +++ b/x/fees/types/fee_test.go @@ -0,0 +1,146 @@ +package types + +import ( + "testing" + + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/ethereum/go-ethereum/common" + "github.com/stretchr/testify/suite" + + "github.com/tharsis/ethermint/tests" +) + +type FeeTestSuite struct { + suite.Suite +} + +func TestFeeSuite(t *testing.T) { + suite.Run(t, new(FeeTestSuite)) +} + +func (suite *FeeTestSuite) TestDevFeeInfoNew() { + address1 := sdk.AccAddress(tests.GenerateAddress().Bytes()) + address2 := sdk.AccAddress(tests.GenerateAddress().Bytes()) + testCases := []struct { + name string + contract common.Address + deployer sdk.AccAddress + withdraw sdk.AccAddress + expectPass bool + }{ + { + "Create fee info - pass", + tests.GenerateAddress(), + address1, + address2, + true, + }, + { + "Create fee info, omit withdraw - pass", + tests.GenerateAddress(), + address1, + nil, + true, + }, + { + "Create fee info - invalid contract address", + common.Address{}, + address1, + address2, + false, + }, + { + "Create fee info - invalid deployer address", + tests.GenerateAddress(), + sdk.AccAddress{}, + address2, + false, + }, + } + + for _, tc := range testCases { + i := NewDevFeeInfo(tc.contract, tc.deployer, tc.withdraw) + err := i.Validate() + + if tc.expectPass { + suite.Require().NoError(err, tc.name) + } else { + suite.Require().Error(err, tc.name) + } + } +} + +func (suite *FeeTestSuite) TestFee() { + address1 := sdk.AccAddress(tests.GenerateAddress().Bytes()).String() + address2 := sdk.AccAddress(tests.GenerateAddress().Bytes()).String() + testCases := []struct { + msg string + feeInfo DevFeeInfo + expectPass bool + }{ + { + "Create fee info - pass", + DevFeeInfo{ + tests.GenerateAddress().String(), + address1, + address2, + }, + true, + }, + { + "Create fee info - invalid contract address (not hex)", + DevFeeInfo{ + "0x5dCA2483280D9727c80b5518faC4556617fb19ZZ", + address1, + address2, + }, + false, + }, + { + "Create fee info - invalid contract address (invalid length 1)", + DevFeeInfo{ + "0x5dCA2483280D9727c80b5518faC4556617fb19", + address1, + address2, + }, + false, + }, + { + "Create fee info - invalid contract address (invalid length 2)", + DevFeeInfo{ + "0x5dCA2483280D9727c80b5518faC4556617fb194FFF", + address1, + address2, + }, + false, + }, + { + "Create fee info - invalid deployer address", + DevFeeInfo{ + tests.GenerateAddress().String(), + "evmos14mq5c8yn9jx295ahaxye2f0xw3tlell0lt542Z", + address2, + }, + false, + }, + { + "Create fee info - invalid withdraw address", + DevFeeInfo{ + tests.GenerateAddress().String(), + address1, + "evmos14mq5c8yn9jx295ahaxye2f0xw3tlell0lt542Z", + }, + false, + }, + } + + for _, tc := range testCases { + err := tc.feeInfo.Validate() + + if tc.expectPass { + suite.Require().NoError(err, tc.msg) + } else { + suite.Require().Error(err, tc.msg) + } + } +} diff --git a/x/fees/types/genesis_test.go b/x/fees/types/genesis_test.go index efc94ffb6e..b3fff271fb 100644 --- a/x/fees/types/genesis_test.go +++ b/x/fees/types/genesis_test.go @@ -103,6 +103,46 @@ func (suite *GenesisTestSuite) TestValidateGenesis() { }, expPass: false, }, + { + name: "invalid genesis - invalid contract address", + genState: &GenesisState{ + Params: DefaultParams(), + DevFeeInfos: []DevFeeInfo{ + { + ContractAddress: address1, + DeployerAddress: address1, + }, + }, + }, + expPass: false, + }, + { + name: "invalid genesis - invalid deployer address", + genState: &GenesisState{ + Params: DefaultParams(), + DevFeeInfos: []DevFeeInfo{ + { + ContractAddress: "0xdac17f958d2ee523a2206206994597c13d831ec7", + DeployerAddress: "0xdac17f958d2ee523a2206206994597c13d831ec7", + }, + }, + }, + expPass: false, + }, + { + name: "invalid genesis - invalid withdraw address", + genState: &GenesisState{ + Params: DefaultParams(), + DevFeeInfos: []DevFeeInfo{ + { + ContractAddress: "0xdac17f958d2ee523a2206206994597c13d831ec7", + DeployerAddress: address1, + WithdrawAddress: "0xdac17f958d2ee523a2206206994597c13d831ec7", + }, + }, + }, + expPass: false, + }, { name: "invalid genesis - invalid params", genState: &GenesisState{ diff --git a/x/fees/types/msg.go b/x/fees/types/msg.go index fd3829f1ea..ce32f54309 100644 --- a/x/fees/types/msg.go +++ b/x/fees/types/msg.go @@ -50,6 +50,13 @@ func (msg MsgRegisterDevFeeInfo) ValidateBasic() error { return sdkerrors.Wrapf(err, "invalid contract address %s", msg.ContractAddress) } + if ethermint.IsZeroAddress(msg.ContractAddress) { + return sdkerrors.Wrapf( + sdkerrors.ErrInvalidAddress, "address must not be empty %s", + msg.ContractAddress, + ) + } + // WithdrawAddress can be omitted and it will default to DeployerAddress if msg.WithdrawAddress != "" { if _, err := sdk.AccAddressFromBech32(msg.WithdrawAddress); err != nil { @@ -103,6 +110,13 @@ func (msg MsgCancelDevFeeInfo) ValidateBasic() error { return sdkerrors.Wrapf(err, "invalid contract address %s", msg.ContractAddress) } + if ethermint.IsZeroAddress(msg.ContractAddress) { + return sdkerrors.Wrapf( + sdkerrors.ErrInvalidAddress, "address must not be empty %s", + msg.ContractAddress, + ) + } + return nil } @@ -149,6 +163,13 @@ func (msg MsgUpdateDevFeeInfo) ValidateBasic() error { return sdkerrors.Wrapf(err, "invalid contract address %s", msg.ContractAddress) } + if ethermint.IsZeroAddress(msg.ContractAddress) { + return sdkerrors.Wrapf( + sdkerrors.ErrInvalidAddress, "address must not be empty %s", + msg.ContractAddress, + ) + } + if _, err := sdk.AccAddressFromBech32(msg.WithdrawAddress); err != nil { return sdkerrors.Wrapf(err, "invalid withdraw address %s", msg.WithdrawAddress) } diff --git a/x/fees/types/msg_test.go b/x/fees/types/msg_test.go index 6951571fbf..5433438625 100644 --- a/x/fees/types/msg_test.go +++ b/x/fees/types/msg_test.go @@ -72,6 +72,14 @@ func (suite *MsgsTestSuite) TestMsgRegisterDevFeeInfoNew() { []uint64{1}, false, }, + { + "address must not be empty", + "0x0000000000000000000000000000000000000000", + deployerStr, + deployerStr, + []uint64{1}, + false, + }, { "invalid deployer address", contract.String(), From f95cdbf8885db473ca46d9666bbe5455c850106d Mon Sep 17 00:00:00 2001 From: Loredana Date: Wed, 6 Apr 2022 22:55:31 +0300 Subject: [PATCH 4/7] x/fees - 0 address unit test --- x/fees/types/msg_test.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/x/fees/types/msg_test.go b/x/fees/types/msg_test.go index 5433438625..2e2778d890 100644 --- a/x/fees/types/msg_test.go +++ b/x/fees/types/msg_test.go @@ -161,6 +161,12 @@ func (suite *MsgsTestSuite) TestMsgCancelDevFeeInfoNew() { deployerStr, false, }, + { + "address must not be empty", + "0x0000000000000000000000000000000000000000", + deployerStr, + false, + }, { "invalid deployer address", contract.String(), @@ -224,7 +230,14 @@ func (suite *MsgsTestSuite) TestMsgUpdateDevFeeInfoNew() { "invalid contract address", "", deployerStr, + withdrawStr, + false, + }, + { + "address must not be empty", + "0x0000000000000000000000000000000000000000", deployerStr, + withdrawStr, false, }, { From 2d6e8adaaac4e96b2082d393ca58ecd9e6aa5480 Mon Sep 17 00:00:00 2001 From: Loredana Date: Thu, 7 Apr 2022 01:33:34 +0300 Subject: [PATCH 5/7] x/fees - testing setup changes (PR review) https://github.com/tharsis/evmos/pull/464#pullrequestreview-934069562 --- x/fees/types/fee_test.go | 48 ++++++++------- x/fees/types/genesis_test.go | 37 +++++++----- x/fees/types/msg_test.go | 113 ++++++++++++++++++----------------- x/fees/types/params.go | 2 +- x/fees/types/params_test.go | 33 ++++------ 5 files changed, 121 insertions(+), 112 deletions(-) diff --git a/x/fees/types/fee_test.go b/x/fees/types/fee_test.go index 0a124edb7c..bddcd84be7 100644 --- a/x/fees/types/fee_test.go +++ b/x/fees/types/fee_test.go @@ -5,6 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/ethereum/go-ethereum/common" + "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" "github.com/tharsis/ethermint/tests" @@ -12,15 +13,24 @@ import ( type FeeTestSuite struct { suite.Suite + address1 sdk.AccAddress + address2 sdk.AccAddress } func TestFeeSuite(t *testing.T) { suite.Run(t, new(FeeTestSuite)) } +func (suite *FeeTestSuite) SetupTest() { + suite.DoSetupTest(suite.T()) +} + +func (suite *FeeTestSuite) DoSetupTest(t require.TestingT) { + suite.address1 = sdk.AccAddress(tests.GenerateAddress().Bytes()) + suite.address2 = sdk.AccAddress(tests.GenerateAddress().Bytes()) +} + func (suite *FeeTestSuite) TestDevFeeInfoNew() { - address1 := sdk.AccAddress(tests.GenerateAddress().Bytes()) - address2 := sdk.AccAddress(tests.GenerateAddress().Bytes()) testCases := []struct { name string contract common.Address @@ -31,29 +41,29 @@ func (suite *FeeTestSuite) TestDevFeeInfoNew() { { "Create fee info - pass", tests.GenerateAddress(), - address1, - address2, + suite.address1, + suite.address2, true, }, { "Create fee info, omit withdraw - pass", tests.GenerateAddress(), - address1, + suite.address1, nil, true, }, { "Create fee info - invalid contract address", common.Address{}, - address1, - address2, + suite.address1, + suite.address2, false, }, { "Create fee info - invalid deployer address", tests.GenerateAddress(), sdk.AccAddress{}, - address2, + suite.address2, false, }, } @@ -71,8 +81,6 @@ func (suite *FeeTestSuite) TestDevFeeInfoNew() { } func (suite *FeeTestSuite) TestFee() { - address1 := sdk.AccAddress(tests.GenerateAddress().Bytes()).String() - address2 := sdk.AccAddress(tests.GenerateAddress().Bytes()).String() testCases := []struct { msg string feeInfo DevFeeInfo @@ -82,8 +90,8 @@ func (suite *FeeTestSuite) TestFee() { "Create fee info - pass", DevFeeInfo{ tests.GenerateAddress().String(), - address1, - address2, + suite.address1.String(), + suite.address2.String(), }, true, }, @@ -91,8 +99,8 @@ func (suite *FeeTestSuite) TestFee() { "Create fee info - invalid contract address (not hex)", DevFeeInfo{ "0x5dCA2483280D9727c80b5518faC4556617fb19ZZ", - address1, - address2, + suite.address1.String(), + suite.address2.String(), }, false, }, @@ -100,8 +108,8 @@ func (suite *FeeTestSuite) TestFee() { "Create fee info - invalid contract address (invalid length 1)", DevFeeInfo{ "0x5dCA2483280D9727c80b5518faC4556617fb19", - address1, - address2, + suite.address1.String(), + suite.address2.String(), }, false, }, @@ -109,8 +117,8 @@ func (suite *FeeTestSuite) TestFee() { "Create fee info - invalid contract address (invalid length 2)", DevFeeInfo{ "0x5dCA2483280D9727c80b5518faC4556617fb194FFF", - address1, - address2, + suite.address1.String(), + suite.address2.String(), }, false, }, @@ -119,7 +127,7 @@ func (suite *FeeTestSuite) TestFee() { DevFeeInfo{ tests.GenerateAddress().String(), "evmos14mq5c8yn9jx295ahaxye2f0xw3tlell0lt542Z", - address2, + suite.address2.String(), }, false, }, @@ -127,7 +135,7 @@ func (suite *FeeTestSuite) TestFee() { "Create fee info - invalid withdraw address", DevFeeInfo{ tests.GenerateAddress().String(), - address1, + suite.address1.String(), "evmos14mq5c8yn9jx295ahaxye2f0xw3tlell0lt542Z", }, false, diff --git a/x/fees/types/genesis_test.go b/x/fees/types/genesis_test.go index b3fff271fb..499047d677 100644 --- a/x/fees/types/genesis_test.go +++ b/x/fees/types/genesis_test.go @@ -4,24 +4,31 @@ import ( "testing" sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" "github.com/tharsis/ethermint/tests" ) type GenesisTestSuite struct { suite.Suite + address1 string + address2 string +} + +func TestGenesisTestSuite(t *testing.T) { + suite.Run(t, new(GenesisTestSuite)) } func (suite *GenesisTestSuite) SetupTest() { + suite.DoSetupTest(suite.T()) } -func TestGenesisTestSuite(t *testing.T) { - suite.Run(t, new(GenesisTestSuite)) +func (suite *GenesisTestSuite) DoSetupTest(t require.TestingT) { + suite.address1 = sdk.AccAddress(tests.GenerateAddress().Bytes()).String() + suite.address2 = sdk.AccAddress(tests.GenerateAddress().Bytes()).String() } func (suite *GenesisTestSuite) TestValidateGenesis() { - address1 := sdk.AccAddress(tests.GenerateAddress().Bytes()).String() - address2 := sdk.AccAddress(tests.GenerateAddress().Bytes()).String() newGen := NewGenesisState(DefaultParams(), []DevFeeInfo{}) testCases := []struct { name string @@ -53,12 +60,12 @@ func (suite *GenesisTestSuite) TestValidateGenesis() { DevFeeInfos: []DevFeeInfo{ { ContractAddress: "0xdac17f958d2ee523a2206206994597c13d831ec7", - DeployerAddress: address1, + DeployerAddress: suite.address1, }, { ContractAddress: "0xdac17f958d2ee523a2206206994597c13d831ec8", - DeployerAddress: address2, - WithdrawAddress: address2, + DeployerAddress: suite.address2, + WithdrawAddress: suite.address2, }, }, }, @@ -76,11 +83,11 @@ func (suite *GenesisTestSuite) TestValidateGenesis() { DevFeeInfos: []DevFeeInfo{ { ContractAddress: "0xdac17f958d2ee523a2206206994597c13d831ec7", - DeployerAddress: address1, + DeployerAddress: suite.address1, }, { ContractAddress: "0xdac17f958d2ee523a2206206994597c13d831ec7", - DeployerAddress: address1, + DeployerAddress: suite.address1, }, }, }, @@ -93,11 +100,11 @@ func (suite *GenesisTestSuite) TestValidateGenesis() { DevFeeInfos: []DevFeeInfo{ { ContractAddress: "0xdac17f958d2ee523a2206206994597c13d831ec7", - DeployerAddress: address1, + DeployerAddress: suite.address1, }, { ContractAddress: "0xdac17f958d2ee523a2206206994597c13d831ec7", - DeployerAddress: address2, + DeployerAddress: suite.address2, }, }, }, @@ -109,8 +116,8 @@ func (suite *GenesisTestSuite) TestValidateGenesis() { Params: DefaultParams(), DevFeeInfos: []DevFeeInfo{ { - ContractAddress: address1, - DeployerAddress: address1, + ContractAddress: suite.address1, + DeployerAddress: suite.address1, }, }, }, @@ -136,7 +143,7 @@ func (suite *GenesisTestSuite) TestValidateGenesis() { DevFeeInfos: []DevFeeInfo{ { ContractAddress: "0xdac17f958d2ee523a2206206994597c13d831ec7", - DeployerAddress: address1, + DeployerAddress: suite.address1, WithdrawAddress: "0xdac17f958d2ee523a2206206994597c13d831ec7", }, }, @@ -150,7 +157,7 @@ func (suite *GenesisTestSuite) TestValidateGenesis() { DevFeeInfos: []DevFeeInfo{ { ContractAddress: "0xdac17f958d2ee523a2206206994597c13d831ec7", - DeployerAddress: address1, + DeployerAddress: suite.address1, WithdrawAddress: "withdraw", }, }, diff --git a/x/fees/types/msg_test.go b/x/fees/types/msg_test.go index 2e2778d890..389c7fc9a7 100644 --- a/x/fees/types/msg_test.go +++ b/x/fees/types/msg_test.go @@ -3,30 +3,44 @@ package types import ( "testing" + "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/tharsis/ethermint/tests" + "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/crypto" ) type MsgsTestSuite struct { suite.Suite + contract common.Address + deployer sdk.AccAddress + deployerStr string } func TestMsgsTestSuite(t *testing.T) { suite.Run(t, new(MsgsTestSuite)) } +func (suite *MsgsTestSuite) SetupTest() { + suite.DoSetupTest(suite.T()) +} + +func (suite *MsgsTestSuite) DoSetupTest(t require.TestingT) { + deployer := tests.GenerateAddress() + suite.contract = crypto.CreateAddress(deployer, 1) + suite.deployer = sdk.AccAddress(deployer.Bytes()) + suite.deployerStr = suite.deployer.String() +} + func (suite *MsgsTestSuite) TestMsgRegisterDevFeeInfoGetters() { msgInvalid := MsgRegisterDevFeeInfo{} - deployer := tests.GenerateAddress() - contract := crypto.CreateAddress(deployer, 1) msg := NewMsgRegisterDevFeeInfo( - contract, - sdk.AccAddress(deployer.Bytes()), - sdk.AccAddress(deployer.Bytes()), + suite.contract, + suite.deployer, + suite.deployer, []uint64{1}, ) suite.Require().Equal(RouterKey, msg.Route()) @@ -37,9 +51,6 @@ func (suite *MsgsTestSuite) TestMsgRegisterDevFeeInfoGetters() { } func (suite *MsgsTestSuite) TestMsgRegisterDevFeeInfoNew() { - deployer := tests.GenerateAddress() - deployerStr := sdk.AccAddress(deployer.Bytes()).String() - contract := crypto.CreateAddress(deployer, 1) testCases := []struct { msg string contract string @@ -50,57 +61,57 @@ func (suite *MsgsTestSuite) TestMsgRegisterDevFeeInfoNew() { }{ { "msg register contract - pass", - contract.String(), - deployerStr, - deployerStr, + suite.contract.String(), + suite.deployerStr, + suite.deployerStr, []uint64{1}, true, }, { "msg register contract empty withdraw - pass", - contract.String(), - deployerStr, - deployerStr, + suite.contract.String(), + suite.deployerStr, + suite.deployerStr, []uint64{1}, true, }, { "invalid contract address", "", - deployerStr, - deployerStr, + suite.deployerStr, + suite.deployerStr, []uint64{1}, false, }, { "address must not be empty", "0x0000000000000000000000000000000000000000", - deployerStr, - deployerStr, + suite.deployerStr, + suite.deployerStr, []uint64{1}, false, }, { "invalid deployer address", - contract.String(), + suite.contract.String(), "", - deployerStr, + suite.deployerStr, []uint64{1}, false, }, { "invalid withdraw address", - contract.String(), - deployerStr, + suite.contract.String(), + suite.deployerStr, "withdraw", []uint64{1}, false, }, { "invalid nonces", - contract.String(), - deployerStr, - deployerStr, + suite.contract.String(), + suite.deployerStr, + suite.deployerStr, []uint64{}, false, }, @@ -126,11 +137,9 @@ func (suite *MsgsTestSuite) TestMsgRegisterDevFeeInfoNew() { func (suite *MsgsTestSuite) TestMsgCancelDevFeeInfoGetters() { msgInvalid := MsgCancelDevFeeInfo{} - deployer := tests.GenerateAddress() - contract := crypto.CreateAddress(deployer, 1) msg := NewMsgCancelDevFeeInfo( - contract, - sdk.AccAddress(deployer.Bytes()), + suite.contract, + sdk.AccAddress(suite.deployer.Bytes()), ) suite.Require().Equal(RouterKey, msg.Route()) suite.Require().Equal(TypeMsgCancelDevFeeInfo, msg.Type()) @@ -140,9 +149,6 @@ func (suite *MsgsTestSuite) TestMsgCancelDevFeeInfoGetters() { } func (suite *MsgsTestSuite) TestMsgCancelDevFeeInfoNew() { - deployer := tests.GenerateAddress() - deployerStr := sdk.AccAddress(deployer.Bytes()).String() - contract := crypto.CreateAddress(deployer, 1) testCases := []struct { msg string contract string @@ -151,25 +157,25 @@ func (suite *MsgsTestSuite) TestMsgCancelDevFeeInfoNew() { }{ { "msg cancel contract fee - pass", - contract.String(), - deployerStr, + suite.contract.String(), + suite.deployerStr, true, }, { "invalid contract address", "", - deployerStr, + suite.deployerStr, false, }, { "address must not be empty", "0x0000000000000000000000000000000000000000", - deployerStr, + suite.deployerStr, false, }, { "invalid deployer address", - contract.String(), + suite.contract.String(), "", false, }, @@ -193,12 +199,10 @@ func (suite *MsgsTestSuite) TestMsgCancelDevFeeInfoNew() { func (suite *MsgsTestSuite) TestMsgUpdateDevFeeInfoGetters() { msgInvalid := MsgUpdateDevFeeInfo{} - deployer := tests.GenerateAddress() - contract := crypto.CreateAddress(deployer, 1) msg := NewMsgUpdateDevFeeInfo( - contract, - sdk.AccAddress(deployer.Bytes()), - sdk.AccAddress(deployer.Bytes()), + suite.contract, + sdk.AccAddress(suite.deployer.Bytes()), + sdk.AccAddress(suite.deployer.Bytes()), ) suite.Require().Equal(RouterKey, msg.Route()) suite.Require().Equal(TypeMsgUpdateDevFeeInfo, msg.Type()) @@ -208,10 +212,7 @@ func (suite *MsgsTestSuite) TestMsgUpdateDevFeeInfoGetters() { } func (suite *MsgsTestSuite) TestMsgUpdateDevFeeInfoNew() { - deployer := tests.GenerateAddress() - deployerStr := sdk.AccAddress(deployer.Bytes()).String() withdrawStr := sdk.AccAddress(tests.GenerateAddress().Bytes()).String() - contract := crypto.CreateAddress(deployer, 1) testCases := []struct { msg string contract string @@ -221,44 +222,44 @@ func (suite *MsgsTestSuite) TestMsgUpdateDevFeeInfoNew() { }{ { "msg update fee info - pass", - contract.String(), - deployerStr, + suite.contract.String(), + suite.deployerStr, withdrawStr, true, }, { "invalid contract address", "", - deployerStr, + suite.deployerStr, withdrawStr, false, }, { "address must not be empty", "0x0000000000000000000000000000000000000000", - deployerStr, + suite.deployerStr, withdrawStr, false, }, { "invalid deployer address", - contract.String(), + suite.contract.String(), "", - deployerStr, + suite.deployerStr, false, }, { "invalid withdraw address", - contract.String(), - deployerStr, + suite.contract.String(), + suite.deployerStr, "withdraw", false, }, { "withdraw address must be different that deployer", - contract.String(), - deployerStr, - deployerStr, + suite.contract.String(), + suite.deployerStr, + suite.deployerStr, false, }, } diff --git a/x/fees/types/params.go b/x/fees/types/params.go index 6791c0765e..1fabd69cf1 100644 --- a/x/fees/types/params.go +++ b/x/fees/types/params.go @@ -94,7 +94,7 @@ func (p Params) Validate() error { return err } if p.DeveloperShares.Add(p.ValidatorShares).GT(sdk.OneDec()) { - return fmt.Errorf("total shares cannot be greater than 1: %#v + %#v", p.DeveloperShares, p.ValidatorShares) + return fmt.Errorf("total shares cannot be greater than 1: %#s + %#s", p.DeveloperShares, p.ValidatorShares) } return nil diff --git a/x/fees/types/params_test.go b/x/fees/types/params_test.go index b8c6f464fa..93cffc1364 100644 --- a/x/fees/types/params_test.go +++ b/x/fees/types/params_test.go @@ -4,23 +4,10 @@ import ( "testing" sdk "github.com/cosmos/cosmos-sdk/types" - paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" - "github.com/stretchr/testify/suite" + "github.com/stretchr/testify/require" ) -type ParamsTestSuite struct { - suite.Suite -} - -func TestParamsTestSuite(t *testing.T) { - suite.Run(t, new(ParamsTestSuite)) -} - -func (suite *ParamsTestSuite) TestParamKeyTable() { - suite.Require().IsType(paramtypes.KeyTable{}, ParamKeyTable()) -} - -func (suite *ParamsTestSuite) TestParamsValidate() { +func TestParamsValidate(t *testing.T) { devShares := sdk.NewDecWithPrec(60, 2) validatorShares := sdk.NewDecWithPrec(40, 2) @@ -71,14 +58,20 @@ func (suite *ParamsTestSuite) TestParamsValidate() { err := tc.params.Validate() if tc.expError { - suite.Require().Error(err, tc.name) + require.Error(t, err, tc.name) } else { - suite.Require().NoError(err, tc.name) + require.NoError(t, err, tc.name) } } } -func (suite *ParamsTestSuite) TestParamsValidatePriv() { - suite.Require().Error(validateBool(1)) - suite.Require().NoError(validateBool(true)) +func TestParamsValidateBool(t *testing.T) { + err := validateBool(true) + require.NoError(t, err) + err = validateBool(false) + require.NoError(t, err) + err = validateBool("") + require.Error(t, err) + err = validateBool(int64(123)) + require.Error(t, err) } From 79deb43e1150394cdca0ad15ac67ea1ac633c1ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Federico=20Kunze=20K=C3=BCllmer?= <31522760+fedekunze@users.noreply.github.com> Date: Thu, 7 Apr 2022 12:33:22 +0200 Subject: [PATCH 6/7] Apply suggestions from code review --- x/fees/types/fee_test.go | 4 ---- x/fees/types/genesis_test.go | 4 ---- x/fees/types/msg_test.go | 4 ---- 3 files changed, 12 deletions(-) diff --git a/x/fees/types/fee_test.go b/x/fees/types/fee_test.go index bddcd84be7..788f4f8e1e 100644 --- a/x/fees/types/fee_test.go +++ b/x/fees/types/fee_test.go @@ -22,10 +22,6 @@ func TestFeeSuite(t *testing.T) { } func (suite *FeeTestSuite) SetupTest() { - suite.DoSetupTest(suite.T()) -} - -func (suite *FeeTestSuite) DoSetupTest(t require.TestingT) { suite.address1 = sdk.AccAddress(tests.GenerateAddress().Bytes()) suite.address2 = sdk.AccAddress(tests.GenerateAddress().Bytes()) } diff --git a/x/fees/types/genesis_test.go b/x/fees/types/genesis_test.go index 499047d677..97bcf88801 100644 --- a/x/fees/types/genesis_test.go +++ b/x/fees/types/genesis_test.go @@ -20,10 +20,6 @@ func TestGenesisTestSuite(t *testing.T) { } func (suite *GenesisTestSuite) SetupTest() { - suite.DoSetupTest(suite.T()) -} - -func (suite *GenesisTestSuite) DoSetupTest(t require.TestingT) { suite.address1 = sdk.AccAddress(tests.GenerateAddress().Bytes()).String() suite.address2 = sdk.AccAddress(tests.GenerateAddress().Bytes()).String() } diff --git a/x/fees/types/msg_test.go b/x/fees/types/msg_test.go index 389c7fc9a7..390bfb6127 100644 --- a/x/fees/types/msg_test.go +++ b/x/fees/types/msg_test.go @@ -25,10 +25,6 @@ func TestMsgsTestSuite(t *testing.T) { } func (suite *MsgsTestSuite) SetupTest() { - suite.DoSetupTest(suite.T()) -} - -func (suite *MsgsTestSuite) DoSetupTest(t require.TestingT) { deployer := tests.GenerateAddress() suite.contract = crypto.CreateAddress(deployer, 1) suite.deployer = sdk.AccAddress(deployer.Bytes()) From 1f091fd38febe04bb2bb73d6759c9462d6d48cfc Mon Sep 17 00:00:00 2001 From: Loredana Date: Thu, 7 Apr 2022 14:46:41 +0300 Subject: [PATCH 7/7] x/fees tests - fix imports --- x/fees/types/fee_test.go | 1 - x/fees/types/genesis_test.go | 1 - x/fees/types/msg_test.go | 1 - 3 files changed, 3 deletions(-) diff --git a/x/fees/types/fee_test.go b/x/fees/types/fee_test.go index 788f4f8e1e..1d4c5b1a55 100644 --- a/x/fees/types/fee_test.go +++ b/x/fees/types/fee_test.go @@ -5,7 +5,6 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/ethereum/go-ethereum/common" - "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" "github.com/tharsis/ethermint/tests" diff --git a/x/fees/types/genesis_test.go b/x/fees/types/genesis_test.go index 97bcf88801..e6e2171bb8 100644 --- a/x/fees/types/genesis_test.go +++ b/x/fees/types/genesis_test.go @@ -4,7 +4,6 @@ import ( "testing" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" "github.com/tharsis/ethermint/tests" ) diff --git a/x/fees/types/msg_test.go b/x/fees/types/msg_test.go index 390bfb6127..934c079e3e 100644 --- a/x/fees/types/msg_test.go +++ b/x/fees/types/msg_test.go @@ -3,7 +3,6 @@ package types import ( "testing" - "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" sdk "github.com/cosmos/cosmos-sdk/types"