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

     1  package cli_test
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	customgovcli "github.com/KiraCore/sekai/x/gov/client/cli"
     8  	govtypes "github.com/KiraCore/sekai/x/gov/types"
     9  	sdk "github.com/cosmos/cosmos-sdk/types"
    10  
    11  	dbm "github.com/cometbft/cometbft-db"
    12  	"github.com/stretchr/testify/suite"
    13  
    14  	"github.com/cosmos/cosmos-sdk/baseapp"
    15  	servertypes "github.com/cosmos/cosmos-sdk/server/types"
    16  
    17  	"github.com/KiraCore/sekai/app"
    18  	simapp "github.com/KiraCore/sekai/app"
    19  	appparams "github.com/KiraCore/sekai/app/params"
    20  	"github.com/KiraCore/sekai/testutil/network"
    21  	"github.com/KiraCore/sekai/x/tokens/client/cli"
    22  	tokenstypes "github.com/KiraCore/sekai/x/tokens/types"
    23  	"github.com/cosmos/cosmos-sdk/client/flags"
    24  	pruningtypes "github.com/cosmos/cosmos-sdk/store/pruning/types"
    25  	clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli"
    26  )
    27  
    28  type IntegrationTestSuite struct {
    29  	suite.Suite
    30  
    31  	cfg     network.Config
    32  	network *network.Network
    33  }
    34  
    35  func (s *IntegrationTestSuite) SetupSuite() {
    36  	appparams.SetConfig()
    37  	s.T().Log("setting up integration test suite")
    38  
    39  	cfg := network.DefaultConfig()
    40  	encodingConfig := simapp.MakeEncodingConfig()
    41  	cfg.Codec = encodingConfig.Marshaler
    42  	cfg.TxConfig = encodingConfig.TxConfig
    43  
    44  	cfg.NumValidators = 1
    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) TearDownSuite() {
    65  	s.T().Log("tearing down integration test suite")
    66  	s.network.Cleanup()
    67  }
    68  
    69  func (s *IntegrationTestSuite) TestUpsertTokenAliasAndQuery() {
    70  	val := s.network.Validators[0]
    71  	clientCtx := val.ClientCtx
    72  
    73  	s.WhitelistPermissions(val.Address, govtypes.PermUpsertTokenAlias)
    74  
    75  	cmd := cli.GetTxUpsertTokenAliasCmd()
    76  	_, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, []string{
    77  		fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Address.String()),
    78  		fmt.Sprintf("--%s=%s", cli.FlagSymbol, "ETH"),
    79  		fmt.Sprintf("--%s=%s", cli.FlagName, "Ethereum"),
    80  		fmt.Sprintf("--%s=%s", cli.FlagIcon, "myiconurl"),
    81  		fmt.Sprintf("--%s=%d", cli.FlagDecimals, 6),
    82  		fmt.Sprintf("--%s=%s", cli.FlagDenoms, "finney"),
    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  
    89  	height, err := s.network.LatestHeight()
    90  	s.Require().NoError(err)
    91  
    92  	_, err = s.network.WaitForHeight(height + 2)
    93  	s.Require().NoError(err)
    94  
    95  	cmd = cli.GetCmdQueryTokenAlias()
    96  	out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, []string{"ETH"})
    97  	s.Require().NoError(err)
    98  
    99  	var tokenAlias tokenstypes.TokenAlias
   100  	clientCtx.Codec.MustUnmarshalJSON(out.Bytes(), &tokenAlias)
   101  
   102  	s.Require().Equal(tokenAlias.Symbol, "ETH")
   103  	s.Require().Equal(tokenAlias.Name, "Ethereum")
   104  	s.Require().Equal(tokenAlias.Icon, "myiconurl")
   105  	s.Require().Equal(tokenAlias.Decimals, uint32(6))
   106  	s.Require().Equal(tokenAlias.Denoms, []string{"finney"})
   107  }
   108  
   109  func (s *IntegrationTestSuite) TestUpsertTokenRateAndQuery() {
   110  	val := s.network.Validators[0]
   111  	clientCtx := val.ClientCtx
   112  
   113  	s.WhitelistPermissions(val.Address, govtypes.PermUpsertTokenRate)
   114  
   115  	cmd := cli.GetTxUpsertTokenRateCmd()
   116  	_, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, []string{
   117  		fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Address.String()),
   118  		fmt.Sprintf("--%s=%s", cli.FlagDenom, "ubtc"),
   119  		fmt.Sprintf("--%s=%f", cli.FlagRate, 0.00001),
   120  		fmt.Sprintf("--%s=%s", cli.FlagFeePayments, "true"),
   121  		fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
   122  		fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
   123  		fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.DefaultDenom, sdk.NewInt(100))).String()),
   124  	})
   125  	s.Require().NoError(err)
   126  
   127  	height, err := s.network.LatestHeight()
   128  	s.Require().NoError(err)
   129  
   130  	_, err = s.network.WaitForHeight(height + 2)
   131  	s.Require().NoError(err)
   132  
   133  	cmd = cli.GetCmdQueryTokenRate()
   134  	_, err = clitestutil.ExecTestCLICmd(clientCtx, cmd, []string{"ubtc"})
   135  	s.Require().NoError(err)
   136  
   137  }
   138  
   139  func (s *IntegrationTestSuite) TestGetCmdQueryTokenBlackWhites() {
   140  	val := s.network.Validators[0]
   141  	clientCtx := val.ClientCtx
   142  
   143  	cmd := cli.GetCmdQueryTokenBlackWhites()
   144  	out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, []string{})
   145  	s.Require().NoError(err)
   146  
   147  	var blackWhites tokenstypes.TokenBlackWhitesResponse
   148  	clientCtx.Codec.MustUnmarshalJSON(out.Bytes(), &blackWhites)
   149  
   150  	s.Require().Equal(blackWhites.Data.Blacklisted, []string{"frozen"})
   151  	s.Require().Equal(blackWhites.Data.Whitelisted, []string{"ukex"})
   152  }
   153  
   154  func (s IntegrationTestSuite) TestCreateProposalUpsertTokenRates() {
   155  	// Query permissions for role Validator
   156  	val := s.network.Validators[0]
   157  	clientCtx := val.ClientCtx
   158  
   159  	cmd := cli.GetTxProposalUpsertTokenRatesCmd()
   160  	out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, []string{
   161  		fmt.Sprintf("--%s=%s", cli.FlagDenom, "ubtc"),
   162  		fmt.Sprintf("--%s=%f", cli.FlagRate, 0.00001),
   163  		fmt.Sprintf("--%s=%s", cli.FlagTitle, "title"),
   164  		fmt.Sprintf("--%s=%s", cli.FlagDescription, "some desc"),
   165  		fmt.Sprintf("--%s=%s", cli.FlagFeePayments, "true"),
   166  		fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Address.String()),
   167  		fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
   168  		fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
   169  		fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.DefaultDenom, sdk.NewInt(100))).String()),
   170  	})
   171  	s.Require().NoError(err)
   172  	fmt.Printf("%s", out.String())
   173  
   174  	// Vote Proposal
   175  	cmd = customgovcli.GetTxVoteProposal()
   176  	out, err = clitestutil.ExecTestCLICmd(clientCtx, cmd, []string{
   177  		fmt.Sprintf("%d", 1), // Proposal ID
   178  		fmt.Sprintf("%d", govtypes.OptionYes),
   179  		fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Address.String()),
   180  		fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
   181  		fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
   182  		fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.DefaultDenom, sdk.NewInt(100))).String()),
   183  	})
   184  	s.Require().NoError(err)
   185  	fmt.Printf("%s", out.String())
   186  }
   187  
   188  func (s IntegrationTestSuite) TestCreateProposalUpsertTokenAlias() {
   189  	// Query permissions for role Validator
   190  	val := s.network.Validators[0]
   191  	clientCtx := val.ClientCtx
   192  
   193  	cmd := cli.GetTxProposalUpsertTokenAliasCmd()
   194  	out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, []string{
   195  		fmt.Sprintf("--%s=%s", cli.FlagSymbol, "ETH"),
   196  		fmt.Sprintf("--%s=%s", cli.FlagName, "Ethereum"),
   197  		fmt.Sprintf("--%s=%s", cli.FlagTitle, "title"),
   198  		fmt.Sprintf("--%s=%s", cli.FlagDescription, "some desc"),
   199  		fmt.Sprintf("--%s=%s", cli.FlagIcon, "myiconurl"),
   200  		fmt.Sprintf("--%s=%d", cli.FlagDecimals, 6),
   201  		fmt.Sprintf("--%s=%s", cli.FlagDenoms, "finney"),
   202  		fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Address.String()),
   203  		fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
   204  		fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
   205  		fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.DefaultDenom, sdk.NewInt(100))).String()),
   206  	})
   207  	s.Require().NoError(err)
   208  	fmt.Printf("%s", out.String())
   209  
   210  	// Vote Proposal
   211  	out.Reset()
   212  	cmd = customgovcli.GetTxVoteProposal()
   213  	out, err = clitestutil.ExecTestCLICmd(clientCtx, cmd, []string{
   214  		fmt.Sprintf("%d", 1), // Proposal ID
   215  		fmt.Sprintf("%d", govtypes.OptionYes),
   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  	fmt.Printf("%s", out.String())
   223  }
   224  
   225  func (s IntegrationTestSuite) TestTxProposalTokensBlackWhiteChangeCmd() {
   226  	// Query permissions for role Validator
   227  	val := s.network.Validators[0]
   228  	clientCtx := val.ClientCtx
   229  
   230  	cmd := cli.GetTxProposalTokensBlackWhiteChangeCmd()
   231  	out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, []string{
   232  		fmt.Sprintf("--%s=true", cli.FlagIsBlacklist),
   233  		fmt.Sprintf("--%s=true", cli.FlagIsAdd),
   234  		fmt.Sprintf("--%s=%s", cli.FlagTitle, "title"),
   235  		fmt.Sprintf("--%s=%s", cli.FlagDescription, "some desc"),
   236  		fmt.Sprintf("--%s=frozen1", cli.FlagTokens),
   237  		fmt.Sprintf("--%s=frozen2", cli.FlagTokens),
   238  		fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Address.String()),
   239  		fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
   240  		fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
   241  		fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.DefaultDenom, sdk.NewInt(100))).String()),
   242  	})
   243  
   244  	s.Require().NoError(err)
   245  	fmt.Printf("%s", out.String())
   246  
   247  	// Vote Proposal
   248  	out.Reset()
   249  	cmd = customgovcli.GetTxVoteProposal()
   250  	out, err = clitestutil.ExecTestCLICmd(clientCtx, cmd, []string{
   251  		fmt.Sprintf("%d", 1), // Proposal ID
   252  		fmt.Sprintf("%d", govtypes.OptionYes),
   253  		fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Address.String()),
   254  		fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
   255  		fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
   256  		fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.DefaultDenom, sdk.NewInt(100))).String()),
   257  	})
   258  	s.Require().NoError(err)
   259  	fmt.Printf("%s", out.String())
   260  }
   261  
   262  func (s *IntegrationTestSuite) TestGetCmdQueryAllTokenAliases() {
   263  	val := s.network.Validators[0]
   264  	clientCtx := val.ClientCtx
   265  
   266  	cmd := cli.GetCmdQueryAllTokenAliases()
   267  	out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, []string{})
   268  	s.Require().NoError(err)
   269  
   270  	var resp tokenstypes.AllTokenAliasesResponse
   271  	clientCtx.Codec.MustUnmarshalJSON(out.Bytes(), &resp)
   272  
   273  	s.Require().Greater(len(resp.Data), 0)
   274  }
   275  
   276  func (s *IntegrationTestSuite) TestGetCmdQueryTokenAliasesByDenom() {
   277  	val := s.network.Validators[0]
   278  	clientCtx := val.ClientCtx
   279  
   280  	cmd := cli.GetCmdQueryTokenAliasesByDenom()
   281  	out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, []string{"ukex", "mkex"})
   282  	s.Require().NoError(err)
   283  
   284  	var resp tokenstypes.TokenAliasesByDenomResponse
   285  	clientCtx.Codec.MustUnmarshalJSON(out.Bytes(), &resp)
   286  
   287  	s.Require().Greater(len(resp.Data), 0)
   288  }
   289  
   290  func (s *IntegrationTestSuite) TestGetCmdQueryAllTokenRates() {
   291  	val := s.network.Validators[0]
   292  	clientCtx := val.ClientCtx
   293  
   294  	cmd := cli.GetCmdQueryAllTokenRates()
   295  	out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, []string{})
   296  	s.Require().NoError(err)
   297  
   298  	var resp tokenstypes.AllTokenRatesResponse
   299  	clientCtx.Codec.MustUnmarshalJSON(out.Bytes(), &resp)
   300  
   301  	s.Require().Greater(len(resp.Data), 0)
   302  }
   303  
   304  func (s *IntegrationTestSuite) TestGetCmdQueryTokenRatesByDenom() {
   305  	val := s.network.Validators[0]
   306  	clientCtx := val.ClientCtx
   307  
   308  	cmd := cli.GetCmdQueryTokenRatesByDenom()
   309  	out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, []string{"ukex"})
   310  	s.Require().NoError(err)
   311  
   312  	var resp tokenstypes.TokenRatesByDenomResponse
   313  	clientCtx.Codec.MustUnmarshalJSON(out.Bytes(), &resp)
   314  
   315  	s.Require().Greater(len(resp.Data), 0)
   316  }
   317  
   318  func TestIntegrationTestSuite(t *testing.T) {
   319  	suite.Run(t, new(IntegrationTestSuite))
   320  }