cosmos-sdk/baseapp/testutil/messages.go
2024-07-26 10:53:32 +00:00

90 lines
2.4 KiB
Go

package testutil
import (
errorsmod "cosmossdk.io/errors"
codectestutil "github.com/cosmos/cosmos-sdk/codec/testutil"
"github.com/cosmos/cosmos-sdk/codec/types"
"github.com/cosmos/cosmos-sdk/crypto/codec"
sdk "github.com/cosmos/cosmos-sdk/types"
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
"github.com/cosmos/cosmos-sdk/types/msgservice"
)
func RegisterInterfaces(registry types.InterfaceRegistry) {
registry.RegisterImplementations(
(*sdk.Msg)(nil),
&MsgCounter{},
&MsgCounter2{},
&MsgKeyValue{},
&MsgNestedMessages{},
&MsgSend{},
)
msgservice.RegisterMsgServiceDesc(registry, &_Counter_serviceDesc)
msgservice.RegisterMsgServiceDesc(registry, &_Counter2_serviceDesc)
msgservice.RegisterMsgServiceDesc(registry, &_KeyValue_serviceDesc)
msgservice.RegisterMsgServiceDesc(registry, &_NestedMessages_serviceDesc)
msgservice.RegisterMsgServiceDesc(registry, &_Send_serviceDesc)
codec.RegisterInterfaces(registry)
}
var _ sdk.Msg = &MsgCounter{}
func (msg *MsgCounter) GetSigners() []sdk.AccAddress { return []sdk.AccAddress{} }
func (msg *MsgCounter) ValidateBasic() error {
if msg.Counter >= 0 {
return nil
}
return errorsmod.Wrap(sdkerrors.ErrInvalidSequence, "counter should be a non-negative integer")
}
var _ sdk.Msg = &MsgCounter2{}
func (msg *MsgCounter2) GetSigners() []sdk.AccAddress { return []sdk.AccAddress{} }
func (msg *MsgCounter2) ValidateBasic() error {
if msg.Counter >= 0 {
return nil
}
return errorsmod.Wrap(sdkerrors.ErrInvalidSequence, "counter should be a non-negative integer")
}
var _ sdk.Msg = &MsgKeyValue{}
func (msg *MsgKeyValue) GetSigners() []sdk.AccAddress {
if len(msg.Signer) == 0 {
return []sdk.AccAddress{}
}
return []sdk.AccAddress{sdk.MustAccAddressFromBech32(msg.Signer)}
}
func (msg *MsgKeyValue) ValidateBasic() error {
if msg.Key == nil {
return errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "key cannot be nil")
}
if msg.Value == nil {
return errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "value cannot be nil")
}
return nil
}
func (msg *MsgNestedMessages) GetMsgs() ([]sdk.Msg, error) {
cdc := codectestutil.CodecOptions{}.NewCodec()
RegisterInterfaces(cdc.InterfaceRegistry())
msgs := make([]sdk.Msg, len(msg.GetMessages()))
for i, m := range msg.GetMessages() {
mm, err := cdc.InterfaceRegistry().Resolve(m.TypeUrl)
if err != nil {
return nil, err
}
err = cdc.UnpackAny(m, &mm)
if err != nil {
return nil, err
}
msgs[i] = mm
}
return msgs, nil
}