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  }