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 }