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 }