Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

test: Add CLI, gRPC, MsgServer tests (backport #1405) #1430

Merged
merged 3 commits into from
Jun 26, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ Ref: https://keepachangelog.com/en/1.0.0/
### Features

### Improvements
* (x/fbridge) [\#1430](https://github.com/Finschia/finschia-sdk/pull/1430) Add CLI, gRPC, MsgServer tests

### Bug Fixes

Expand Down
28 changes: 28 additions & 0 deletions client/tendermint.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package client

import (
"context"

rpcclient "github.com/Finschia/ostracon/rpc/client"
coretypes "github.com/Finschia/ostracon/rpc/core/types"
)

// TendermintRPC defines the interface of a Tendermint RPC client needed for
// queries and transaction handling.
type TendermintRPC interface {
rpcclient.ABCIClient

Validators(ctx context.Context, height *int64, page, perPage *int) (*coretypes.ResultValidators, error)
Status(context.Context) (*coretypes.ResultStatus, error)
Block(ctx context.Context, height *int64) (*coretypes.ResultBlock, error)
BlockchainInfo(ctx context.Context, minHeight, maxHeight int64) (*coretypes.ResultBlockchainInfo, error)
Commit(ctx context.Context, height *int64) (*coretypes.ResultCommit, error)
Tx(ctx context.Context, hash []byte, prove bool) (*coretypes.ResultTx, error)
TxSearch(
ctx context.Context,
query string,
prove bool,
page, perPage *int,
orderBy string,
) (*coretypes.ResultTxSearch, error)
}
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ module github.com/Finschia/finschia-sdk

require (
github.com/99designs/keyring v1.1.6
github.com/Finschia/ostracon v1.1.4
github.com/Finschia/ostracon v1.1.5
github.com/VictoriaMetrics/fastcache v1.12.2
github.com/bgentry/speakeasy v0.1.0
github.com/btcsuite/btcd v0.22.1
Expand Down
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d/go.mod h1:
github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ=
github.com/Finschia/ostracon v1.1.4 h1:untqhChZjktLoMo/b94q6bmeedDfvCV+d+t7yO0I1N8=
github.com/Finschia/ostracon v1.1.4/go.mod h1:kuW9en37Z9+6dGzdoA8+xdCil42wZGZNtrcJe9ugRx8=
github.com/Finschia/ostracon v1.1.5 h1:8nWHh+6v/0+KSx536Aix+P5cn5iqvoAuVvVYn9g1q7c=
github.com/Finschia/ostracon v1.1.5/go.mod h1:kuW9en37Z9+6dGzdoA8+xdCil42wZGZNtrcJe9ugRx8=
github.com/Finschia/r2ishiguro_vrf v0.1.2 h1:lDBz6NQMx1pw5I3End6xFmXpM//7KcmTr3Ka983e7v8=
github.com/Finschia/r2ishiguro_vrf v0.1.2/go.mod h1:OHRtvzcJnfIrcJ0bvPNktJozRFAyZFuv56E9R3/qB+Y=
github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow=
Expand Down
Empty file modified init_node.sh
100644 → 100755
Empty file.
41 changes: 41 additions & 0 deletions testutil/cli/tm_mocks.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package cli

import (
"context"

tmbytes "github.com/Finschia/ostracon/libs/bytes"
rpcclient "github.com/Finschia/ostracon/rpc/client"
rpcclientmock "github.com/Finschia/ostracon/rpc/client/mock"
coretypes "github.com/Finschia/ostracon/rpc/core/types"
tmtypes "github.com/Finschia/ostracon/types"
abci "github.com/tendermint/tendermint/abci/types"

"github.com/Finschia/finschia-sdk/client"
)

var _ client.TendermintRPC = (*MockTendermintRPC)(nil)

type MockTendermintRPC struct {
rpcclientmock.Client

responseQuery abci.ResponseQuery
}

// NewMockTendermintRPC returns a mock TendermintRPC implementation.
// It is used for CLI testing.
func NewMockTendermintRPC(respQuery abci.ResponseQuery) MockTendermintRPC {
return MockTendermintRPC{responseQuery: respQuery}

Check warning on line 27 in testutil/cli/tm_mocks.go

View check run for this annotation

Codecov / codecov/patch

testutil/cli/tm_mocks.go#L26-L27

Added lines #L26 - L27 were not covered by tests
}

func (MockTendermintRPC) BroadcastTxSync(context.Context, tmtypes.Tx) (*coretypes.ResultBroadcastTx, error) {
return &coretypes.ResultBroadcastTx{Code: 0}, nil

Check warning on line 31 in testutil/cli/tm_mocks.go

View check run for this annotation

Codecov / codecov/patch

testutil/cli/tm_mocks.go#L30-L31

Added lines #L30 - L31 were not covered by tests
}

func (m MockTendermintRPC) ABCIQueryWithOptions(
_ context.Context,
_ string,
_ tmbytes.HexBytes,
_ rpcclient.ABCIQueryOptions,
) (*coretypes.ResultABCIQuery, error) {
return &coretypes.ResultABCIQuery{Response: m.responseQuery}, nil

Check warning on line 40 in testutil/cli/tm_mocks.go

View check run for this annotation

Codecov / codecov/patch

testutil/cli/tm_mocks.go#L39-L40

Added lines #L39 - L40 were not covered by tests
}
78 changes: 78 additions & 0 deletions types/module/testutil/codec.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
package testutil

import (
"github.com/Finschia/finschia-sdk/client"
"github.com/Finschia/finschia-sdk/codec"
"github.com/Finschia/finschia-sdk/codec/types"
"github.com/Finschia/finschia-sdk/std"
"github.com/Finschia/finschia-sdk/types/module"
"github.com/Finschia/finschia-sdk/x/auth/tx"
)

// TestEncodingConfig defines an encoding configuration that is used for testing
// purposes. Note, MakeTestEncodingConfig takes a series of AppModuleBasic types
// which should only contain the relevant module being tested and any potential
// dependencies.
type TestEncodingConfig struct {
InterfaceRegistry types.InterfaceRegistry
Codec codec.Codec
TxConfig client.TxConfig
Amino *codec.LegacyAmino
}

func MakeTestEncodingConfig(modules ...module.AppModuleBasic) TestEncodingConfig {
aminoCdc := codec.NewLegacyAmino()
interfaceRegistry := types.NewInterfaceRegistry()
cdc := codec.NewProtoCodec(interfaceRegistry)

encCfg := TestEncodingConfig{
InterfaceRegistry: interfaceRegistry,
Codec: cdc,
TxConfig: tx.NewTxConfig(cdc, tx.DefaultSignModes),
Amino: aminoCdc,
}

mb := module.NewBasicManager(modules...)

std.RegisterLegacyAminoCodec(encCfg.Amino)
std.RegisterInterfaces(encCfg.InterfaceRegistry)
mb.RegisterLegacyAminoCodec(encCfg.Amino)
mb.RegisterInterfaces(encCfg.InterfaceRegistry)

return encCfg

Check warning on line 42 in types/module/testutil/codec.go

View check run for this annotation

Codecov / codecov/patch

types/module/testutil/codec.go#L23-L42

Added lines #L23 - L42 were not covered by tests
}

func MakeTestTxConfig() client.TxConfig {
interfaceRegistry := types.NewInterfaceRegistry()
cdc := codec.NewProtoCodec(interfaceRegistry)
return tx.NewTxConfig(cdc, tx.DefaultSignModes)

Check warning on line 48 in types/module/testutil/codec.go

View check run for this annotation

Codecov / codecov/patch

types/module/testutil/codec.go#L45-L48

Added lines #L45 - L48 were not covered by tests
}

type TestBuilderTxConfig struct {
client.TxConfig
TxBuilder *TestTxBuilder
}

func MakeBuilderTestTxConfig() TestBuilderTxConfig {
return TestBuilderTxConfig{
TxConfig: MakeTestTxConfig(),
}

Check warning on line 59 in types/module/testutil/codec.go

View check run for this annotation

Codecov / codecov/patch

types/module/testutil/codec.go#L56-L59

Added lines #L56 - L59 were not covered by tests
}

func (cfg TestBuilderTxConfig) NewTxBuilder() client.TxBuilder {
if cfg.TxBuilder == nil {
cfg.TxBuilder = &TestTxBuilder{
TxBuilder: cfg.TxConfig.NewTxBuilder(),
}
}
return cfg.TxBuilder

Check warning on line 68 in types/module/testutil/codec.go

View check run for this annotation

Codecov / codecov/patch

types/module/testutil/codec.go#L62-L68

Added lines #L62 - L68 were not covered by tests
}

type TestTxBuilder struct {
client.TxBuilder
ExtOptions []*types.Any
}

func (b *TestTxBuilder) SetExtensionOptions(extOpts ...*types.Any) {
b.ExtOptions = extOpts

Check warning on line 77 in types/module/testutil/codec.go

View check run for this annotation

Codecov / codecov/patch

types/module/testutil/codec.go#L76-L77

Added lines #L76 - L77 were not covered by tests
}
6 changes: 3 additions & 3 deletions x/fbridge/client/cli/query.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import (
)

const (
flagSequences = "sequences"
FlagSequences = "sequences"
)

// NewQueryCmd returns the query commands for fbridge module
Expand Down Expand Up @@ -100,7 +100,7 @@ func NewQuerySeqToBlocknumsCmd() *cobra.Command {
}
qc := types.NewQueryClient(clientCtx)

seqSlice, err := cmd.Flags().GetInt64Slice(flagSequences)
seqSlice, err := cmd.Flags().GetInt64Slice(FlagSequences)
if err != nil {
return err
}
Expand All @@ -119,7 +119,7 @@ func NewQuerySeqToBlocknumsCmd() *cobra.Command {
},
}

cmd.Flags().Int64Slice(flagSequences, []int64{}, "comma separated list of bridge sequnece numbers")
cmd.Flags().Int64Slice(FlagSequences, []int64{}, "comma separated list of bridge sequnece numbers")
flags.AddQueryFlagsToCmd(cmd)
return cmd
}
Expand Down
Loading
Loading