github.com/Finschia/finschia-sdk@v0.48.1/x/auth/signing/handler_map_test.go (about)

     1  package signing_test
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/require"
     7  
     8  	"github.com/Finschia/finschia-sdk/crypto/keys/secp256k1"
     9  	sdk "github.com/Finschia/finschia-sdk/types"
    10  	signingtypes "github.com/Finschia/finschia-sdk/types/tx/signing"
    11  	"github.com/Finschia/finschia-sdk/x/auth/legacy/legacytx"
    12  	"github.com/Finschia/finschia-sdk/x/auth/signing"
    13  	banktypes "github.com/Finschia/finschia-sdk/x/bank/types"
    14  )
    15  
    16  func MakeTestHandlerMap() signing.SignModeHandler {
    17  	return signing.NewSignModeHandlerMap(
    18  		signingtypes.SignMode_SIGN_MODE_LEGACY_AMINO_JSON,
    19  		[]signing.SignModeHandler{
    20  			legacytx.NewStdTxSignModeHandler(),
    21  		},
    22  	)
    23  }
    24  
    25  func TestHandlerMap_GetSignBytes(t *testing.T) {
    26  	priv1 := secp256k1.GenPrivKey()
    27  	addr1 := sdk.AccAddress(priv1.PubKey().Address())
    28  	priv2 := secp256k1.GenPrivKey()
    29  	addr2 := sdk.AccAddress(priv2.PubKey().Address())
    30  
    31  	coins := sdk.Coins{sdk.NewInt64Coin("foocoin", 10)}
    32  
    33  	fee := legacytx.StdFee{
    34  		Amount: coins,
    35  		Gas:    10000,
    36  	}
    37  	memo := "foo"
    38  	msgs := []sdk.Msg{
    39  		&banktypes.MsgSend{
    40  			FromAddress: addr1.String(),
    41  			ToAddress:   addr2.String(),
    42  			Amount:      coins,
    43  		},
    44  	}
    45  
    46  	tx := legacytx.StdTx{
    47  		Msgs:       msgs,
    48  		Fee:        fee,
    49  		Signatures: nil,
    50  		Memo:       memo,
    51  	}
    52  
    53  	var (
    54  		chainId        = "test-chain"
    55  		accNum  uint64 = 7
    56  		seqNum  uint64 = 7
    57  	)
    58  
    59  	handler := MakeTestHandlerMap()
    60  	aminoJSONHandler := legacytx.NewStdTxSignModeHandler()
    61  
    62  	signingData := signing.SignerData{
    63  		ChainID:       chainId,
    64  		AccountNumber: accNum,
    65  		Sequence:      seqNum,
    66  	}
    67  	signBz, err := handler.GetSignBytes(signingtypes.SignMode_SIGN_MODE_LEGACY_AMINO_JSON, signingData, tx)
    68  	require.NoError(t, err)
    69  
    70  	expectedSignBz, err := aminoJSONHandler.GetSignBytes(signingtypes.SignMode_SIGN_MODE_LEGACY_AMINO_JSON, signingData, tx)
    71  	require.NoError(t, err)
    72  
    73  	require.Equal(t, expectedSignBz, signBz)
    74  
    75  	// expect error with wrong sign mode
    76  	_, err = aminoJSONHandler.GetSignBytes(signingtypes.SignMode_SIGN_MODE_DIRECT, signingData, tx)
    77  	require.Error(t, err)
    78  }
    79  
    80  func TestHandlerMap_DefaultMode(t *testing.T) {
    81  	handler := MakeTestHandlerMap()
    82  	require.Equal(t, signingtypes.SignMode_SIGN_MODE_LEGACY_AMINO_JSON, handler.DefaultMode())
    83  }
    84  
    85  func TestHandlerMap_Modes(t *testing.T) {
    86  	handler := MakeTestHandlerMap()
    87  	modes := handler.Modes()
    88  	require.Contains(t, modes, signingtypes.SignMode_SIGN_MODE_LEGACY_AMINO_JSON)
    89  	require.Len(t, modes, 1)
    90  }