Skip to content

Commit

Permalink
Add hooks test
Browse files Browse the repository at this point in the history
  • Loading branch information
ulbqb committed Mar 7, 2024
1 parent 88b4ce0 commit 42c0c60
Show file tree
Hide file tree
Showing 5 changed files with 84 additions and 10 deletions.
2 changes: 1 addition & 1 deletion x/foundation/keeper/internal/genesis_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ func workingPolicy() foundation.DecisionPolicy {
}

func TestImportExportGenesis(t *testing.T) {
_, keeper, _, _, _, addressCodec, ctx := setupFoundationKeeper(t, nil, nil)
_, keeper, _, _, _, addressCodec, _, ctx := setupFoundationKeeper(t, nil, nil)

bytesToString := func(addr sdk.AccAddress) string {
str, err := addressCodec.BytesToString(addr)
Expand Down
2 changes: 1 addition & 1 deletion x/foundation/keeper/internal/grpc_query_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ type FoundationTestSuite struct {
func (s *FoundationTestSuite) SetupTest() {
var encCfg moduletestutil.TestEncodingConfig
var k keeper.Keeper
s.impl, k, _, _, encCfg, _, s.ctx = setupFoundationKeeper(s.T(), nil, nil)
s.impl, k, _, _, encCfg, _, _, s.ctx = setupFoundationKeeper(s.T(), nil, nil)

queryHelper := baseapp.NewQueryServerTestHelper(s.ctx, encCfg.InterfaceRegistry)
foundation.RegisterQueryServer(queryHelper, keeper.NewQueryServer(k))
Expand Down
52 changes: 52 additions & 0 deletions x/foundation/keeper/internal/hooks_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
package internal_test

import (
"github.com/Finschia/finschia-sdk/x/foundation"
sdk "github.com/cosmos/cosmos-sdk/types"
stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
)

func (s *KeeperTestSuite) TestHooks() {
testCases := map[string]struct {
malleate func(ctx sdk.Context)
grantee sdk.AccAddress
valid bool
}{
"valid request": {
grantee: s.stranger,
valid: true,
},
"no authorization": {
grantee: s.members[0],
valid: false,
},
"not being censored": {
malleate: func(ctx sdk.Context) {
err := s.impl.UpdateCensorship(ctx, foundation.Censorship{
MsgTypeUrl: sdk.MsgTypeURL((*stakingtypes.MsgCreateValidator)(nil)),
Authority: foundation.CensorshipAuthorityUnspecified,
})
s.Require().NoError(err)
},
grantee: s.members[0],
valid: true,
},
}

for name, tc := range testCases {
s.Run(name, func() {
ctx, _ := s.ctx.CacheContext()
if tc.malleate != nil {
tc.malleate(ctx)
}

err := s.keeper.Hooks().AfterValidatorCreated(ctx, sdk.ValAddress(tc.grantee))

if tc.valid {
s.Require().NoError(err)
} else {
s.Require().Error(err)
}
})
}
}
36 changes: 29 additions & 7 deletions x/foundation/keeper/internal/keeper_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ import (
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1"
paramstypes "github.com/cosmos/cosmos-sdk/x/params/types"
stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"

"github.com/Finschia/finschia-sdk/x/foundation"
"github.com/Finschia/finschia-sdk/x/foundation/keeper"
Expand All @@ -47,7 +48,8 @@ type KeeperTestSuite struct {
keeper keeper.Keeper
impl internal.Keeper

addressCodec address.Codec
addressCodec address.Codec
valdatorCodec address.Codec

queryServer foundation.QueryServer
msgServer foundation.MsgServer
Expand Down Expand Up @@ -89,6 +91,12 @@ func (s *KeeperTestSuite) bytesToString(addr sdk.AccAddress) string {
return str
}

func (s *KeeperTestSuite) bytesToValString(addr sdk.AccAddress) string {
str, err := s.valdatorCodec.BytesToString(addr)
s.Require().NoError(err)
return str
}

func (s *KeeperTestSuite) newTestMsg(addrs ...sdk.AccAddress) *testdata.TestMsg {
accAddresses := make([]string, len(addrs))

Expand All @@ -108,6 +116,7 @@ func setupFoundationKeeper(t *testing.T, balance *math.Int, addrs []sdk.AccAddre
*foundationtestutil.MockBankKeeper,
moduletestutil.TestEncodingConfig,
address.Codec,
address.Codec,
sdk.Context,
) {
key := storetypes.NewKVStoreKey(foundation.StoreKey)
Expand All @@ -126,6 +135,7 @@ func setupFoundationKeeper(t *testing.T, balance *math.Int, addrs []sdk.AccAddre
testdata.RegisterInterfaces(ir)

addressCodec := ir.SigningContext().AddressCodec()
validatorCodec := ir.SigningContext().ValidatorAddressCodec()

bapp := baseapp.NewBaseApp(
"foundation",
Expand Down Expand Up @@ -234,7 +244,7 @@ func setupFoundationKeeper(t *testing.T, balance *math.Int, addrs []sdk.AccAddre
setBalance(ctx, addr, sdk.NewCoin(sdk.DefaultBondDenom, *balance))
}

return impl, k, authKeeper, bankKeeper, encCfg, addressCodec, ctx
return impl, k, authKeeper, bankKeeper, encCfg, addressCodec, validatorCodec, ctx
}

func (s *KeeperTestSuite) SetupTest() {
Expand All @@ -251,7 +261,7 @@ func (s *KeeperTestSuite) SetupTest() {
}

var authKeeper *foundationtestutil.MockAuthKeeper
s.impl, s.keeper, authKeeper, s.bankKeeper, _, s.addressCodec, s.ctx = setupFoundationKeeper(s.T(), &s.balance, coinHolders)
s.impl, s.keeper, authKeeper, s.bankKeeper, _, s.addressCodec, s.valdatorCodec, s.ctx = setupFoundationKeeper(s.T(), &s.balance, coinHolders)

if s.deterministic {
s.ctx = s.ctx.WithBlockTime(time.Date(2023, 11, 7, 19, 32, 0, 0, time.UTC))
Expand Down Expand Up @@ -285,10 +295,16 @@ func (s *KeeperTestSuite) SetupTest() {
s.Require().NoError(err)
gs.Foundation = info

gs.Censorships = []foundation.Censorship{{
MsgTypeUrl: sdk.MsgTypeURL((*foundation.MsgWithdrawFromTreasury)(nil)),
Authority: foundation.CensorshipAuthorityFoundation,
}}
gs.Censorships = []foundation.Censorship{
{
MsgTypeUrl: sdk.MsgTypeURL((*foundation.MsgWithdrawFromTreasury)(nil)),
Authority: foundation.CensorshipAuthorityFoundation,
},
{
MsgTypeUrl: sdk.MsgTypeURL((*stakingtypes.MsgCreateValidator)(nil)),
Authority: foundation.CensorshipAuthorityFoundation,
},
}

gs.Pool = foundation.Pool{
Treasury: sdk.NewDecCoinsFromCoins(sdk.NewCoin(sdk.DefaultBondDenom, s.balance)),
Expand Down Expand Up @@ -406,6 +422,12 @@ func (s *KeeperTestSuite) SetupTest() {
// grant stranger to receive foundation treasury
err = s.impl.Grant(s.ctx, s.stranger, &foundation.ReceiveFromTreasuryAuthorization{})
s.Require().NoError(err)

// grant stranger to create validator
err = s.impl.Grant(s.ctx, s.stranger, &foundation.CreateValidatorAuthorization{
ValidatorAddress: s.bytesToValString(s.stranger),
})
s.Require().NoError(err)
}

func TestKeeperTestSuite(t *testing.T) {
Expand Down
2 changes: 1 addition & 1 deletion x/foundation/keeper/internal/proposal_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ func (s *KeeperTestSuite) TestWithdrawProposal() {
}

func TestAbortProposal(t *testing.T) {
impl, _, _, _, _, addressCodec, ctx := setupFoundationKeeper(t, nil, nil)
impl, _, _, _, _, addressCodec, _, ctx := setupFoundationKeeper(t, nil, nil)

bytesToString := func(addr sdk.AccAddress) string {
str, err := addressCodec.BytesToString(addr)
Expand Down

0 comments on commit 42c0c60

Please sign in to comment.