github.com/Finschia/finschia-sdk@v0.49.1/x/auth/tx/legacy_amino_json_test.go (about)

     1  package tx
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/require"
     7  
     8  	cdctypes "github.com/Finschia/finschia-sdk/codec/types"
     9  	"github.com/Finschia/finschia-sdk/testutil/testdata"
    10  	sdk "github.com/Finschia/finschia-sdk/types"
    11  	signingtypes "github.com/Finschia/finschia-sdk/types/tx/signing"
    12  	"github.com/Finschia/finschia-sdk/x/auth/legacy/legacytx"
    13  	"github.com/Finschia/finschia-sdk/x/auth/signing"
    14  )
    15  
    16  var (
    17  	_, _, addr1 = testdata.KeyTestPubAddr()
    18  	_, _, addr2 = testdata.KeyTestPubAddr()
    19  
    20  	coins   = sdk.Coins{sdk.NewInt64Coin("foocoin", 10)}
    21  	gas     = uint64(10000)
    22  	msg     = testdata.NewTestMsg(addr1, addr2)
    23  	memo    = "foo"
    24  	timeout = uint64(10)
    25  )
    26  
    27  func buildTx(t *testing.T, bldr *wrapper) {
    28  	t.Helper()
    29  	bldr.SetFeeAmount(coins)
    30  	bldr.SetGasLimit(gas)
    31  	bldr.SetMemo(memo)
    32  	bldr.SetTimeoutHeight(timeout)
    33  	require.NoError(t, bldr.SetMsgs(msg))
    34  }
    35  
    36  func TestLegacyAminoJSONHandler_GetSignBytes(t *testing.T) {
    37  	bldr := newBuilder()
    38  	buildTx(t, bldr)
    39  	tx := bldr.GetTx()
    40  
    41  	var (
    42  		chainId        = "test-chain"
    43  		accNum  uint64 = 7
    44  		seqNum  uint64 = 7
    45  	)
    46  
    47  	handler := signModeLegacyAminoJSONHandler{}
    48  	signingData := signing.SignerData{
    49  		ChainID:       chainId,
    50  		AccountNumber: accNum,
    51  		Sequence:      seqNum,
    52  	}
    53  	signBz, err := handler.GetSignBytes(signingtypes.SignMode_SIGN_MODE_LEGACY_AMINO_JSON, signingData, tx)
    54  	require.NoError(t, err)
    55  
    56  	expectedSignBz := legacytx.StdSignBytes(chainId, accNum, seqNum, timeout, legacytx.StdFee{
    57  		Amount: coins,
    58  		Gas:    gas,
    59  	}, []sdk.Msg{msg}, memo)
    60  
    61  	require.Equal(t, expectedSignBz, signBz)
    62  
    63  	// expect error with wrong sign mode
    64  	_, err = handler.GetSignBytes(signingtypes.SignMode_SIGN_MODE_DIRECT, signingData, tx)
    65  	require.Error(t, err)
    66  
    67  	// expect error with extension options
    68  	bldr = newBuilder()
    69  	buildTx(t, bldr)
    70  	any, err := cdctypes.NewAnyWithValue(testdata.NewTestMsg())
    71  	require.NoError(t, err)
    72  	bldr.tx.Body.ExtensionOptions = []*cdctypes.Any{any}
    73  	tx = bldr.GetTx()
    74  	_, err = handler.GetSignBytes(signingtypes.SignMode_SIGN_MODE_LEGACY_AMINO_JSON, signingData, tx)
    75  	require.Error(t, err)
    76  
    77  	// expect error with non-critical extension options
    78  	bldr = newBuilder()
    79  	buildTx(t, bldr)
    80  	bldr.tx.Body.NonCriticalExtensionOptions = []*cdctypes.Any{any}
    81  	tx = bldr.GetTx()
    82  	_, err = handler.GetSignBytes(signingtypes.SignMode_SIGN_MODE_LEGACY_AMINO_JSON, signingData, tx)
    83  	require.Error(t, err)
    84  }
    85  
    86  func TestLegacyAminoJSONHandler_DefaultMode(t *testing.T) {
    87  	handler := signModeLegacyAminoJSONHandler{}
    88  	require.Equal(t, signingtypes.SignMode_SIGN_MODE_LEGACY_AMINO_JSON, handler.DefaultMode())
    89  }
    90  
    91  func TestLegacyAminoJSONHandler_Modes(t *testing.T) {
    92  	handler := signModeLegacyAminoJSONHandler{}
    93  	require.Equal(t, []signingtypes.SignMode{signingtypes.SignMode_SIGN_MODE_LEGACY_AMINO_JSON}, handler.Modes())
    94  }