github.com/cosmos/cosmos-sdk@v0.50.10/types/module/testutil/codec.go (about)

     1  package testutil
     2  
     3  import (
     4  	"github.com/cosmos/cosmos-sdk/client"
     5  	"github.com/cosmos/cosmos-sdk/codec"
     6  	"github.com/cosmos/cosmos-sdk/codec/testutil"
     7  	"github.com/cosmos/cosmos-sdk/codec/types"
     8  	"github.com/cosmos/cosmos-sdk/std"
     9  	"github.com/cosmos/cosmos-sdk/types/module"
    10  	"github.com/cosmos/cosmos-sdk/x/auth/tx"
    11  )
    12  
    13  // TestEncodingConfig defines an encoding configuration that is used for testing
    14  // purposes. Note, MakeTestEncodingConfig takes a series of AppModuleBasic types
    15  // which should only contain the relevant module being tested and any potential
    16  // dependencies.
    17  type TestEncodingConfig struct {
    18  	InterfaceRegistry types.InterfaceRegistry
    19  	Codec             codec.Codec
    20  	TxConfig          client.TxConfig
    21  	Amino             *codec.LegacyAmino
    22  }
    23  
    24  func MakeTestEncodingConfig(modules ...module.AppModuleBasic) TestEncodingConfig {
    25  	aminoCodec := codec.NewLegacyAmino()
    26  	interfaceRegistry := testutil.CodecOptions{}.NewInterfaceRegistry()
    27  	codec := codec.NewProtoCodec(interfaceRegistry)
    28  
    29  	encCfg := TestEncodingConfig{
    30  		InterfaceRegistry: interfaceRegistry,
    31  		Codec:             codec,
    32  		TxConfig:          tx.NewTxConfig(codec, tx.DefaultSignModes),
    33  		Amino:             aminoCodec,
    34  	}
    35  
    36  	mb := module.NewBasicManager(modules...)
    37  
    38  	std.RegisterLegacyAminoCodec(encCfg.Amino)
    39  	std.RegisterInterfaces(encCfg.InterfaceRegistry)
    40  	mb.RegisterLegacyAminoCodec(encCfg.Amino)
    41  	mb.RegisterInterfaces(encCfg.InterfaceRegistry)
    42  
    43  	return encCfg
    44  }
    45  
    46  func MakeTestTxConfig() client.TxConfig {
    47  	interfaceRegistry := testutil.CodecOptions{}.NewInterfaceRegistry()
    48  	cdc := codec.NewProtoCodec(interfaceRegistry)
    49  	return tx.NewTxConfig(cdc, tx.DefaultSignModes)
    50  }
    51  
    52  type TestBuilderTxConfig struct {
    53  	client.TxConfig
    54  	TxBuilder *TestTxBuilder
    55  }
    56  
    57  func MakeBuilderTestTxConfig() TestBuilderTxConfig {
    58  	return TestBuilderTxConfig{
    59  		TxConfig: MakeTestTxConfig(),
    60  	}
    61  }
    62  
    63  func (cfg TestBuilderTxConfig) NewTxBuilder() client.TxBuilder {
    64  	if cfg.TxBuilder == nil {
    65  		cfg.TxBuilder = &TestTxBuilder{
    66  			TxBuilder: cfg.TxConfig.NewTxBuilder(),
    67  		}
    68  	}
    69  	return cfg.TxBuilder
    70  }
    71  
    72  type TestTxBuilder struct {
    73  	client.TxBuilder
    74  	ExtOptions []*types.Any
    75  }
    76  
    77  func (b *TestTxBuilder) SetExtensionOptions(extOpts ...*types.Any) {
    78  	b.ExtOptions = extOpts
    79  }