Some checks failed
CodeQL / Analyze (push) Waiting to run
golangci-lint / lint (push) Waiting to run
Tests / Code Coverage / build (amd64) (push) Waiting to run
Tests / Code Coverage / build (arm64) (push) Waiting to run
Tests / Code Coverage / unit-tests (map[additional-args:-tags="test_e2e" name:e2e path:./e2e]) (push) Waiting to run
Tests / Code Coverage / unit-tests (map[name:08-wasm path:./modules/light-clients/08-wasm]) (push) Waiting to run
Tests / Code Coverage / unit-tests (map[name:ibc-go path:.]) (push) Waiting to run
Docker Build & Push Simapp (main) / docker-build (push) Has been cancelled
129 lines
5.3 KiB
Go
129 lines
5.3 KiB
Go
package testsuite
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/hex"
|
|
|
|
"github.com/cosmos/gogoproto/jsonpb"
|
|
"github.com/cosmos/gogoproto/proto"
|
|
|
|
upgradetypes "cosmossdk.io/x/upgrade/types"
|
|
|
|
"git.cw.tr/mukan-network/mukan-sdk/codec"
|
|
codectypes "git.cw.tr/mukan-network/mukan-sdk/codec/types"
|
|
cryptocodec "git.cw.tr/mukan-network/mukan-sdk/crypto/codec"
|
|
sdk "git.cw.tr/mukan-network/mukan-sdk/types"
|
|
"git.cw.tr/mukan-network/mukan-sdk/types/module/testutil"
|
|
txtypes "git.cw.tr/mukan-network/mukan-sdk/types/tx"
|
|
authtypes "git.cw.tr/mukan-network/mukan-sdk/x/auth/types"
|
|
"git.cw.tr/mukan-network/mukan-sdk/x/authz"
|
|
banktypes "git.cw.tr/mukan-network/mukan-sdk/x/bank/types"
|
|
govv1 "git.cw.tr/mukan-network/mukan-sdk/x/gov/types/v1"
|
|
govv1beta1 "git.cw.tr/mukan-network/mukan-sdk/x/gov/types/v1beta1"
|
|
grouptypes "git.cw.tr/mukan-network/mukan-sdk/x/group"
|
|
proposaltypes "git.cw.tr/mukan-network/mukan-sdk/x/params/types/proposal"
|
|
|
|
wasmtypes "github.com/cosmos/ibc-go/modules/light-clients/08-wasm/v10/types"
|
|
icacontrollertypes "git.cw.tr/mukan-network/mukan-ibc/modules/apps/27-interchain-accounts/controller/types"
|
|
icahosttypes "git.cw.tr/mukan-network/mukan-ibc/modules/apps/27-interchain-accounts/host/types"
|
|
transfertypes "git.cw.tr/mukan-network/mukan-ibc/modules/apps/transfer/types"
|
|
v7migrations "git.cw.tr/mukan-network/mukan-ibc/modules/core/02-client/migrations/v7"
|
|
clienttypes "git.cw.tr/mukan-network/mukan-ibc/modules/core/02-client/types"
|
|
connectiontypes "git.cw.tr/mukan-network/mukan-ibc/modules/core/03-connection/types"
|
|
channeltypes "git.cw.tr/mukan-network/mukan-ibc/modules/core/04-channel/types"
|
|
channeltypesv2 "git.cw.tr/mukan-network/mukan-ibc/modules/core/04-channel/v2/types"
|
|
solomachine "git.cw.tr/mukan-network/mukan-ibc/modules/light-clients/06-solomachine"
|
|
ibctmtypes "git.cw.tr/mukan-network/mukan-ibc/modules/light-clients/07-tendermint"
|
|
ibctesting "git.cw.tr/mukan-network/mukan-ibc/testing"
|
|
)
|
|
|
|
// Codec returns the global E2E protobuf codec.
|
|
func Codec() *codec.ProtoCodec {
|
|
cdc, _ := codecAndEncodingConfig()
|
|
return cdc
|
|
}
|
|
|
|
// SDKEncodingConfig returns the global E2E encoding config.
|
|
func SDKEncodingConfig() *testutil.TestEncodingConfig {
|
|
_, cfg := codecAndEncodingConfig()
|
|
return &testutil.TestEncodingConfig{
|
|
InterfaceRegistry: cfg.InterfaceRegistry,
|
|
Codec: cfg.Codec,
|
|
TxConfig: cfg.TxConfig,
|
|
Amino: cfg.Amino,
|
|
}
|
|
}
|
|
|
|
// codecAndEncodingConfig returns the codec and encoding config used in the E2E tests.
|
|
// Note: any new types added to the codec must be added here.
|
|
func codecAndEncodingConfig() (*codec.ProtoCodec, testutil.TestEncodingConfig) {
|
|
cfg := testutil.MakeTestEncodingConfig()
|
|
|
|
// ibc types
|
|
icacontrollertypes.RegisterInterfaces(cfg.InterfaceRegistry)
|
|
icahosttypes.RegisterInterfaces(cfg.InterfaceRegistry)
|
|
solomachine.RegisterInterfaces(cfg.InterfaceRegistry)
|
|
v7migrations.RegisterInterfaces(cfg.InterfaceRegistry)
|
|
transfertypes.RegisterInterfaces(cfg.InterfaceRegistry)
|
|
clienttypes.RegisterInterfaces(cfg.InterfaceRegistry)
|
|
channeltypes.RegisterInterfaces(cfg.InterfaceRegistry)
|
|
connectiontypes.RegisterInterfaces(cfg.InterfaceRegistry)
|
|
ibctmtypes.RegisterInterfaces(cfg.InterfaceRegistry)
|
|
wasmtypes.RegisterInterfaces(cfg.InterfaceRegistry)
|
|
channeltypesv2.RegisterInterfaces(cfg.InterfaceRegistry)
|
|
|
|
// all other types
|
|
upgradetypes.RegisterInterfaces(cfg.InterfaceRegistry)
|
|
banktypes.RegisterInterfaces(cfg.InterfaceRegistry)
|
|
govv1beta1.RegisterInterfaces(cfg.InterfaceRegistry)
|
|
govv1.RegisterInterfaces(cfg.InterfaceRegistry)
|
|
authtypes.RegisterInterfaces(cfg.InterfaceRegistry)
|
|
cryptocodec.RegisterInterfaces(cfg.InterfaceRegistry)
|
|
grouptypes.RegisterInterfaces(cfg.InterfaceRegistry)
|
|
proposaltypes.RegisterInterfaces(cfg.InterfaceRegistry)
|
|
authz.RegisterInterfaces(cfg.InterfaceRegistry)
|
|
txtypes.RegisterInterfaces(cfg.InterfaceRegistry)
|
|
|
|
cdc := codec.NewProtoCodec(cfg.InterfaceRegistry)
|
|
return cdc, cfg
|
|
}
|
|
|
|
// UnmarshalMsgResponses attempts to unmarshal the tx msg responses into the provided message types.
|
|
func UnmarshalMsgResponses(txResp sdk.TxResponse, msgs ...codec.ProtoMarshaler) error {
|
|
cdc := Codec()
|
|
bz, err := hex.DecodeString(txResp.Data)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return ibctesting.UnmarshalMsgResponses(cdc, bz, msgs...)
|
|
}
|
|
|
|
// MustProtoMarshalJSON provides an auxiliary function to return Proto3 JSON encoded
|
|
// bytes of a message. This function should be used when marshalling a proto.Message
|
|
// from the e2e tests. This function strips out unknown fields. This is useful for
|
|
// backwards compatibility tests where the types imported by the e2e package have
|
|
// new fields that older versions do not recognize.
|
|
func MustProtoMarshalJSON(msg proto.Message) []byte {
|
|
anyResolver := codectypes.NewInterfaceRegistry()
|
|
|
|
// EmitDefaults is set to false to prevent marshalling of unpopulated fields (memo)
|
|
// OrigName and the anyResovler match the fields the original SDK function would expect
|
|
// in order to minimize changes.
|
|
|
|
// OrigName is true since there is no particular reason to use camel case
|
|
// The any resolver is empty, but provided anyways.
|
|
jm := &jsonpb.Marshaler{OrigName: true, EmitDefaults: false, AnyResolver: anyResolver}
|
|
|
|
err := codectypes.UnpackInterfaces(msg, codectypes.ProtoJSONPacker{JSONPBMarshaler: jm})
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
buf := new(bytes.Buffer)
|
|
if err := jm.Marshal(buf, msg); err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
return buf.Bytes()
|
|
}
|