diff --git a/CHANGELOG.md b/CHANGELOG.md index 78228b5881..8a7503e57b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -62,6 +62,7 @@ Every module contains its own CHANGELOG.md. Please refer to the module you are i ### Bug Fixes +* (x/auth/tx) [#23492](https://github.com/cosmos/cosmos-sdk/pull/23492) Add missing timeoutTimestamp in newBuilderFromDecodedTx. * (query) [#23002](https://github.com/cosmos/cosmos-sdk/pull/23002) Fix collection filtered pagination. * (x/auth/tx) [#23170](https://github.com/cosmos/cosmos-sdk/pull/23170) Avoid panic from `newWrapperFromDecodedTx` when `AuthInfo.Fee` is optional in decodedTx. * (x/auth/tx) [#23144](https://github.com/cosmos/cosmos-sdk/pull/23144) Add missing `CacheWithValue` for `ExtensionOptions`. diff --git a/x/auth/tx/builder.go b/x/auth/tx/builder.go index d8dcc5edb3..e67fb21b9b 100644 --- a/x/auth/tx/builder.go +++ b/x/auth/tx/builder.go @@ -63,6 +63,7 @@ func newBuilderFromDecodedTx( codec: codec, msgs: decoded.Messages, timeoutHeight: decoded.GetTimeoutHeight(), + timeoutTimestamp: decoded.GetTimeoutTimeStamp(), granter: decoded.FeeGranter(), payer: payer, unordered: decoded.GetUnordered(), diff --git a/x/auth/tx/builder_test.go b/x/auth/tx/builder_test.go index 9667f42d7b..ac9733dd8d 100644 --- a/x/auth/tx/builder_test.go +++ b/x/auth/tx/builder_test.go @@ -6,10 +6,32 @@ import ( any "github.com/cosmos/gogoproto/types/any" "github.com/stretchr/testify/require" + "github.com/cosmos/cosmos-sdk/client" + codectestutil "github.com/cosmos/cosmos-sdk/codec/testutil" + "github.com/cosmos/cosmos-sdk/testutil" "github.com/cosmos/cosmos-sdk/types/tx" + authclient "github.com/cosmos/cosmos-sdk/x/auth/client" ) func TestIntoV2SignerInfo(t *testing.T) { require.NotNil(t, intoV2SignerInfo([]*tx.SignerInfo{{}})) require.NotNil(t, intoV2SignerInfo([]*tx.SignerInfo{{PublicKey: &any.Any{}}})) } + +func TestBuilderWithTimeoutTimestamp(t *testing.T) { + cdc := codectestutil.CodecOptions{}.NewCodec() + interfaceRegistry := cdc.InterfaceRegistry() + signingCtx := interfaceRegistry.SigningContext() + txConfig := NewTxConfig(cdc, signingCtx.AddressCodec(), signingCtx.ValidatorAddressCodec(), DefaultSignModes) + txBuilder := txConfig.NewTxBuilder() + encodedTx, err := txConfig.TxJSONEncoder()(txBuilder.GetTx()) + require.NoError(t, err) + file := testutil.WriteToNewTempFile(t, string(encodedTx)) + clientCtx := client.Context{InterfaceRegistry: interfaceRegistry, TxConfig: txConfig} + decodedTx, err := authclient.ReadTxFromFile(clientCtx, file.Name()) + require.NoError(t, err) + txBldr, err := txConfig.WrapTxBuilder(decodedTx) + require.NoError(t, err) + b := txBldr.(*builder) + require.False(t, b.timeoutTimestamp.IsZero()) +}