github.com/vipernet-xyz/tm@v0.34.24/types/protobuf_test.go (about)

     1  package types
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/assert"
     7  	"github.com/stretchr/testify/require"
     8  
     9  	abci "github.com/vipernet-xyz/tm/abci/types"
    10  	"github.com/vipernet-xyz/tm/crypto"
    11  	"github.com/vipernet-xyz/tm/crypto/ed25519"
    12  	cryptoenc "github.com/vipernet-xyz/tm/crypto/encoding"
    13  )
    14  
    15  func TestABCIPubKey(t *testing.T) {
    16  	pkEd := ed25519.GenPrivKey().PubKey()
    17  	err := testABCIPubKey(t, pkEd, ABCIPubKeyTypeEd25519)
    18  	assert.NoError(t, err)
    19  }
    20  
    21  func testABCIPubKey(t *testing.T, pk crypto.PubKey, typeStr string) error {
    22  	abciPubKey, err := cryptoenc.PubKeyToProto(pk)
    23  	require.NoError(t, err)
    24  	pk2, err := cryptoenc.PubKeyFromProto(abciPubKey)
    25  	require.NoError(t, err)
    26  	require.Equal(t, pk, pk2)
    27  	return nil
    28  }
    29  
    30  func TestABCIValidators(t *testing.T) {
    31  	pkEd := ed25519.GenPrivKey().PubKey()
    32  
    33  	// correct validator
    34  	tmValExpected := NewValidator(pkEd, 10)
    35  
    36  	tmVal := NewValidator(pkEd, 10)
    37  
    38  	abciVal := TM2PB.ValidatorUpdate(tmVal)
    39  	tmVals, err := PB2TM.ValidatorUpdates([]abci.ValidatorUpdate{abciVal})
    40  	assert.Nil(t, err)
    41  	assert.Equal(t, tmValExpected, tmVals[0])
    42  
    43  	abciVals := TM2PB.ValidatorUpdates(NewValidatorSet(tmVals))
    44  	assert.Equal(t, []abci.ValidatorUpdate{abciVal}, abciVals)
    45  
    46  	// val with address
    47  	tmVal.Address = pkEd.Address()
    48  
    49  	abciVal = TM2PB.ValidatorUpdate(tmVal)
    50  	tmVals, err = PB2TM.ValidatorUpdates([]abci.ValidatorUpdate{abciVal})
    51  	assert.Nil(t, err)
    52  	assert.Equal(t, tmValExpected, tmVals[0])
    53  }
    54  
    55  func TestABCIConsensusParams(t *testing.T) {
    56  	cp := DefaultConsensusParams()
    57  	abciCP := TM2PB.ConsensusParams(cp)
    58  	cp2 := UpdateConsensusParams(*cp, abciCP)
    59  
    60  	assert.Equal(t, *cp, cp2)
    61  }
    62  
    63  type pubKeyEddie struct{}
    64  
    65  func (pubKeyEddie) Address() Address                            { return []byte{} }
    66  func (pubKeyEddie) Bytes() []byte                               { return []byte{} }
    67  func (pubKeyEddie) VerifySignature(msg []byte, sig []byte) bool { return false }
    68  func (pubKeyEddie) Equals(crypto.PubKey) bool                   { return false }
    69  func (pubKeyEddie) String() string                              { return "" }
    70  func (pubKeyEddie) Type() string                                { return "pubKeyEddie" }
    71  
    72  func TestABCIValidatorFromPubKeyAndPower(t *testing.T) {
    73  	pubkey := ed25519.GenPrivKey().PubKey()
    74  
    75  	abciVal := TM2PB.NewValidatorUpdate(pubkey, 10)
    76  	assert.Equal(t, int64(10), abciVal.Power)
    77  
    78  	assert.Panics(t, func() { TM2PB.NewValidatorUpdate(nil, 10) })
    79  	assert.Panics(t, func() { TM2PB.NewValidatorUpdate(pubKeyEddie{}, 10) })
    80  }
    81  
    82  func TestABCIValidatorWithoutPubKey(t *testing.T) {
    83  	pkEd := ed25519.GenPrivKey().PubKey()
    84  
    85  	abciVal := TM2PB.Validator(NewValidator(pkEd, 10))
    86  
    87  	// pubkey must be nil
    88  	tmValExpected := abci.Validator{
    89  		Address: pkEd.Address(),
    90  		Power:   10,
    91  	}
    92  
    93  	assert.Equal(t, tmValExpected, abciVal)
    94  }