cosmos-sdk/client/v2/tx/encoder_test.go
Julián Toledano c8f4cf787b
feat(client/v2): factory (#20623)
Co-authored-by: Julien Robert <julien@rbrt.fr>
2024-10-03 12:45:10 +00:00

108 lines
2.5 KiB
Go

package tx
import (
"testing"
"github.com/stretchr/testify/require"
base "cosmossdk.io/api/cosmos/base/v1beta1"
countertypes "cosmossdk.io/api/cosmos/counter/v1"
apisigning "cosmossdk.io/api/cosmos/tx/signing/v1beta1"
"cosmossdk.io/core/transaction"
"github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1"
)
func getWrappedTx(t *testing.T) *wrappedTx {
t.Helper()
f, err := NewFactory(keybase, cdc, mockAccountRetriever{}, txConf, ac, mockClientConn{}, TxParameters{})
require.NoError(t, err)
pk := secp256k1.GenPrivKey().PubKey()
addr, _ := ac.BytesToString(pk.Address())
f.tx.msgs = []transaction.Msg{&countertypes.MsgIncreaseCounter{
Signer: addr,
Count: 0,
}}
require.NoError(t, err)
err = f.setFeePayer(addr)
require.NoError(t, err)
f.tx.fees = []*base.Coin{{
Denom: "cosmos",
Amount: "1000",
}}
err = f.setSignatures([]Signature{{
PubKey: pk,
Data: &SingleSignatureData{
SignMode: apisigning.SignMode_SIGN_MODE_DIRECT,
Signature: nil,
},
Sequence: 0,
}}...)
require.NoError(t, err)
wTx, err := f.getTx()
require.NoError(t, err)
return wTx
}
func Test_txEncoder_txDecoder(t *testing.T) {
wTx := getWrappedTx(t)
encodedTx, err := encodeTx(wTx)
require.NoError(t, err)
require.NotNil(t, encodedTx)
isDeterministic, err := encodeTx(wTx)
require.NoError(t, err)
require.NotNil(t, encodedTx)
require.Equal(t, encodedTx, isDeterministic)
f := decodeTx(cdc, decoder)
decodedTx, err := f(encodedTx)
require.NoError(t, err)
require.NotNil(t, decodedTx)
dTx, ok := decodedTx.(*wrappedTx)
require.True(t, ok)
require.Equal(t, wTx.TxRaw, dTx.TxRaw)
require.Equal(t, wTx.Tx.AuthInfo.String(), dTx.Tx.AuthInfo.String())
require.Equal(t, wTx.Tx.Body.String(), dTx.Tx.Body.String())
require.Equal(t, wTx.Tx.Signatures, dTx.Tx.Signatures)
}
func Test_txJsonEncoder_txJsonDecoder(t *testing.T) {
tests := []struct {
name string
}{
{
name: "json encode and decode tx",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
wTx := getWrappedTx(t)
encodedTx, err := encodeJsonTx(wTx)
require.NoError(t, err)
require.NotNil(t, encodedTx)
f := decodeJsonTx(cdc, decoder)
decodedTx, err := f(encodedTx)
require.NoError(t, err)
require.NotNil(t, decodedTx)
dTx, ok := decodedTx.(*wrappedTx)
require.True(t, ok)
require.Equal(t, wTx.TxRaw, dTx.TxRaw)
require.Equal(t, wTx.Tx.AuthInfo.String(), dTx.Tx.AuthInfo.String())
require.Equal(t, wTx.Tx.Body.String(), dTx.Tx.Body.String())
require.Equal(t, wTx.Tx.Signatures, dTx.Tx.Signatures)
})
}
}