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 }