github.com/Finschia/finschia-sdk@v0.48.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  	bldr.SetFeeAmount(coins)
    29  	bldr.SetGasLimit(gas)
    30  	bldr.SetMemo(memo)
    31  	bldr.SetTimeoutHeight(timeout)
    32  	require.NoError(t, bldr.SetMsgs(msg))
    33  }
    34  
    35  func TestLegacyAminoJSONHandler_GetSignBytes(t *testing.T) {
    36  	bldr := newBuilder()
    37  	buildTx(t, bldr)
    38  	tx := bldr.GetTx()
    39  
    40  	var (
    41  		chainId        = "test-chain"
    42  		accNum  uint64 = 7
    43  		seqNum  uint64 = 7
    44  	)
    45  
    46  	handler := signModeLegacyAminoJSONHandler{}
    47  	signingData := signing.SignerData{
    48  		ChainID:       chainId,
    49  		AccountNumber: accNum,
    50  		Sequence:      seqNum,
    51  	}
    52  	signBz, err := handler.GetSignBytes(signingtypes.SignMode_SIGN_MODE_LEGACY_AMINO_JSON, signingData, tx)
    53  	require.NoError(t, err)
    54  
    55  	expectedSignBz := legacytx.StdSignBytes(chainId, accNum, seqNum, timeout, legacytx.StdFee{
    56  		Amount: coins,
    57  		Gas:    gas,
    58  	}, []sdk.Msg{msg}, memo)
    59  
    60  	require.Equal(t, expectedSignBz, signBz)
    61  
    62  	// expect error with wrong sign mode
    63  	_, err = handler.GetSignBytes(signingtypes.SignMode_SIGN_MODE_DIRECT, signingData, tx)
    64  	require.Error(t, err)
    65  
    66  	// expect error with extension options
    67  	bldr = newBuilder()
    68  	buildTx(t, bldr)
    69  	any, err := cdctypes.NewAnyWithValue(testdata.NewTestMsg())
    70  	require.NoError(t, err)
    71  	bldr.tx.Body.ExtensionOptions = []*cdctypes.Any{any}
    72  	tx = bldr.GetTx()
    73  	signBz, err = handler.GetSignBytes(signingtypes.SignMode_SIGN_MODE_LEGACY_AMINO_JSON, signingData, tx)
    74  	require.Error(t, err)
    75  
    76  	// expect error with non-critical extension options
    77  	bldr = newBuilder()
    78  	buildTx(t, bldr)
    79  	bldr.tx.Body.NonCriticalExtensionOptions = []*cdctypes.Any{any}
    80  	tx = bldr.GetTx()
    81  	signBz, err = handler.GetSignBytes(signingtypes.SignMode_SIGN_MODE_LEGACY_AMINO_JSON, signingData, tx)
    82  	require.Error(t, err)
    83  }
    84  
    85  func TestLegacyAminoJSONHandler_DefaultMode(t *testing.T) {
    86  	handler := signModeLegacyAminoJSONHandler{}
    87  	require.Equal(t, signingtypes.SignMode_SIGN_MODE_LEGACY_AMINO_JSON, handler.DefaultMode())
    88  }
    89  
    90  func TestLegacyAminoJSONHandler_Modes(t *testing.T) {
    91  	handler := signModeLegacyAminoJSONHandler{}
    92  	require.Equal(t, []signingtypes.SignMode{signingtypes.SignMode_SIGN_MODE_LEGACY_AMINO_JSON}, handler.Modes())
    93  }