Some checks are pending
Build SimApp / build (amd64) (push) Waiting to run
Build SimApp / build (arm64) (push) Waiting to run
CodeQL / Analyze (push) Waiting to run
Build & Push / build (push) Waiting to run
Run Gosec / Gosec (push) Waiting to run
Lint / golangci-lint (push) Waiting to run
Checks dependencies and mocks generation / Check go mod tidy (push) Waiting to run
Checks dependencies and mocks generation / Check up to date mocks (push) Waiting to run
System Tests / setup (push) Waiting to run
System Tests / test-system (push) Blocked by required conditions
System Tests / test-system-legacy (push) Blocked by required conditions
Tests / Code Coverage / split-test-files (push) Waiting to run
Tests / Code Coverage / tests (00) (push) Blocked by required conditions
Tests / Code Coverage / tests (01) (push) Blocked by required conditions
Tests / Code Coverage / tests (02) (push) Blocked by required conditions
Tests / Code Coverage / tests (03) (push) Blocked by required conditions
Tests / Code Coverage / test-integration (push) Waiting to run
Tests / Code Coverage / test-e2e (push) Waiting to run
Tests / Code Coverage / repo-analysis (push) Blocked by required conditions
Tests / Code Coverage / test-sim-nondeterminism (push) Waiting to run
Tests / Code Coverage / test-clientv2 (push) Waiting to run
Tests / Code Coverage / test-core (push) Waiting to run
Tests / Code Coverage / test-depinject (push) Waiting to run
Tests / Code Coverage / test-errors (push) Waiting to run
Tests / Code Coverage / test-math (push) Waiting to run
Tests / Code Coverage / test-schema (push) Waiting to run
Tests / Code Coverage / test-collections (push) Waiting to run
Tests / Code Coverage / test-cosmovisor (push) Waiting to run
Tests / Code Coverage / test-confix (push) Waiting to run
Tests / Code Coverage / test-store (push) Waiting to run
Tests / Code Coverage / test-log (push) Waiting to run
Tests / Code Coverage / test-x-tx (push) Waiting to run
Tests / Code Coverage / test-x-nft (push) Waiting to run
Tests / Code Coverage / test-x-circuit (push) Waiting to run
Tests / Code Coverage / test-x-feegrant (push) Waiting to run
Tests / Code Coverage / test-x-evidence (push) Waiting to run
Tests / Code Coverage / test-x-upgrade (push) Waiting to run
Tests / Code Coverage / test-tools-benchmark (push) Waiting to run
139 lines
3.3 KiB
Go
139 lines
3.3 KiB
Go
package client_test
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"testing"
|
|
|
|
"github.com/spf13/cobra"
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"git.cw.tr/mukan-network/mukan-sdk/client"
|
|
"git.cw.tr/mukan-network/mukan-sdk/client/flags"
|
|
"git.cw.tr/mukan-network/mukan-sdk/testutil"
|
|
)
|
|
|
|
func TestValidateCmd(t *testing.T) {
|
|
// setup root and subcommands
|
|
rootCmd := &cobra.Command{
|
|
Use: "root",
|
|
}
|
|
queryCmd := &cobra.Command{
|
|
Use: "query",
|
|
}
|
|
rootCmd.AddCommand(queryCmd)
|
|
|
|
// command being tested
|
|
distCmd := &cobra.Command{
|
|
Use: "distr",
|
|
DisableFlagParsing: true,
|
|
SuggestionsMinimumDistance: 2,
|
|
}
|
|
queryCmd.AddCommand(distCmd)
|
|
|
|
commissionCmd := &cobra.Command{
|
|
Use: "commission",
|
|
}
|
|
distCmd.AddCommand(commissionCmd)
|
|
|
|
tests := []struct {
|
|
reason string
|
|
args []string
|
|
wantErr bool
|
|
}{
|
|
{"misspelled command", []string{"COMMISSION"}, true},
|
|
{"no command provided", []string{}, false},
|
|
{"help flag", []string{"COMMISSION", "--help"}, false},
|
|
{"shorthand help flag", []string{"COMMISSION", "-h"}, false},
|
|
{"flag only, no command provided", []string{"--gas", "1000atom"}, false},
|
|
{"flag and misspelled command", []string{"--gas", "1000atom", "COMMISSION"}, true},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
err := client.ValidateCmd(distCmd, tt.args)
|
|
require.Equal(t, tt.wantErr, err != nil, tt.reason)
|
|
}
|
|
}
|
|
|
|
func TestSetCmdClientContextHandler(t *testing.T) {
|
|
initClientCtx := client.Context{}.WithHomeDir("/foo/bar").WithChainID("test-chain").WithKeyringDir("/foo/bar")
|
|
|
|
newCmd := func() *cobra.Command {
|
|
c := &cobra.Command{
|
|
PreRunE: func(cmd *cobra.Command, args []string) error {
|
|
return client.SetCmdClientContextHandler(initClientCtx, cmd)
|
|
},
|
|
RunE: func(cmd *cobra.Command, _ []string) error {
|
|
_, err := client.GetClientTxContext(cmd)
|
|
return err
|
|
},
|
|
}
|
|
|
|
c.Flags().String(flags.FlagChainID, "", "network chain ID")
|
|
c.Flags().String(flags.FlagHome, "", "home dir")
|
|
|
|
return c
|
|
}
|
|
|
|
testCases := []struct {
|
|
name string
|
|
expectedContext client.Context
|
|
args []string
|
|
ctx context.Context
|
|
}{
|
|
{
|
|
"no flags set",
|
|
initClientCtx,
|
|
[]string{},
|
|
context.WithValue(context.Background(), client.ClientContextKey, &client.Context{}),
|
|
},
|
|
{
|
|
"flags set",
|
|
initClientCtx.WithChainID("new-chain-id"),
|
|
[]string{
|
|
fmt.Sprintf("--%s=new-chain-id", flags.FlagChainID),
|
|
},
|
|
context.WithValue(context.Background(), client.ClientContextKey, &client.Context{}),
|
|
},
|
|
{
|
|
"flags set with space",
|
|
initClientCtx.WithHomeDir("/tmp/dir"),
|
|
[]string{
|
|
fmt.Sprintf("--%s", flags.FlagHome),
|
|
"/tmp/dir",
|
|
},
|
|
context.Background(),
|
|
},
|
|
{
|
|
"no context provided",
|
|
initClientCtx.WithHomeDir("/tmp/noctx"),
|
|
[]string{
|
|
fmt.Sprintf("--%s", flags.FlagHome),
|
|
"/tmp/noctx",
|
|
},
|
|
nil,
|
|
},
|
|
{
|
|
"with invalid client value in the context",
|
|
initClientCtx.WithHomeDir("/tmp/invalid"),
|
|
[]string{
|
|
fmt.Sprintf("--%s", flags.FlagHome),
|
|
"/tmp/invalid",
|
|
},
|
|
context.WithValue(context.Background(), client.ClientContextKey, "invalid"),
|
|
},
|
|
}
|
|
|
|
for _, tc := range testCases {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
cmd := newCmd()
|
|
_ = testutil.ApplyMockIODiscardOutErr(cmd)
|
|
cmd.SetArgs(tc.args)
|
|
|
|
require.NoError(t, cmd.ExecuteContext(tc.ctx))
|
|
|
|
clientCtx := client.GetClientContextFromCmd(cmd)
|
|
require.Equal(t, tc.expectedContext, clientCtx)
|
|
})
|
|
}
|
|
}
|