refactor(gov): remove global bech32 (#15682)
This commit is contained in:
parent
b6bc636b4d
commit
f5993b1c62
@ -8,6 +8,7 @@ import (
|
||||
"github.com/stretchr/testify/suite"
|
||||
|
||||
"github.com/cosmos/cosmos-sdk/client/flags"
|
||||
"github.com/cosmos/cosmos-sdk/codec/address"
|
||||
"github.com/cosmos/cosmos-sdk/testutil"
|
||||
clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli"
|
||||
"github.com/cosmos/cosmos-sdk/testutil/network"
|
||||
@ -56,7 +57,7 @@ func (s *DepositTestSuite) submitProposal(val *network.Validator, initialDeposit
|
||||
s.Require().NoError(s.network.WaitForNextBlock())
|
||||
|
||||
// query proposals, return the last's id
|
||||
cmd := cli.GetCmdQueryProposals()
|
||||
cmd := cli.GetCmdQueryProposals(address.NewBech32Codec("cosmos"))
|
||||
args := []string{fmt.Sprintf("--%s=json", flags.FlagOutput)}
|
||||
res, err := clitestutil.ExecTestCLICmd(val.ClientCtx, cmd, args)
|
||||
s.Require().NoError(err)
|
||||
@ -130,7 +131,7 @@ func (s *DepositTestSuite) TestQueryProposalAfterVotingPeriod() {
|
||||
proposalID := strconv.FormatUint(id, 10)
|
||||
|
||||
args := []string{fmt.Sprintf("--%s=json", flags.FlagOutput)}
|
||||
cmd := cli.GetCmdQueryProposals()
|
||||
cmd := cli.GetCmdQueryProposals(address.NewBech32Codec("cosmos"))
|
||||
_, err := clitestutil.ExecTestCLICmd(val.ClientCtx, cmd, args)
|
||||
s.Require().NoError(err)
|
||||
|
||||
|
||||
@ -5,6 +5,7 @@ import (
|
||||
"strings"
|
||||
|
||||
"github.com/cosmos/cosmos-sdk/client/flags"
|
||||
"github.com/cosmos/cosmos-sdk/codec/address"
|
||||
clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli"
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
"github.com/cosmos/cosmos-sdk/x/gov/client/cli"
|
||||
@ -305,7 +306,7 @@ func (s *E2ETestSuite) TestCmdGetProposals() {
|
||||
tc := tc
|
||||
|
||||
s.Run(tc.name, func() {
|
||||
cmd := cli.GetCmdQueryProposals()
|
||||
cmd := cli.GetCmdQueryProposals(address.NewBech32Codec("cosmos"))
|
||||
clientCtx := val.ClientCtx
|
||||
|
||||
out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, tc.args)
|
||||
@ -532,7 +533,7 @@ func (s *E2ETestSuite) TestCmdQueryVote() {
|
||||
for _, tc := range testCases {
|
||||
tc := tc
|
||||
s.Run(tc.name, func() {
|
||||
cmd := cli.GetCmdQueryVote()
|
||||
cmd := cli.GetCmdQueryVote(address.NewBech32Codec("cosmos"))
|
||||
clientCtx := val.ClientCtx
|
||||
|
||||
out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, tc.args)
|
||||
|
||||
@ -5,11 +5,11 @@ import (
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"cosmossdk.io/core/address"
|
||||
"github.com/spf13/cobra"
|
||||
|
||||
"github.com/cosmos/cosmos-sdk/client"
|
||||
"github.com/cosmos/cosmos-sdk/client/flags"
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
"github.com/cosmos/cosmos-sdk/version"
|
||||
gcutils "github.com/cosmos/cosmos-sdk/x/gov/client/utils"
|
||||
"github.com/cosmos/cosmos-sdk/x/gov/types"
|
||||
@ -17,7 +17,7 @@ import (
|
||||
)
|
||||
|
||||
// GetQueryCmd returns the cli query commands for this module
|
||||
func GetQueryCmd() *cobra.Command {
|
||||
func GetQueryCmd(ac address.Codec) *cobra.Command {
|
||||
// Group gov queries under a subcommand
|
||||
govQueryCmd := &cobra.Command{
|
||||
Use: types.ModuleName,
|
||||
@ -29,8 +29,8 @@ func GetQueryCmd() *cobra.Command {
|
||||
|
||||
govQueryCmd.AddCommand(
|
||||
GetCmdQueryProposal(),
|
||||
GetCmdQueryProposals(),
|
||||
GetCmdQueryVote(),
|
||||
GetCmdQueryProposals(ac),
|
||||
GetCmdQueryVote(ac),
|
||||
GetCmdQueryVotes(),
|
||||
GetCmdQueryParams(),
|
||||
GetCmdQueryParam(),
|
||||
@ -93,7 +93,7 @@ $ %s query gov proposal 1
|
||||
|
||||
// GetCmdQueryProposals implements a query proposals command. Command to Get
|
||||
// Proposals Information.
|
||||
func GetCmdQueryProposals() *cobra.Command {
|
||||
func GetCmdQueryProposals(ac address.Codec) *cobra.Command {
|
||||
cmd := &cobra.Command{
|
||||
Use: "proposals",
|
||||
Short: "Query proposals with optional filters",
|
||||
@ -117,14 +117,14 @@ $ %s query gov proposals --page=2 --limit=100
|
||||
var proposalStatus v1.ProposalStatus
|
||||
|
||||
if len(bechDepositorAddr) != 0 {
|
||||
_, err := sdk.AccAddressFromBech32(bechDepositorAddr)
|
||||
_, err := ac.StringToBytes(bechDepositorAddr)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
if len(bechVoterAddr) != 0 {
|
||||
_, err := sdk.AccAddressFromBech32(bechVoterAddr)
|
||||
_, err := ac.StringToBytes(bechVoterAddr)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@ -181,7 +181,7 @@ $ %s query gov proposals --page=2 --limit=100
|
||||
|
||||
// GetCmdQueryVote implements the query proposal vote command. Command to Get a
|
||||
// Vote Information.
|
||||
func GetCmdQueryVote() *cobra.Command {
|
||||
func GetCmdQueryVote(ac address.Codec) *cobra.Command {
|
||||
cmd := &cobra.Command{
|
||||
Use: "vote [proposal-id] [voter-addr]",
|
||||
Args: cobra.ExactArgs(2),
|
||||
@ -218,7 +218,7 @@ $ %s query gov vote 1 cosmos1skjwj5whet0lpe65qaq4rpq03hjxlwd9nf39lk
|
||||
return fmt.Errorf("failed to fetch proposal-id %d: %s", proposalID, err)
|
||||
}
|
||||
|
||||
voterAddr, err := sdk.AccAddressFromBech32(args[1])
|
||||
voterAddr, err := ac.StringToBytes(args[1])
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@ -4,6 +4,7 @@ import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/cosmos/cosmos-sdk/codec/address"
|
||||
clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli"
|
||||
|
||||
"github.com/cosmos/cosmos-sdk/client/flags"
|
||||
@ -214,7 +215,7 @@ func (s *CLITestSuite) TestCmdGetProposals() {
|
||||
tc := tc
|
||||
|
||||
s.Run(tc.name, func() {
|
||||
cmd := cli.GetCmdQueryProposals()
|
||||
cmd := cli.GetCmdQueryProposals(address.NewBech32Codec("cosmos"))
|
||||
cmd.SetArgs(tc.args)
|
||||
s.Require().Contains(fmt.Sprint(cmd), strings.TrimSpace(tc.expCmdOutput))
|
||||
})
|
||||
@ -374,7 +375,7 @@ func (s *CLITestSuite) TestCmdQueryVote() {
|
||||
for _, tc := range testCases {
|
||||
tc := tc
|
||||
s.Run(tc.name, func() {
|
||||
cmd := cli.GetCmdQueryVote()
|
||||
cmd := cli.GetCmdQueryVote(address.NewBech32Codec("cosmos"))
|
||||
cmd.SetArgs(tc.args)
|
||||
|
||||
if len(tc.args) != 0 {
|
||||
|
||||
@ -79,10 +79,14 @@ func setupGovKeeper(t *testing.T) (
|
||||
acctKeeper.EXPECT().GetModuleAddress(types.ModuleName).Return(govAcct).AnyTimes()
|
||||
acctKeeper.EXPECT().GetModuleAddress(disttypes.ModuleName).Return(distAcct).AnyTimes()
|
||||
acctKeeper.EXPECT().GetModuleAccount(gomock.Any(), types.ModuleName).Return(authtypes.NewEmptyModuleAccount(types.ModuleName)).AnyTimes()
|
||||
acctKeeper.EXPECT().StringToBytes(govAcct.String()).Return(govAcct, nil).AnyTimes()
|
||||
acctKeeper.EXPECT().BytesToString(govAcct).Return(govAcct.String(), nil).AnyTimes()
|
||||
|
||||
trackMockBalances(bankKeeper, distributionKeeper)
|
||||
stakingKeeper.EXPECT().TokensFromConsensusPower(ctx, gomock.Any()).DoAndReturn(func(ctx sdk.Context, power int64) math.Int {
|
||||
return sdk.TokensFromConsensusPower(power, math.NewIntFromUint64(1000000))
|
||||
}).AnyTimes()
|
||||
|
||||
stakingKeeper.EXPECT().BondDenom(ctx).Return("stake").AnyTimes()
|
||||
stakingKeeper.EXPECT().IterateBondedValidatorsByPower(gomock.Any(), gomock.Any()).AnyTimes()
|
||||
stakingKeeper.EXPECT().IterateDelegations(gomock.Any(), gomock.Any(), gomock.Any()).AnyTimes()
|
||||
|
||||
@ -30,7 +30,10 @@ func (keeper Keeper) GetDeposit(ctx sdk.Context, proposalID uint64, depositorAdd
|
||||
func (keeper Keeper) SetDeposit(ctx sdk.Context, deposit v1.Deposit) {
|
||||
store := ctx.KVStore(keeper.storeKey)
|
||||
bz := keeper.cdc.MustMarshal(&deposit)
|
||||
depositor := sdk.MustAccAddressFromBech32(deposit.Depositor)
|
||||
depositor, err := keeper.authKeeper.StringToBytes(deposit.Depositor)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
store.Set(types.DepositKey(deposit.ProposalId, depositor), bz)
|
||||
}
|
||||
@ -65,7 +68,10 @@ func (keeper Keeper) DeleteAndBurnDeposits(ctx sdk.Context, proposalID uint64) {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
depositor := sdk.MustAccAddressFromBech32(deposit.Depositor)
|
||||
depositor, err := keeper.authKeeper.StringToBytes(deposit.Depositor)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
store.Delete(types.DepositKey(proposalID, depositor))
|
||||
return false
|
||||
@ -176,7 +182,11 @@ func (keeper Keeper) ChargeDeposit(ctx sdk.Context, proposalID uint64, destAddre
|
||||
var cancellationCharges sdk.Coins
|
||||
|
||||
for _, deposit := range keeper.GetDeposits(ctx, proposalID) {
|
||||
depositerAddress := sdk.MustAccAddressFromBech32(deposit.Depositor)
|
||||
depositerAddress, err := keeper.authKeeper.StringToBytes(deposit.Depositor)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
var remainingAmount sdk.Coins
|
||||
|
||||
for _, coins := range deposit.Amount {
|
||||
@ -225,8 +235,11 @@ func (keeper Keeper) ChargeDeposit(ctx sdk.Context, proposalID uint64, destAddre
|
||||
return err
|
||||
}
|
||||
default:
|
||||
destAccAddress := sdk.MustAccAddressFromBech32(destAddress)
|
||||
err := keeper.bankKeeper.SendCoinsFromModuleToAccount(
|
||||
destAccAddress, err := keeper.authKeeper.StringToBytes(destAddress)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = keeper.bankKeeper.SendCoinsFromModuleToAccount(
|
||||
ctx, types.ModuleName, destAccAddress, cancellationCharges,
|
||||
)
|
||||
if err != nil {
|
||||
@ -243,9 +256,12 @@ func (keeper Keeper) RefundAndDeleteDeposits(ctx sdk.Context, proposalID uint64)
|
||||
store := ctx.KVStore(keeper.storeKey)
|
||||
|
||||
keeper.IterateDeposits(ctx, proposalID, func(deposit v1.Deposit) bool {
|
||||
depositor := sdk.MustAccAddressFromBech32(deposit.Depositor)
|
||||
depositor, err := keeper.authKeeper.StringToBytes(deposit.Depositor)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
err := keeper.bankKeeper.SendCoinsFromModuleToAccount(ctx, types.ModuleName, depositor, deposit.Amount)
|
||||
err = keeper.bankKeeper.SendCoinsFromModuleToAccount(ctx, types.ModuleName, depositor, deposit.Amount)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
@ -7,6 +7,7 @@ import (
|
||||
sdkmath "cosmossdk.io/math"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"github.com/cosmos/cosmos-sdk/codec/address"
|
||||
simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims"
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
|
||||
@ -35,7 +36,7 @@ func TestDeposits(t *testing.T) {
|
||||
|
||||
for _, tc := range testcases {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
govKeeper, _, bankKeeper, stakingKeeper, distKeeper, _, ctx := setupGovKeeper(t)
|
||||
govKeeper, authKeeper, bankKeeper, stakingKeeper, distKeeper, _, ctx := setupGovKeeper(t)
|
||||
trackMockBalances(bankKeeper, distKeeper)
|
||||
|
||||
// With expedited proposals the minimum deposit is higher, so we must
|
||||
@ -47,6 +48,10 @@ func TestDeposits(t *testing.T) {
|
||||
}
|
||||
|
||||
TestAddrs := simtestutil.AddTestAddrsIncremental(bankKeeper, stakingKeeper, ctx, 2, sdkmath.NewInt(10000000*depositMultiplier))
|
||||
for _, addr := range TestAddrs {
|
||||
authKeeper.EXPECT().BytesToString(addr).Return(addr.String(), nil).AnyTimes()
|
||||
authKeeper.EXPECT().StringToBytes(addr.String()).Return(addr, nil).AnyTimes()
|
||||
}
|
||||
|
||||
tp := TestProposal
|
||||
proposal, err := govKeeper.SubmitProposal(ctx, tp, "", "title", "summary", TestAddrs[0], tc.expedited)
|
||||
@ -297,10 +302,14 @@ func TestChargeDeposit(t *testing.T) {
|
||||
}
|
||||
|
||||
t.Run(testName(i), func(t *testing.T) {
|
||||
govKeeper, _, bankKeeper, stakingKeeper, _, _, ctx := setupGovKeeper(t)
|
||||
govKeeper, authKeeper, bankKeeper, stakingKeeper, _, _, ctx := setupGovKeeper(t)
|
||||
params := v1.DefaultParams()
|
||||
params.ProposalCancelRatio = tc.proposalCancelRatio
|
||||
TestAddrs := simtestutil.AddTestAddrsIncremental(bankKeeper, stakingKeeper, ctx, 2, sdk.NewInt(10000000000))
|
||||
for _, addr := range TestAddrs {
|
||||
authKeeper.EXPECT().BytesToString(addr).Return(addr.String(), nil).AnyTimes()
|
||||
authKeeper.EXPECT().StringToBytes(addr.String()).Return(addr, nil).AnyTimes()
|
||||
}
|
||||
|
||||
switch i {
|
||||
case 0:
|
||||
@ -326,10 +335,12 @@ func TestChargeDeposit(t *testing.T) {
|
||||
_, err = govKeeper.AddDeposit(ctx, proposalID, TestAddrs[0], fiveStake)
|
||||
require.NoError(t, err)
|
||||
|
||||
codec := address.NewBech32Codec("cosmos")
|
||||
// get balances of dest address
|
||||
var prevBalance sdk.Coin
|
||||
if len(params.ProposalCancelDest) != 0 {
|
||||
accAddr := sdk.MustAccAddressFromBech32(params.ProposalCancelDest)
|
||||
accAddr, err := codec.StringToBytes(params.ProposalCancelDest)
|
||||
require.NoError(t, err)
|
||||
prevBalance = bankKeeper.GetBalance(ctx, accAddr, sdk.DefaultBondDenom)
|
||||
}
|
||||
|
||||
@ -345,7 +356,8 @@ func TestChargeDeposit(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
|
||||
if len(params.ProposalCancelDest) != 0 {
|
||||
accAddr := sdk.MustAccAddressFromBech32(params.ProposalCancelDest)
|
||||
accAddr, err := codec.StringToBytes(params.ProposalCancelDest)
|
||||
require.NoError(t, err)
|
||||
newBalanceAfterCancelProposal := bankKeeper.GetBalance(ctx, accAddr, sdk.DefaultBondDenom)
|
||||
cancellationCharges := sdkmath.NewInt(0)
|
||||
for _, deposits := range allDeposits {
|
||||
|
||||
@ -67,7 +67,7 @@ func (q Keeper) Proposals(c context.Context, req *v1.QueryProposalsRequest) (*v1
|
||||
|
||||
// match voter address (if supplied)
|
||||
if len(req.Voter) > 0 {
|
||||
voter, err := sdk.AccAddressFromBech32(req.Voter)
|
||||
voter, err := q.authKeeper.StringToBytes(req.Voter)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@ -77,7 +77,7 @@ func (q Keeper) Proposals(c context.Context, req *v1.QueryProposalsRequest) (*v1
|
||||
|
||||
// match depositor (if supplied)
|
||||
if len(req.Depositor) > 0 {
|
||||
depositor, err := sdk.AccAddressFromBech32(req.Depositor)
|
||||
depositor, err := q.authKeeper.StringToBytes(req.Depositor)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@ -115,7 +115,7 @@ func (q Keeper) Vote(c context.Context, req *v1.QueryVoteRequest) (*v1.QueryVote
|
||||
|
||||
ctx := sdk.UnwrapSDKContext(c)
|
||||
|
||||
voter, err := sdk.AccAddressFromBech32(req.Voter)
|
||||
voter, err := q.authKeeper.StringToBytes(req.Voter)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@ -211,7 +211,7 @@ func (q Keeper) Deposit(c context.Context, req *v1.QueryDepositRequest) (*v1.Que
|
||||
|
||||
ctx := sdk.UnwrapSDKContext(c)
|
||||
|
||||
depositor, err := sdk.AccAddressFromBech32(req.Depositor)
|
||||
depositor, err := q.authKeeper.StringToBytes(req.Depositor)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@ -9,6 +9,8 @@ import (
|
||||
|
||||
simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims"
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
|
||||
"github.com/cosmos/cosmos-sdk/codec/address"
|
||||
"github.com/cosmos/cosmos-sdk/types/query"
|
||||
v3 "github.com/cosmos/cosmos-sdk/x/gov/migrations/v3"
|
||||
v1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1"
|
||||
@ -657,8 +659,10 @@ func (suite *KeeperTestSuite) TestGRPCQueryVotes() {
|
||||
{ProposalId: proposal.Id, Voter: addrs[0].String(), Options: v1.NewNonSplitVoteOption(v1.OptionAbstain)},
|
||||
{ProposalId: proposal.Id, Voter: addrs[1].String(), Options: v1.NewNonSplitVoteOption(v1.OptionYes)},
|
||||
}
|
||||
accAddr1, err1 := sdk.AccAddressFromBech32(votes[0].Voter)
|
||||
accAddr2, err2 := sdk.AccAddressFromBech32(votes[1].Voter)
|
||||
|
||||
codec := address.NewBech32Codec("cosmos")
|
||||
accAddr1, err1 := codec.StringToBytes(votes[0].Voter)
|
||||
accAddr2, err2 := codec.StringToBytes(votes[1].Voter)
|
||||
suite.Require().NoError(err1)
|
||||
suite.Require().NoError(err2)
|
||||
suite.Require().NoError(suite.govKeeper.AddVote(ctx, proposal.Id, accAddr1, votes[0].Options, ""))
|
||||
@ -759,8 +763,10 @@ func (suite *KeeperTestSuite) TestLegacyGRPCQueryVotes() {
|
||||
{ProposalId: proposal.Id, Voter: addrs[0].String(), Options: v1beta1.NewNonSplitVoteOption(v1beta1.OptionAbstain)},
|
||||
{ProposalId: proposal.Id, Voter: addrs[1].String(), Options: v1beta1.NewNonSplitVoteOption(v1beta1.OptionYes)},
|
||||
}
|
||||
accAddr1, err1 := sdk.AccAddressFromBech32(votes[0].Voter)
|
||||
accAddr2, err2 := sdk.AccAddressFromBech32(votes[1].Voter)
|
||||
codec := address.NewBech32Codec("cosmos")
|
||||
|
||||
accAddr1, err1 := codec.StringToBytes(votes[0].Voter)
|
||||
accAddr2, err2 := codec.StringToBytes(votes[1].Voter)
|
||||
suite.Require().NoError(err1)
|
||||
suite.Require().NoError(err2)
|
||||
suite.Require().NoError(suite.govKeeper.AddVote(ctx, proposal.Id, accAddr1, v1.NewNonSplitVoteOption(v1.OptionAbstain), ""))
|
||||
|
||||
@ -47,9 +47,14 @@ func (h *MockGovHooksReceiver) AfterProposalVotingPeriodEnded(ctx sdk.Context, p
|
||||
|
||||
func TestHooks(t *testing.T) {
|
||||
minDeposit := v1.DefaultParams().MinDeposit
|
||||
govKeeper, _, bankKeeper, stakingKeeper, _, _, ctx := setupGovKeeper(t)
|
||||
govKeeper, authKeeper, bankKeeper, stakingKeeper, _, _, ctx := setupGovKeeper(t)
|
||||
addrs := simtestutil.AddTestAddrs(bankKeeper, stakingKeeper, ctx, 1, minDeposit[0].Amount)
|
||||
|
||||
for _, addr := range addrs {
|
||||
authKeeper.EXPECT().BytesToString(addr).Return(addr.String(), nil).AnyTimes()
|
||||
authKeeper.EXPECT().StringToBytes(addr.String()).Return(addr, nil).AnyTimes()
|
||||
}
|
||||
|
||||
govHooksReceiver := MockGovHooksReceiver{}
|
||||
|
||||
keeper.UnsafeSetHooks(
|
||||
|
||||
@ -68,7 +68,7 @@ func NewKeeper(
|
||||
panic(fmt.Sprintf("%s module account has not been set", types.ModuleName))
|
||||
}
|
||||
|
||||
if _, err := sdk.AccAddressFromBech32(authority); err != nil {
|
||||
if _, err := authKeeper.StringToBytes(authority); err != nil {
|
||||
panic(fmt.Sprintf("invalid authority address: %s", authority))
|
||||
}
|
||||
|
||||
|
||||
@ -10,6 +10,7 @@ import (
|
||||
|
||||
"github.com/cosmos/cosmos-sdk/baseapp"
|
||||
"github.com/cosmos/cosmos-sdk/codec"
|
||||
"github.com/cosmos/cosmos-sdk/codec/address"
|
||||
simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims"
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
"github.com/cosmos/cosmos-sdk/x/gov/keeper"
|
||||
@ -20,6 +21,8 @@ import (
|
||||
minttypes "github.com/cosmos/cosmos-sdk/x/mint/types"
|
||||
)
|
||||
|
||||
var address1 = "cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r"
|
||||
|
||||
type KeeperTestSuite struct {
|
||||
suite.Suite
|
||||
|
||||
@ -72,34 +75,51 @@ func (suite *KeeperTestSuite) reset() {
|
||||
|
||||
suite.legacyMsgSrvr = keeper.NewLegacyMsgServerImpl(govAcct.String(), suite.msgSrvr)
|
||||
suite.addrs = simtestutil.AddTestAddrsIncremental(bankKeeper, stakingKeeper, ctx, 3, sdkmath.NewInt(30000000))
|
||||
|
||||
for _, addr := range suite.addrs {
|
||||
suite.acctKeeper.EXPECT().BytesToString(addr).Return(addr.String(), nil).AnyTimes()
|
||||
suite.acctKeeper.EXPECT().StringToBytes(addr.String()).Return(addr, nil).AnyTimes()
|
||||
}
|
||||
}
|
||||
|
||||
func TestIncrementProposalNumber(t *testing.T) {
|
||||
govKeeper, _, _, _, _, _, ctx := setupGovKeeper(t)
|
||||
govKeeper, authKeeper, _, _, _, _, ctx := setupGovKeeper(t)
|
||||
|
||||
ac := address.NewBech32Codec("cosmos")
|
||||
addrBz, err := ac.StringToBytes(address1)
|
||||
require.NoError(t, err)
|
||||
authKeeper.EXPECT().StringToBytes(address1).Return(addrBz, nil).AnyTimes()
|
||||
authKeeper.EXPECT().BytesToString(addrBz).Return(address1, nil).AnyTimes()
|
||||
|
||||
tp := TestProposal
|
||||
_, err := govKeeper.SubmitProposal(ctx, tp, "", "test", "summary", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r"), false)
|
||||
_, err = govKeeper.SubmitProposal(ctx, tp, "", "test", "summary", addrBz, false)
|
||||
require.NoError(t, err)
|
||||
_, err = govKeeper.SubmitProposal(ctx, tp, "", "test", "summary", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r"), false)
|
||||
_, err = govKeeper.SubmitProposal(ctx, tp, "", "test", "summary", addrBz, false)
|
||||
require.NoError(t, err)
|
||||
_, err = govKeeper.SubmitProposal(ctx, tp, "", "test", "summary", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r"), true)
|
||||
_, err = govKeeper.SubmitProposal(ctx, tp, "", "test", "summary", addrBz, true)
|
||||
require.NoError(t, err)
|
||||
_, err = govKeeper.SubmitProposal(ctx, tp, "", "test", "summary", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r"), true)
|
||||
_, err = govKeeper.SubmitProposal(ctx, tp, "", "test", "summary", addrBz, true)
|
||||
require.NoError(t, err)
|
||||
_, err = govKeeper.SubmitProposal(ctx, tp, "", "test", "summary", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r"), false)
|
||||
_, err = govKeeper.SubmitProposal(ctx, tp, "", "test", "summary", addrBz, false)
|
||||
require.NoError(t, err)
|
||||
proposal6, err := govKeeper.SubmitProposal(ctx, tp, "", "test", "summary", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r"), false)
|
||||
proposal6, err := govKeeper.SubmitProposal(ctx, tp, "", "test", "summary", addrBz, false)
|
||||
require.NoError(t, err)
|
||||
|
||||
require.Equal(t, uint64(6), proposal6.Id)
|
||||
}
|
||||
|
||||
func TestProposalQueues(t *testing.T) {
|
||||
govKeeper, _, _, _, _, _, ctx := setupGovKeeper(t)
|
||||
govKeeper, authKeeper, _, _, _, _, ctx := setupGovKeeper(t)
|
||||
|
||||
ac := address.NewBech32Codec("cosmos")
|
||||
addrBz, err := ac.StringToBytes(address1)
|
||||
require.NoError(t, err)
|
||||
authKeeper.EXPECT().StringToBytes(address1).Return(addrBz, nil).AnyTimes()
|
||||
authKeeper.EXPECT().BytesToString(addrBz).Return(address1, nil).AnyTimes()
|
||||
|
||||
// create test proposals
|
||||
tp := TestProposal
|
||||
proposal, err := govKeeper.SubmitProposal(ctx, tp, "", "test", "summary", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r"), false)
|
||||
proposal, err := govKeeper.SubmitProposal(ctx, tp, "", "test", "summary", addrBz, false)
|
||||
require.NoError(t, err)
|
||||
|
||||
inactiveIterator := govKeeper.InactiveProposalQueueIterator(ctx, *proposal.DepositEndTime)
|
||||
|
||||
@ -37,7 +37,7 @@ func (k msgServer) SubmitProposal(goCtx context.Context, msg *v1.MsgSubmitPropos
|
||||
return nil, err
|
||||
}
|
||||
|
||||
proposer, err := sdk.AccAddressFromBech32(msg.GetProposer())
|
||||
proposer, err := k.authKeeper.StringToBytes(msg.GetProposer())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@ -86,7 +86,7 @@ func (k msgServer) SubmitProposal(goCtx context.Context, msg *v1.MsgSubmitPropos
|
||||
// CancelProposals implements the MsgServer.CancelProposal method.
|
||||
func (k msgServer) CancelProposal(goCtx context.Context, msg *v1.MsgCancelProposal) (*v1.MsgCancelProposalResponse, error) {
|
||||
ctx := sdk.UnwrapSDKContext(goCtx)
|
||||
_, err := sdk.AccAddressFromBech32(msg.Proposer)
|
||||
_, err := k.authKeeper.StringToBytes(msg.Proposer)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@ -140,7 +140,7 @@ func (k msgServer) ExecLegacyContent(goCtx context.Context, msg *v1.MsgExecLegac
|
||||
// Vote implements the MsgServer.Vote method.
|
||||
func (k msgServer) Vote(goCtx context.Context, msg *v1.MsgVote) (*v1.MsgVoteResponse, error) {
|
||||
ctx := sdk.UnwrapSDKContext(goCtx)
|
||||
accAddr, err := sdk.AccAddressFromBech32(msg.Voter)
|
||||
accAddr, err := k.authKeeper.StringToBytes(msg.Voter)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@ -163,7 +163,7 @@ func (k msgServer) Vote(goCtx context.Context, msg *v1.MsgVote) (*v1.MsgVoteResp
|
||||
// VoteWeighted implements the MsgServer.VoteWeighted method.
|
||||
func (k msgServer) VoteWeighted(goCtx context.Context, msg *v1.MsgVoteWeighted) (*v1.MsgVoteWeightedResponse, error) {
|
||||
ctx := sdk.UnwrapSDKContext(goCtx)
|
||||
accAddr, accErr := sdk.AccAddressFromBech32(msg.Voter)
|
||||
accAddr, accErr := k.authKeeper.StringToBytes(msg.Voter)
|
||||
if accErr != nil {
|
||||
return nil, accErr
|
||||
}
|
||||
@ -186,7 +186,7 @@ func (k msgServer) VoteWeighted(goCtx context.Context, msg *v1.MsgVoteWeighted)
|
||||
// Deposit implements the MsgServer.Deposit method.
|
||||
func (k msgServer) Deposit(goCtx context.Context, msg *v1.MsgDeposit) (*v1.MsgDepositResponse, error) {
|
||||
ctx := sdk.UnwrapSDKContext(goCtx)
|
||||
accAddr, err := sdk.AccAddressFromBech32(msg.Depositor)
|
||||
accAddr, err := k.authKeeper.StringToBytes(msg.Depositor)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package keeper_test
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
@ -13,6 +14,11 @@ import (
|
||||
"github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1"
|
||||
)
|
||||
|
||||
var (
|
||||
longAddress = "cosmos1v9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpg0s5ed"
|
||||
longAddressError = "address max length is 255"
|
||||
)
|
||||
|
||||
func (suite *KeeperTestSuite) TestSubmitProposalReq() {
|
||||
suite.reset()
|
||||
govAcct := suite.govKeeper.GetGovernanceAccount(suite.ctx).GetAddress()
|
||||
@ -233,6 +239,8 @@ func (suite *KeeperTestSuite) TestVoteReq() {
|
||||
)
|
||||
suite.Require().NoError(err)
|
||||
|
||||
suite.acctKeeper.EXPECT().StringToBytes(longAddress).Return(nil, errors.New(longAddressError)).AnyTimes()
|
||||
|
||||
res, err := suite.msgSrvr.SubmitProposal(suite.ctx, msg)
|
||||
suite.Require().NoError(err)
|
||||
suite.Require().NotNil(res.ProposalId)
|
||||
@ -288,7 +296,7 @@ func (suite *KeeperTestSuite) TestVoteReq() {
|
||||
voter: sdk.AccAddress(strings.Repeat("a", 300)),
|
||||
metadata: "",
|
||||
expErr: true,
|
||||
expErrMsg: "address max length is 255",
|
||||
expErrMsg: longAddressError,
|
||||
},
|
||||
"all good": {
|
||||
preRun: func() uint64 {
|
||||
@ -360,6 +368,8 @@ func (suite *KeeperTestSuite) TestVoteWeightedReq() {
|
||||
suite.Require().NotNil(res.ProposalId)
|
||||
proposalID := res.ProposalId
|
||||
|
||||
suite.acctKeeper.EXPECT().StringToBytes(longAddress).Return(nil, errors.New(longAddressError)).AnyTimes()
|
||||
|
||||
cases := map[string]struct {
|
||||
preRun func() uint64
|
||||
vote *v1.MsgVote
|
||||
@ -411,7 +421,7 @@ func (suite *KeeperTestSuite) TestVoteWeightedReq() {
|
||||
voter: sdk.AccAddress(strings.Repeat("a", 300)),
|
||||
metadata: "",
|
||||
expErr: true,
|
||||
expErrMsg: "address max length is 255",
|
||||
expErrMsg: longAddressError,
|
||||
},
|
||||
"all good": {
|
||||
preRun: func() uint64 {
|
||||
@ -603,6 +613,8 @@ func (suite *KeeperTestSuite) TestLegacyMsgVote() {
|
||||
suite.Require().NotNil(res.ProposalId)
|
||||
proposalID := res.ProposalId
|
||||
|
||||
suite.acctKeeper.EXPECT().StringToBytes(longAddress).Return(nil, errors.New(longAddressError)).AnyTimes()
|
||||
|
||||
cases := map[string]struct {
|
||||
preRun func() uint64
|
||||
expErr bool
|
||||
@ -643,7 +655,7 @@ func (suite *KeeperTestSuite) TestLegacyMsgVote() {
|
||||
voter: sdk.AccAddress(strings.Repeat("a", 300)),
|
||||
metadata: "",
|
||||
expErr: true,
|
||||
expErrMsg: "address max length is 255",
|
||||
expErrMsg: longAddressError,
|
||||
},
|
||||
"all good": {
|
||||
preRun: func() uint64 {
|
||||
@ -715,6 +727,8 @@ func (suite *KeeperTestSuite) TestLegacyVoteWeighted() {
|
||||
suite.Require().NotNil(res.ProposalId)
|
||||
proposalID := res.ProposalId
|
||||
|
||||
suite.acctKeeper.EXPECT().StringToBytes(longAddress).Return(nil, errors.New(longAddressError)).AnyTimes()
|
||||
|
||||
cases := map[string]struct {
|
||||
preRun func() uint64
|
||||
vote *v1beta1.MsgVote
|
||||
@ -756,7 +770,7 @@ func (suite *KeeperTestSuite) TestLegacyVoteWeighted() {
|
||||
voter: sdk.AccAddress(strings.Repeat("a", 300)),
|
||||
metadata: "",
|
||||
expErr: true,
|
||||
expErrMsg: "address max length is 255",
|
||||
expErrMsg: longAddressError,
|
||||
},
|
||||
"all good": {
|
||||
preRun: func() uint64 {
|
||||
@ -1192,6 +1206,9 @@ func (suite *KeeperTestSuite) TestSubmitProposal_InitialDeposit() {
|
||||
govKeeper, ctx := suite.govKeeper, suite.ctx
|
||||
address := simtestutil.AddTestAddrs(suite.bankKeeper, suite.stakingKeeper, ctx, 1, tc.accountBalance[0].Amount)[0]
|
||||
|
||||
suite.acctKeeper.EXPECT().StringToBytes(address.String()).Return(address, nil).AnyTimes()
|
||||
suite.acctKeeper.EXPECT().BytesToString(address).Return(address.String(), nil).AnyTimes()
|
||||
|
||||
params := v1.DefaultParams()
|
||||
params.MinDeposit = tc.minDeposit
|
||||
params.MinInitialDepositRatio = tc.minInitialDepositRatio.String()
|
||||
|
||||
@ -28,7 +28,7 @@ func (suite *KeeperTestSuite) TestGetSetProposal() {
|
||||
|
||||
for _, tc := range testCases {
|
||||
tp := TestProposal
|
||||
proposal, err := suite.govKeeper.SubmitProposal(suite.ctx, tp, "", "test", "summary", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r"), tc.expedited)
|
||||
proposal, err := suite.govKeeper.SubmitProposal(suite.ctx, tp, "", "test", "summary", suite.addrs[0], tc.expedited)
|
||||
suite.Require().NoError(err)
|
||||
proposalID := proposal.Id
|
||||
suite.govKeeper.SetProposal(suite.ctx, proposal)
|
||||
@ -57,7 +57,7 @@ func (suite *KeeperTestSuite) TestDeleteProposal() {
|
||||
},
|
||||
)
|
||||
tp := TestProposal
|
||||
proposal, err := suite.govKeeper.SubmitProposal(suite.ctx, tp, "", "test", "summary", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r"), tc.expedited)
|
||||
proposal, err := suite.govKeeper.SubmitProposal(suite.ctx, tp, "", "test", "summary", suite.addrs[0], tc.expedited)
|
||||
suite.Require().NoError(err)
|
||||
proposalID := proposal.Id
|
||||
suite.govKeeper.SetProposal(suite.ctx, proposal)
|
||||
@ -78,7 +78,7 @@ func (suite *KeeperTestSuite) TestActivateVotingPeriod() {
|
||||
|
||||
for _, tc := range testCases {
|
||||
tp := TestProposal
|
||||
proposal, err := suite.govKeeper.SubmitProposal(suite.ctx, tp, "", "test", "summary", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r"), tc.expedited)
|
||||
proposal, err := suite.govKeeper.SubmitProposal(suite.ctx, tp, "", "test", "summary", suite.addrs[0], tc.expedited)
|
||||
suite.Require().NoError(err)
|
||||
|
||||
suite.Require().Nil(proposal.VotingStartTime)
|
||||
@ -115,7 +115,7 @@ func (suite *KeeperTestSuite) TestDeleteProposalInVotingPeriod() {
|
||||
for _, tc := range testCases {
|
||||
suite.reset()
|
||||
tp := TestProposal
|
||||
proposal, err := suite.govKeeper.SubmitProposal(suite.ctx, tp, "", "test", "summary", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r"), tc.expedited)
|
||||
proposal, err := suite.govKeeper.SubmitProposal(suite.ctx, tp, "", "test", "summary", suite.addrs[0], tc.expedited)
|
||||
suite.Require().NoError(err)
|
||||
suite.Require().Nil(proposal.VotingStartTime)
|
||||
|
||||
@ -134,7 +134,7 @@ func (suite *KeeperTestSuite) TestDeleteProposalInVotingPeriod() {
|
||||
|
||||
// add vote
|
||||
voteOptions := []*v1.WeightedVoteOption{{Option: v1.OptionYes, Weight: "1.0"}}
|
||||
err = suite.govKeeper.AddVote(suite.ctx, proposal.Id, sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r"), voteOptions, "")
|
||||
err = suite.govKeeper.AddVote(suite.ctx, proposal.Id, suite.addrs[0], voteOptions, "")
|
||||
suite.Require().NoError(err)
|
||||
|
||||
suite.Require().NotPanics(func() {
|
||||
@ -142,7 +142,7 @@ func (suite *KeeperTestSuite) TestDeleteProposalInVotingPeriod() {
|
||||
}, "")
|
||||
|
||||
// add vote but proposal is deleted along with its VotingPeriodProposalKey
|
||||
err = suite.govKeeper.AddVote(suite.ctx, proposal.Id, sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r"), voteOptions, "")
|
||||
err = suite.govKeeper.AddVote(suite.ctx, proposal.Id, suite.addrs[0], voteOptions, "")
|
||||
suite.Require().ErrorContains(err, ": inactive proposal")
|
||||
}
|
||||
}
|
||||
@ -181,7 +181,7 @@ func (suite *KeeperTestSuite) TestSubmitProposal() {
|
||||
for i, tc := range testCases {
|
||||
prop, err := v1.NewLegacyContent(tc.content, tc.authority)
|
||||
suite.Require().NoError(err)
|
||||
_, err = suite.govKeeper.SubmitProposal(suite.ctx, []sdk.Msg{prop}, tc.metadata, "title", "", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r"), tc.expedited)
|
||||
_, err = suite.govKeeper.SubmitProposal(suite.ctx, []sdk.Msg{prop}, tc.metadata, "title", "", suite.addrs[0], tc.expedited)
|
||||
suite.Require().True(errors.Is(tc.expectedErr, err), "tc #%d; got: %v, expected: %v", i, err, tc.expectedErr)
|
||||
}
|
||||
}
|
||||
@ -190,11 +190,11 @@ func (suite *KeeperTestSuite) TestGetProposalsFiltered() {
|
||||
proposalID := uint64(1)
|
||||
status := []v1.ProposalStatus{v1.StatusDepositPeriod, v1.StatusVotingPeriod}
|
||||
|
||||
addr1 := sdk.AccAddress("foo_________________")
|
||||
addr1 := suite.addrs[1]
|
||||
|
||||
for _, s := range status {
|
||||
for i := 0; i < 50; i++ {
|
||||
p, err := v1.NewProposal(TestProposal, proposalID, time.Now(), time.Now(), "metadata", "title", "summary", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r"), false)
|
||||
p, err := v1.NewProposal(TestProposal, proposalID, time.Now(), time.Now(), "metadata", "title", "summary", suite.addrs[0], false)
|
||||
suite.Require().NoError(err)
|
||||
|
||||
p.Status = s
|
||||
|
||||
@ -36,9 +36,12 @@ func (keeper Keeper) Tally(ctx sdk.Context, proposal v1.Proposal) (passes, burnD
|
||||
|
||||
keeper.IterateVotes(ctx, proposal.Id, func(vote v1.Vote) bool {
|
||||
// if validator, just record it in the map
|
||||
voter := sdk.MustAccAddressFromBech32(vote.Voter)
|
||||
voter, err := keeper.authKeeper.StringToBytes(vote.Voter)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
valAddrStr := sdk.ValAddress(voter.Bytes()).String()
|
||||
valAddrStr := sdk.ValAddress(voter).String()
|
||||
if val, ok := currValidators[valAddrStr]; ok {
|
||||
val.Vote = vote.Options
|
||||
currValidators[valAddrStr] = val
|
||||
|
||||
@ -82,7 +82,10 @@ func (keeper Keeper) GetVote(ctx sdk.Context, proposalID uint64, voterAddr sdk.A
|
||||
func (keeper Keeper) SetVote(ctx sdk.Context, vote v1.Vote) {
|
||||
store := ctx.KVStore(keeper.storeKey)
|
||||
bz := keeper.cdc.MustMarshal(&vote)
|
||||
addr := sdk.MustAccAddressFromBech32(vote.Voter)
|
||||
addr, err := keeper.authKeeper.StringToBytes(vote.Voter)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
store.Set(types.VoteKey(vote.ProposalId, addr), bz)
|
||||
}
|
||||
|
||||
@ -12,8 +12,12 @@ import (
|
||||
)
|
||||
|
||||
func TestVotes(t *testing.T) {
|
||||
govKeeper, _, bankKeeper, stakingKeeper, _, _, ctx := setupGovKeeper(t)
|
||||
govKeeper, authKeeper, bankKeeper, stakingKeeper, _, _, ctx := setupGovKeeper(t)
|
||||
addrs := simtestutil.AddTestAddrsIncremental(bankKeeper, stakingKeeper, ctx, 2, sdkmath.NewInt(10000000))
|
||||
for _, addr := range addrs {
|
||||
authKeeper.EXPECT().BytesToString(addr).Return(addr.String(), nil).AnyTimes()
|
||||
authKeeper.EXPECT().StringToBytes(addr.String()).Return(addr, nil).AnyTimes()
|
||||
}
|
||||
|
||||
tp := TestProposal
|
||||
proposal, err := govKeeper.SubmitProposal(ctx, tp, "", "title", "description", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r"), false)
|
||||
|
||||
@ -13,6 +13,7 @@ import (
|
||||
"golang.org/x/exp/slices"
|
||||
|
||||
modulev1 "cosmossdk.io/api/cosmos/gov/module/v1"
|
||||
"cosmossdk.io/core/address"
|
||||
"cosmossdk.io/core/appmodule"
|
||||
"cosmossdk.io/depinject"
|
||||
|
||||
@ -47,6 +48,7 @@ var (
|
||||
type AppModuleBasic struct {
|
||||
cdc codec.Codec
|
||||
legacyProposalHandlers []govclient.ProposalHandler // legacy proposal handlers which live in governance cli and rest
|
||||
ac address.Codec
|
||||
}
|
||||
|
||||
// NewAppModuleBasic creates a new AppModuleBasic object
|
||||
@ -109,8 +111,8 @@ func getProposalCLIHandlers(handlers []govclient.ProposalHandler) []*cobra.Comma
|
||||
}
|
||||
|
||||
// GetQueryCmd returns the root query command for the gov module.
|
||||
func (AppModuleBasic) GetQueryCmd() *cobra.Command {
|
||||
return cli.GetQueryCmd()
|
||||
func (ab AppModuleBasic) GetQueryCmd() *cobra.Command {
|
||||
return cli.GetQueryCmd(ab.ac)
|
||||
}
|
||||
|
||||
// RegisterInterfaces implements InterfaceModule.RegisterInterfaces
|
||||
@ -137,7 +139,7 @@ func NewAppModule(
|
||||
ak govtypes.AccountKeeper, bk govtypes.BankKeeper, ss govtypes.ParamSubspace,
|
||||
) AppModule {
|
||||
return AppModule{
|
||||
AppModuleBasic: AppModuleBasic{cdc: cdc},
|
||||
AppModuleBasic: AppModuleBasic{cdc: cdc, ac: ak},
|
||||
keeper: keeper,
|
||||
accountKeeper: ak,
|
||||
bankKeeper: bk,
|
||||
|
||||
@ -40,6 +40,21 @@ func (m *MockAccountKeeper) EXPECT() *MockAccountKeeperMockRecorder {
|
||||
return m.recorder
|
||||
}
|
||||
|
||||
// BytesToString mocks base method.
|
||||
func (m *MockAccountKeeper) BytesToString(bz []byte) (string, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "BytesToString", bz)
|
||||
ret0, _ := ret[0].(string)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// BytesToString indicates an expected call of BytesToString.
|
||||
func (mr *MockAccountKeeperMockRecorder) BytesToString(bz interface{}) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "BytesToString", reflect.TypeOf((*MockAccountKeeper)(nil).BytesToString), bz)
|
||||
}
|
||||
|
||||
// GetAccount mocks base method.
|
||||
func (m *MockAccountKeeper) GetAccount(ctx context.Context, addr types.AccAddress) types.AccountI {
|
||||
m.ctrl.T.Helper()
|
||||
@ -106,6 +121,21 @@ func (mr *MockAccountKeeperMockRecorder) SetModuleAccount(arg0, arg1 interface{}
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetModuleAccount", reflect.TypeOf((*MockAccountKeeper)(nil).SetModuleAccount), arg0, arg1)
|
||||
}
|
||||
|
||||
// StringToBytes mocks base method.
|
||||
func (m *MockAccountKeeper) StringToBytes(text string) ([]byte, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "StringToBytes", text)
|
||||
ret0, _ := ret[0].([]byte)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// StringToBytes indicates an expected call of StringToBytes.
|
||||
func (mr *MockAccountKeeperMockRecorder) StringToBytes(text interface{}) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "StringToBytes", reflect.TypeOf((*MockAccountKeeper)(nil).StringToBytes), text)
|
||||
}
|
||||
|
||||
// MockBankKeeper is a mock of BankKeeper interface.
|
||||
type MockBankKeeper struct {
|
||||
ctrl *gomock.Controller
|
||||
|
||||
@ -3,6 +3,7 @@ package types
|
||||
import (
|
||||
"context"
|
||||
|
||||
addresscodec "cosmossdk.io/core/address"
|
||||
"cosmossdk.io/math"
|
||||
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
@ -36,6 +37,8 @@ type DistributionKeeper interface {
|
||||
|
||||
// AccountKeeper defines the expected account keeper (noalias)
|
||||
type AccountKeeper interface {
|
||||
addresscodec.Codec
|
||||
|
||||
GetAccount(ctx context.Context, addr sdk.AccAddress) sdk.AccountI
|
||||
|
||||
GetModuleAddress(name string) sdk.AccAddress
|
||||
|
||||
Loading…
Reference in New Issue
Block a user