github.com/Finschia/finschia-sdk@v0.48.1/x/crisis/client/testsuite/suite.go (about)

     1  package testutil
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/gogo/protobuf/proto"
     7  	"github.com/stretchr/testify/suite"
     8  
     9  	"github.com/Finschia/finschia-sdk/client/flags"
    10  	clitestutil "github.com/Finschia/finschia-sdk/testutil/cli"
    11  	"github.com/Finschia/finschia-sdk/testutil/network"
    12  	sdk "github.com/Finschia/finschia-sdk/types"
    13  	"github.com/Finschia/finschia-sdk/x/crisis/client/cli"
    14  )
    15  
    16  type IntegrationTestSuite struct {
    17  	suite.Suite
    18  
    19  	cfg     network.Config
    20  	network *network.Network
    21  }
    22  
    23  func NewIntegrationTestSuite(cfg network.Config) *IntegrationTestSuite {
    24  	return &IntegrationTestSuite{cfg: cfg}
    25  }
    26  
    27  func (s *IntegrationTestSuite) SetupSuite() {
    28  	s.T().Log("setting up integration test suite")
    29  
    30  	s.network = network.New(s.T(), s.cfg)
    31  	_, err := s.network.WaitForHeight(1)
    32  	s.Require().NoError(err)
    33  }
    34  
    35  func (s *IntegrationTestSuite) TearDownSuite() {
    36  	s.T().Log("tearing down integration test suite")
    37  	s.network.Cleanup()
    38  }
    39  
    40  func (s *IntegrationTestSuite) TestNewMsgVerifyInvariantTxCmd() {
    41  	val := s.network.Validators[0]
    42  
    43  	testCases := []struct {
    44  		name         string
    45  		args         []string
    46  		expectErr    bool
    47  		expectedCode uint32
    48  		respType     proto.Message
    49  	}{
    50  		{
    51  			"missing module",
    52  			[]string{
    53  				"", "total-supply",
    54  				fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Address.String()),
    55  				fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
    56  				fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock),
    57  				fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()),
    58  			},
    59  			true, 0, nil,
    60  		},
    61  		{
    62  			"missing invariant route",
    63  			[]string{
    64  				"bank", "",
    65  				fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Address.String()),
    66  				fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
    67  				fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock),
    68  				fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()),
    69  			},
    70  			true, 0, nil,
    71  		},
    72  		{
    73  			"valid transaction",
    74  			[]string{
    75  				"bank", "total-supply",
    76  				fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Address.String()),
    77  				fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
    78  				fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock),
    79  				fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()),
    80  			},
    81  			false, 0, &sdk.TxResponse{},
    82  		},
    83  	}
    84  
    85  	for _, tc := range testCases {
    86  		tc := tc
    87  
    88  		s.Run(tc.name, func() {
    89  			cmd := cli.NewMsgVerifyInvariantTxCmd()
    90  			clientCtx := val.ClientCtx
    91  
    92  			out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, tc.args)
    93  			if tc.expectErr {
    94  				s.Require().Error(err)
    95  			} else {
    96  				s.Require().NoError(err)
    97  				s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), tc.respType), out.String())
    98  
    99  				txResp := tc.respType.(*sdk.TxResponse)
   100  				s.Require().Equal(tc.expectedCode, txResp.Code)
   101  			}
   102  		})
   103  	}
   104  }