WARNING: THIS SITE IS A MIRROR OF GITHUB.COM / IT CANNOT LOGIN OR REGISTER ACCOUNTS / THE CONTENTS ARE PROVIDED AS-IS / THIS SITE ASSUMES NO RESPONSIBILITY FOR ANY DISPLAYED CONTENT OR LINKS / IF YOU FOUND SOMETHING MAY NOT GOOD FOR EVERYONE, CONTACT ADMIN AT ilovescratch@foxmail.com
Skip to content

Commit f9307f7

Browse files
assafmosampocs
andauthored
Unit Tests for stakeibc CLI (Stride-Labs#1220)
Co-authored-by: sampocs <[email protected]>
1 parent 4503746 commit f9307f7

File tree

5 files changed

+437
-2
lines changed

5 files changed

+437
-2
lines changed

testutil/network/network.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ func DefaultConfig() network.Config {
5959
// app doesn't have this module anymore, but we need them for test setup, which uses gentx
6060
app.ModuleBasics[genutiltypes.ModuleName] = genutil.AppModuleBasic{}
6161
encoding := app.MakeEncodingConfig()
62-
chainId := "stride-" + cometbftrand.NewRand().Str(6)
62+
chainId := fmt.Sprintf("stride-%d", cometbftrand.NewRand().Uint64())
6363
return network.Config{
6464
Codec: encoding.Marshaler,
6565
TxConfig: encoding.TxConfig,

x/stakeibc/client/cli/cli_test.go

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package cli_test
2+
3+
import (
4+
"testing"
5+
6+
clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli"
7+
sdk "github.com/cosmos/cosmos-sdk/types"
8+
"github.com/spf13/cobra"
9+
10+
"github.com/stretchr/testify/require"
11+
12+
"github.com/cosmos/cosmos-sdk/client"
13+
14+
"github.com/Stride-Labs/stride/v26/testutil/network"
15+
)
16+
17+
func ExecuteCLIExpectError(t *testing.T, cmd *cobra.Command, args []string, errorString string) {
18+
sdk.GetConfig().SetBech32PrefixForAccount("stride", "stridepub")
19+
20+
clientCtx := client.Context{}.
21+
WithFromAddress(sdk.MustAccAddressFromBech32("stride10p3xzmnpdeshqctsv9ukzcm0vdhkuat52aucqd")).
22+
WithCodec(network.DefaultConfig().Codec)
23+
24+
_, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, args)
25+
require.ErrorContains(t, err, errorString)
26+
}

x/stakeibc/client/cli/gov_test.go

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
package cli_test
2+
3+
import (
4+
"os"
5+
"testing"
6+
7+
"github.com/stretchr/testify/require"
8+
9+
"github.com/Stride-Labs/stride/v26/x/stakeibc/client/cli"
10+
)
11+
12+
func TestCmdAddValidatorsProposal(t *testing.T) {
13+
t.Run("no file", func(t *testing.T) {
14+
args := []string{
15+
"[proposal-file]",
16+
}
17+
18+
cmd := cli.CmdAddValidatorsProposal()
19+
ExecuteCLIExpectError(t, cmd, args, `open [proposal-file]: no such file or directory`)
20+
})
21+
t.Run("empty file", func(t *testing.T) {
22+
f, err := os.CreateTemp("", "")
23+
require.NoError(t, err)
24+
defer f.Close()
25+
26+
args := []string{
27+
f.Name(),
28+
}
29+
30+
cmd := cli.CmdAddValidatorsProposal()
31+
ExecuteCLIExpectError(t, cmd, args, `EOF`)
32+
})
33+
t.Run("non json file", func(t *testing.T) {
34+
f, err := os.CreateTemp("", "")
35+
require.NoError(t, err)
36+
defer f.Close()
37+
_, err = f.WriteString("This is not JSON")
38+
require.NoError(t, err)
39+
40+
args := []string{
41+
f.Name(),
42+
}
43+
44+
cmd := cli.CmdAddValidatorsProposal()
45+
ExecuteCLIExpectError(t, cmd, args, `invalid character 'T' looking for beginning of value`)
46+
})
47+
t.Run("wrong json format", func(t *testing.T) {
48+
f, err := os.CreateTemp("", "")
49+
require.NoError(t, err)
50+
defer f.Close()
51+
_, err = f.WriteString(`{"description":"Proposal to add Imperator because they contribute in XYZ ways!","hostZone":"GAIA","blabla_validators":[{"name":"Imperator","address":"cosmosvaloper1v5y0tg0jllvxf5c3afml8s3awue0ymju89frut"}],"deposit":"64000000ustrd"}`)
52+
require.NoError(t, err)
53+
54+
args := []string{
55+
f.Name(),
56+
}
57+
58+
cmd := cli.CmdAddValidatorsProposal()
59+
ExecuteCLIExpectError(t, cmd, args, `unknown field "blabla_validators" in types.AddValidatorsProposal`)
60+
})
61+
}
62+
63+
func TestCmdToggleLSMProposal(t *testing.T) {
64+
t.Run("no file", func(t *testing.T) {
65+
args := []string{
66+
"[proposal-file]",
67+
}
68+
69+
cmd := cli.CmdToggleLSMProposal()
70+
ExecuteCLIExpectError(t, cmd, args, `open [proposal-file]: no such file or directory`)
71+
})
72+
t.Run("empty file", func(t *testing.T) {
73+
f, err := os.CreateTemp("", "")
74+
require.NoError(t, err)
75+
defer f.Close()
76+
77+
args := []string{
78+
f.Name(),
79+
}
80+
81+
cmd := cli.CmdToggleLSMProposal()
82+
ExecuteCLIExpectError(t, cmd, args, `EOF`)
83+
})
84+
t.Run("non json file", func(t *testing.T) {
85+
f, err := os.CreateTemp("", "")
86+
require.NoError(t, err)
87+
defer f.Close()
88+
_, err = f.WriteString("This is not JSON")
89+
require.NoError(t, err)
90+
91+
args := []string{
92+
f.Name(),
93+
}
94+
95+
cmd := cli.CmdToggleLSMProposal()
96+
ExecuteCLIExpectError(t, cmd, args, `invalid character 'T' looking for beginning of value`)
97+
})
98+
t.Run("wrong json format", func(t *testing.T) {
99+
f, err := os.CreateTemp("", "")
100+
require.NoError(t, err)
101+
defer f.Close()
102+
_, err = f.WriteString(`{"description":"Proposal to add Imperator because they contribute in XYZ ways!","hostZone":"GAIA","blabla_validators":[{"name":"Imperator","address":"cosmosvaloper1v5y0tg0jllvxf5c3afml8s3awue0ymju89frut"}],"deposit":"64000000ustrd"}`)
103+
require.NoError(t, err)
104+
105+
args := []string{
106+
f.Name(),
107+
}
108+
109+
cmd := cli.CmdToggleLSMProposal()
110+
ExecuteCLIExpectError(t, cmd, args, `unknown field "blabla_validators" in types.ToggleLSMProposal`)
111+
})
112+
}

x/stakeibc/client/cli/tx.go

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -331,7 +331,16 @@ func CmdAddValidators() *cobra.Command {
331331
cmd := &cobra.Command{
332332
Use: "add-validators [host-zone] [validator-list-file]",
333333
Short: "Broadcast message add-validators",
334-
Args: cobra.ExactArgs(2),
334+
Long: strings.TrimSpace(
335+
`Add validators and weights using a JSON file in the following format
336+
{
337+
"validator_weights": [
338+
{"address": "cosmosXXX", "weight": 1},
339+
{"address": "cosmosXXX", "weight": 2}
340+
]
341+
}
342+
`),
343+
Args: cobra.ExactArgs(2),
335344
RunE: func(cmd *cobra.Command, args []string) (err error) {
336345
hostZone := args[0]
337346
validatorListProposalFile := args[1]

0 commit comments

Comments
 (0)