github.com/vipernet-xyz/tm@v0.34.24/types/validator_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  
    10  func TestValidatorProtoBuf(t *testing.T) {
    11  	val, _ := RandValidator(true, 100)
    12  	testCases := []struct {
    13  		msg      string
    14  		v1       *Validator
    15  		expPass1 bool
    16  		expPass2 bool
    17  	}{
    18  		{"success validator", val, true, true},
    19  		{"failure empty", &Validator{}, false, false},
    20  		{"failure nil", nil, false, false},
    21  	}
    22  	for _, tc := range testCases {
    23  		protoVal, err := tc.v1.ToProto()
    24  
    25  		if tc.expPass1 {
    26  			require.NoError(t, err, tc.msg)
    27  		} else {
    28  			require.Error(t, err, tc.msg)
    29  		}
    30  
    31  		val, err := ValidatorFromProto(protoVal)
    32  		if tc.expPass2 {
    33  			require.NoError(t, err, tc.msg)
    34  			require.Equal(t, tc.v1, val, tc.msg)
    35  		} else {
    36  			require.Error(t, err, tc.msg)
    37  		}
    38  	}
    39  }
    40  
    41  func TestValidatorValidateBasic(t *testing.T) {
    42  	priv := NewMockPV()
    43  	pubKey, _ := priv.GetPubKey()
    44  	testCases := []struct {
    45  		val *Validator
    46  		err bool
    47  		msg string
    48  	}{
    49  		{
    50  			val: NewValidator(pubKey, 1),
    51  			err: false,
    52  			msg: "",
    53  		},
    54  		{
    55  			val: nil,
    56  			err: true,
    57  			msg: "nil validator",
    58  		},
    59  		{
    60  			val: &Validator{
    61  				PubKey: nil,
    62  			},
    63  			err: true,
    64  			msg: "validator does not have a public key",
    65  		},
    66  		{
    67  			val: NewValidator(pubKey, -1),
    68  			err: true,
    69  			msg: "validator has negative voting power",
    70  		},
    71  		{
    72  			val: &Validator{
    73  				PubKey:  pubKey,
    74  				Address: nil,
    75  			},
    76  			err: true,
    77  			msg: "validator address is the wrong size: ",
    78  		},
    79  		{
    80  			val: &Validator{
    81  				PubKey:  pubKey,
    82  				Address: []byte{'a'},
    83  			},
    84  			err: true,
    85  			msg: "validator address is the wrong size: 61",
    86  		},
    87  	}
    88  
    89  	for _, tc := range testCases {
    90  		err := tc.val.ValidateBasic()
    91  		if tc.err {
    92  			if assert.Error(t, err) {
    93  				assert.Equal(t, tc.msg, err.Error())
    94  			}
    95  		} else {
    96  			assert.NoError(t, err)
    97  		}
    98  	}
    99  }