github.com/Finschia/finschia-sdk@v0.49.1/x/auth/vesting/client/testutil/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/auth/vesting/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  
    32  	_, err := s.network.WaitForHeight(1)
    33  	s.Require().NoError(err)
    34  }
    35  
    36  func (s *IntegrationTestSuite) TearDownSuite() {
    37  	s.T().Log("tearing down integration test suite")
    38  	s.network.Cleanup()
    39  }
    40  
    41  func (s *IntegrationTestSuite) TestNewMsgCreateVestingAccountCmd() {
    42  	val := s.network.Validators[0]
    43  
    44  	testCases := map[string]struct {
    45  		args         []string
    46  		expectErr    bool
    47  		expectedCode uint32
    48  		respType     proto.Message
    49  	}{
    50  		"create a continuous vesting account": {
    51  			args: []string{
    52  				sdk.AccAddress("addr2_______________").String(),
    53  				sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String(),
    54  				"4070908800",
    55  				fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Address),
    56  				fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
    57  				fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock),
    58  				fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()),
    59  			},
    60  			expectErr:    false,
    61  			expectedCode: 0,
    62  			respType:     &sdk.TxResponse{},
    63  		},
    64  		"create a delayed vesting account": {
    65  			args: []string{
    66  				sdk.AccAddress("addr3_______________").String(),
    67  				sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String(),
    68  				"4070908800",
    69  				fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Address),
    70  				fmt.Sprintf("--%s=true", cli.FlagDelayed),
    71  				fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
    72  				fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock),
    73  				fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()),
    74  			},
    75  			expectErr:    false,
    76  			expectedCode: 0,
    77  			respType:     &sdk.TxResponse{},
    78  		},
    79  		"invalid address": {
    80  			args: []string{
    81  				sdk.AccAddress("addr4").String(),
    82  				sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String(),
    83  				"4070908800",
    84  				fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Address),
    85  			},
    86  			expectErr:    true,
    87  			expectedCode: 0,
    88  			respType:     &sdk.TxResponse{},
    89  		},
    90  		"invalid coins": {
    91  			args: []string{
    92  				sdk.AccAddress("addr4_______________").String(),
    93  				"fooo",
    94  				"4070908800",
    95  				fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Address),
    96  			},
    97  			expectErr:    true,
    98  			expectedCode: 0,
    99  			respType:     &sdk.TxResponse{},
   100  		},
   101  		"invalid end time": {
   102  			args: []string{
   103  				sdk.AccAddress("addr4_______________").String(),
   104  				sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String(),
   105  				"-4070908800",
   106  				fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Address),
   107  			},
   108  			expectErr:    true,
   109  			expectedCode: 0,
   110  			respType:     &sdk.TxResponse{},
   111  		},
   112  	}
   113  
   114  	for name, tc := range testCases {
   115  		s.Run(name, func() {
   116  			clientCtx := val.ClientCtx
   117  
   118  			bw, err := clitestutil.ExecTestCLICmd(clientCtx, cli.NewMsgCreateVestingAccountCmd(), tc.args)
   119  			if tc.expectErr {
   120  				s.Require().Error(err)
   121  			} else {
   122  				s.Require().NoError(err)
   123  				s.Require().NoError(clientCtx.Codec.UnmarshalJSON(bw.Bytes(), tc.respType), bw.String())
   124  
   125  				txResp := tc.respType.(*sdk.TxResponse)
   126  				s.Require().Equal(tc.expectedCode, txResp.Code)
   127  			}
   128  		})
   129  	}
   130  }