github.com/KiraCore/sekai@v0.3.43/x/gov/client/cli/util_test.go (about)

     1  package cli_test
     2  
     3  import (
     4  	"fmt"
     5  	"strconv"
     6  	"testing"
     7  
     8  	"github.com/KiraCore/sekai/testutil/network"
     9  	"github.com/KiraCore/sekai/x/gov/client/cli"
    10  	"github.com/KiraCore/sekai/x/gov/types"
    11  	customstakingcli "github.com/KiraCore/sekai/x/staking/client/cli"
    12  	tokenscli "github.com/KiraCore/sekai/x/tokens/client/cli"
    13  	"github.com/cosmos/cosmos-sdk/client"
    14  	"github.com/cosmos/cosmos-sdk/client/flags"
    15  	clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli"
    16  	sdk "github.com/cosmos/cosmos-sdk/types"
    17  	bankcli "github.com/cosmos/cosmos-sdk/x/bank/client/cli"
    18  	"github.com/stretchr/testify/require"
    19  )
    20  
    21  // GetRolesByAddress calls the CLI command GetCmdQueryRolesByAddress and returns the roles.
    22  func GetRolesByAddress(t *testing.T, network *network.Network, address sdk.AccAddress) []uint64 {
    23  	val := network.Validators[0]
    24  	clientCtx := val.ClientCtx
    25  	cmd := cli.GetCmdQueryRolesByAddress()
    26  	out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, []string{
    27  		address.String(),
    28  	})
    29  	require.NoError(t, err)
    30  
    31  	var roles types.RolesByAddressResponse
    32  	err = val.ClientCtx.Codec.UnmarshalJSON(out.Bytes(), &roles)
    33  	require.NoError(t, err)
    34  
    35  	return roles.RoleIds
    36  }
    37  
    38  // SetCouncilor calls CLI to set address in the Councilor Registry. The Validator 1 is the caller.
    39  func (s IntegrationTestSuite) SetCouncilor(address sdk.Address) {
    40  	val := s.network.Validators[0]
    41  	clientCtx := val.ClientCtx
    42  
    43  	cmd := cli.GetTxClaimCouncilorSeatCmd()
    44  	_, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, []string{
    45  		fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Address.String()),
    46  		fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
    47  		fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
    48  		fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.DefaultDenom, sdk.NewInt(100))).String()),
    49  		fmt.Sprintf("--%s=%s", cli.FlagAddr, address.String()),
    50  		fmt.Sprintf("--%s=%s", cli.FlagMoniker, val.Moniker),
    51  	})
    52  	s.Require().NoError(err)
    53  
    54  	err = s.network.WaitForNextBlock()
    55  	s.Require().NoError(err)
    56  }
    57  
    58  // SendValue sends Coins from A to B using CLI.
    59  func (s IntegrationTestSuite) SendValue(cCtx client.Context, from sdk.AccAddress, to sdk.AccAddress, coin sdk.Coin) {
    60  	cmd := bankcli.NewSendTxCmd()
    61  	_, err := clitestutil.ExecTestCLICmd(cCtx, cmd, []string{
    62  		from.String(),
    63  		to.String(),
    64  		coin.String(),
    65  		fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
    66  		fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
    67  		fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.DefaultDenom, sdk.NewInt(100))).String()),
    68  	})
    69  	s.Require().NoError(err)
    70  
    71  	err = s.network.WaitForNextBlock()
    72  	s.Require().NoError(err)
    73  }
    74  
    75  func (s IntegrationTestSuite) WhitelistPermission(address sdk.AccAddress, perm string) {
    76  	val := s.network.Validators[0]
    77  	clientCtx := val.ClientCtx
    78  	cmd := cli.GetTxSetWhitelistPermissions()
    79  	out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, []string{
    80  		fmt.Sprintf("--%s=%s", customstakingcli.FlagAddr, address.String()),
    81  		fmt.Sprintf("--%s=%s", cli.FlagPermission, perm),
    82  		fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Address.String()),
    83  		fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
    84  		fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
    85  		fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.DefaultDenom, sdk.NewInt(100))).String()),
    86  	})
    87  	s.Require().NoError(err)
    88  	fmt.Println("IntegrationTestSuite::WhitelistPermission", out.String())
    89  }
    90  
    91  func (s IntegrationTestSuite) VoteWithValidator0(proposalID uint64, voteOption types.VoteOption) {
    92  	val := s.network.Validators[0]
    93  	clientCtx := val.ClientCtx
    94  	cmd := cli.GetTxVoteProposal()
    95  	out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, []string{
    96  		fmt.Sprintf("%d", proposalID),
    97  		fmt.Sprintf("%d", voteOption),
    98  		fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Address.String()),
    99  		fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
   100  		fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
   101  		fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.DefaultDenom, sdk.NewInt(100))).String()),
   102  	})
   103  	s.Require().NoError(err)
   104  	var result sdk.TxResponse
   105  	s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(out.Bytes(), &result))
   106  	s.Require().NotNil(result.Height)
   107  }
   108  
   109  func (s IntegrationTestSuite) QueryProposals() {
   110  	val := s.network.Validators[0]
   111  	clientCtx := val.ClientCtx
   112  	cmd := cli.GetCmdQueryProposals()
   113  	output, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, []string{})
   114  	s.Require().NoError(err, string(output.Bytes()))
   115  }
   116  
   117  func (s IntegrationTestSuite) QueryProposalVotes(proposalID uint64) {
   118  	val := s.network.Validators[0]
   119  	clientCtx := val.ClientCtx
   120  	cmd := cli.GetCmdQueryVotes()
   121  	_, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, []string{
   122  		fmt.Sprintf("%d", proposalID),
   123  	})
   124  	s.Require().NoError(err)
   125  }
   126  
   127  func (s IntegrationTestSuite) QueryPoorNetworkMessages() {
   128  	val := s.network.Validators[0]
   129  	clientCtx := val.ClientCtx
   130  	cmd := cli.GetCmdQueryPoorNetworkMessages()
   131  	_, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, []string{})
   132  	s.Require().NoError(err)
   133  }
   134  
   135  func (s IntegrationTestSuite) SetPoorNetworkMessages(messages string) sdk.TxResponse {
   136  	val := s.network.Validators[0]
   137  	clientCtx := val.ClientCtx
   138  	cmd := cli.GetTxProposalSetPoorNetworkMessages()
   139  	out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, []string{
   140  		messages,
   141  		fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Address.String()),
   142  		fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
   143  		fmt.Sprintf("--%s=%s", cli.FlagTitle, "title"),
   144  		fmt.Sprintf("--%s=%s", cli.FlagDescription, "some desc"),
   145  		fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
   146  		fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.DefaultDenom, sdk.NewInt(100))).String()),
   147  	})
   148  	s.Require().NoError(err)
   149  
   150  	err = s.network.WaitForNextBlock()
   151  	s.Require().NoError(err)
   152  
   153  	var result sdk.TxResponse
   154  	s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(out.Bytes(), &result))
   155  	s.Require().NotNil(result.Height)
   156  	return result
   157  }
   158  
   159  func (s IntegrationTestSuite) SetNetworkProperties(minTxFee, maxTxFee, minValidators uint64) {
   160  	val := s.network.Validators[0]
   161  	clientCtx := val.ClientCtx
   162  	cmd := cli.NewTxSetNetworkProperties()
   163  	out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, []string{
   164  		fmt.Sprintf("--%s=%d", cli.FlagMinTxFee, minTxFee),
   165  		fmt.Sprintf("--%s=%d", cli.FlagMaxTxFee, maxTxFee),
   166  		fmt.Sprintf("--%s=%d", cli.FlagMinValidators, minValidators),
   167  		fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Address.String()),
   168  		fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
   169  		fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
   170  		fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.DefaultDenom, sdk.NewInt(100))).String()),
   171  	})
   172  	s.Require().NoError(err)
   173  
   174  	err = s.network.WaitForNextBlock()
   175  	s.Require().NoError(err)
   176  
   177  	var result sdk.TxResponse
   178  	s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(out.Bytes(), &result))
   179  	s.Require().NotNil(result.Height)
   180  	s.Require().Contains(result.RawLog, "MsgSetNetworkProperties")
   181  }
   182  
   183  func (s IntegrationTestSuite) SetNetworkPropertyProposal(property string, value uint64) {
   184  	val := s.network.Validators[0]
   185  	clientCtx := val.ClientCtx
   186  	cmd := cli.GetTxProposalSetNetworkProperty()
   187  	out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, []string{
   188  		property,
   189  		fmt.Sprintf("%d", value),
   190  		fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Address.String()),
   191  		fmt.Sprintf("--%s=%s", cli.FlagTitle, "title"),
   192  		fmt.Sprintf("--%s=%s", cli.FlagDescription, "some desc"),
   193  		fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
   194  		fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
   195  		fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.DefaultDenom, sdk.NewInt(100))).String()),
   196  	})
   197  	s.Require().NoError(err)
   198  
   199  	err = s.network.WaitForNextBlock()
   200  	s.Require().NoError(err)
   201  
   202  	var result sdk.TxResponse
   203  	s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(out.Bytes(), &result))
   204  	s.Require().NotNil(result.Height)
   205  	s.Require().Contains(result.RawLog, "SetNetworkProperty")
   206  }
   207  
   208  func (s IntegrationTestSuite) UpsertRate(denom string, rate string, flagFeePayments bool) sdk.TxResponse {
   209  	val := s.network.Validators[0]
   210  	clientCtx := val.ClientCtx
   211  	cmd := tokenscli.GetTxUpsertTokenRateCmd()
   212  	out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, []string{
   213  		fmt.Sprintf("--%s=%s", tokenscli.FlagDenom, denom),
   214  		fmt.Sprintf("--%s=%s", tokenscli.FlagRate, rate),
   215  		fmt.Sprintf("--%s=%s", tokenscli.FlagFeePayments, strconv.FormatBool(flagFeePayments)),
   216  		fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Address.String()),
   217  		fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
   218  		fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
   219  		fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.DefaultDenom, sdk.NewInt(100))).String()),
   220  	})
   221  	s.Require().NoError(err)
   222  
   223  	err = s.network.WaitForNextBlock()
   224  	s.Require().NoError(err)
   225  
   226  	var result sdk.TxResponse
   227  	s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(out.Bytes(), &result))
   228  	s.Require().NotNil(result.Height)
   229  	return result
   230  }