github.com/KiraCore/sekai@v0.3.43/x/gov/client/cli/cli_test.go (about) 1 package cli_test 2 3 import ( 4 "testing" 5 6 "github.com/KiraCore/sekai/app" 7 simapp "github.com/KiraCore/sekai/app" 8 appparams "github.com/KiraCore/sekai/app/params" 9 "github.com/KiraCore/sekai/testutil/network" 10 "github.com/KiraCore/sekai/x/gov/types" 11 dbm "github.com/cometbft/cometbft-db" 12 "github.com/cosmos/cosmos-sdk/baseapp" 13 servertypes "github.com/cosmos/cosmos-sdk/server/types" 14 pruningtypes "github.com/cosmos/cosmos-sdk/store/pruning/types" 15 "github.com/stretchr/testify/suite" 16 ) 17 18 type IntegrationTestSuite struct { 19 suite.Suite 20 21 cfg network.Config 22 network *network.Network 23 } 24 25 func (s *IntegrationTestSuite) SetupSuite() { 26 appparams.SetConfig() 27 s.T().Log("setting up integration test suite") 28 29 cfg := network.DefaultConfig() 30 encCfg := app.MakeEncodingConfig() 31 cfg.Codec = encCfg.Marshaler 32 cfg.TxConfig = encCfg.TxConfig 33 34 cfg.NumValidators = 1 35 36 // customize proposal end time and enactment time 37 govGen := types.DefaultGenesis() 38 // govGen.NetworkProperties.ProposalEndTime = 1 39 // govGen.NetworkProperties.ProposalEnactmentTime = 2 40 govGenRaw := encCfg.Marshaler.MustMarshalJSON(govGen) 41 42 genesis := app.ModuleBasics.DefaultGenesis(encCfg.Marshaler) 43 genesis[types.ModuleName] = govGenRaw 44 cfg.GenesisState = genesis 45 46 cfg.AppConstructor = func(val network.Validator, chainId string) servertypes.Application { 47 return app.NewInitApp( 48 val.Ctx.Logger, dbm.NewMemDB(), nil, true, make(map[int64]bool), val.Ctx.Config.RootDir, 0, 49 simapp.MakeEncodingConfig(), 50 simapp.EmptyAppOptions{}, 51 baseapp.SetPruning(pruningtypes.NewPruningOptionsFromString(val.AppConfig.Pruning)), 52 baseapp.SetMinGasPrices(val.AppConfig.MinGasPrices), 53 baseapp.SetChainID(chainId), 54 ) 55 } 56 57 s.cfg = cfg 58 s.network = network.New(s.T(), cfg) 59 60 _, err := s.network.WaitForHeight(1) 61 s.Require().NoError(err) 62 } 63 64 // func (s IntegrationTestSuite) TestClaimCouncilor_HappyPath() { 65 // val := s.network.Validators[0] 66 // clientCtx := val.ClientCtx 67 68 // s.SetCouncilor(val.Address) 69 70 // err := s.network.WaitForNextBlock() 71 // s.Require().NoError(err) 72 73 // // Query command 74 // // Mandatory flags 75 // cmd := cli.GetCmdQueryCouncilRegistry() 76 77 // out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, []string{""}) 78 // s.Require().Error(err) 79 80 // // From address 81 // out.Reset() 82 83 // cmd = cli.GetCmdQueryCouncilRegistry() 84 85 // out, err = clitestutil.ExecTestCLICmd(clientCtx, cmd, []string{ 86 // fmt.Sprintf("--%s=%s", cli.FlagAddr, val.Address.String()), 87 // }) 88 // s.Require().NoError(err) 89 90 // var councilorByAddress types.Councilor 91 // err = val.ClientCtx.Codec.UnmarshalJSON(out.Bytes(), &councilorByAddress) 92 // s.Require().NoError(err) 93 // s.Require().Equal(val.Moniker, councilorByAddress.Moniker) 94 // s.Require().Equal(val.Address, councilorByAddress.Address) 95 96 // // From Moniker 97 // cmd = cli.GetCmdQueryCouncilRegistry() 98 // out, err = clitestutil.ExecTestCLICmd(clientCtx, cmd, []string{ 99 // fmt.Sprintf("--%s=%s", cli.FlagMoniker, val.Moniker), 100 // }) 101 // s.Require().NoError(err) 102 103 // var councilorByMoniker types.Councilor 104 // err = val.ClientCtx.Codec.UnmarshalJSON(out.Bytes(), &councilorByMoniker) 105 // s.Require().NoError(err) 106 // s.Require().Equal(val.Moniker, councilorByMoniker.Moniker) 107 // s.Require().Equal(val.Address, councilorByMoniker.Address) 108 // } 109 110 // func (s IntegrationTestSuite) TestProposalAndVoteSetPoorNetworkMessages_HappyPath() { 111 // val := s.network.Validators[0] 112 113 // // create proposal for setting poor network msgs 114 // result := s.SetPoorNetworkMessages("AAA,BBB") 115 // s.Require().Contains(result.RawLog, "SetPoorNetworkMessages") 116 117 // // query for proposals 118 // s.QueryProposals() 119 120 // // set permission to vote on proposal 121 // s.WhitelistPermission(val.Address, "19") // 19 is permission for vote on poor network message set proposal 122 123 // // vote on the proposal 124 // s.VoteWithValidator0(1, types.OptionYes) 125 126 // // check votes 127 // s.QueryProposalVotes(1) 128 129 // // check proposal status until gov process it 130 // s.network.WaitForNextBlock() 131 132 // // query poor network messages 133 // s.QueryPoorNetworkMessages() 134 // } 135 136 // func (s IntegrationTestSuite) TestProposalAndVotePoorNetworkMaxBankSend_HappyPath() { 137 // val := s.network.Validators[0] 138 139 // // set min validators to 2 140 // s.SetNetworkProperties(1, 10000, 2) 141 142 // // try setting network property by governance to allow more amount sending 143 // s.SetNetworkPropertyProposal("POOR_NETWORK_MAX_BANK_SEND", 100000000) 144 145 // // vote on the proposal 146 // s.VoteWithValidator0(1, types.OptionYes) 147 148 // // check votes 149 // s.QueryProposalVotes(1) 150 151 // // check proposal status until gov process it 152 // s.network.WaitForNextBlock() 153 154 // // try sending after modification of poor network bank send param 155 // s.SendValue(val.ClientCtx, val.Address, val.Address, sdk.NewCoin(s.cfg.DefaultDenom, sdk.NewInt(100000000))) 156 // } 157 158 // func (s IntegrationTestSuite) TestPoorNetworkRestrictions_HappyPath() { 159 // val := s.network.Validators[0] 160 161 // // whitelist permission for modifying network properties 162 // s.WhitelistPermission(val.Address, "7") 163 164 // // test poor network messages after modifying min_validators section 165 // s.SetNetworkProperties(1, 10000, 2) 166 167 // // set permission for upsert token rate 168 // s.WhitelistPermission(val.Address, "8") 169 170 // // try running upser token rate which is not allowed on poor network 171 // result := s.UpsertRate("mykex", "1.5", true) 172 // s.Require().Contains(result.RawLog, "invalid transaction type on poor network") 173 174 // // try sending more than allowed amount via bank send 175 // s.SendValue(val.ClientCtx, val.Address, val.Address, sdk.NewCoin(s.cfg.DefaultDenom, sdk.NewInt(100000000))) 176 // } 177 178 func TestIntegrationTestSuite(t *testing.T) { 179 suite.Run(t, new(IntegrationTestSuite)) 180 }