github.com/celestiaorg/celestia-node@v0.15.0-beta.1/header/headertest/verify_test.go (about)

     1  package headertest
     2  
     3  import (
     4  	"errors"
     5  	"strconv"
     6  	"testing"
     7  
     8  	"github.com/stretchr/testify/assert"
     9  	tmrand "github.com/tendermint/tendermint/libs/rand"
    10  
    11  	"github.com/celestiaorg/celestia-node/header"
    12  )
    13  
    14  func TestVerify(t *testing.T) {
    15  	h := NewTestSuite(t, 2, 0).GenExtendedHeaders(3)
    16  	trusted, untrustedAdj, untrustedNonAdj := h[0], h[1], h[2]
    17  	tests := []struct {
    18  		prepare func() *header.ExtendedHeader
    19  		err     error
    20  	}{
    21  		{
    22  			prepare: func() *header.ExtendedHeader { return untrustedAdj },
    23  			err:     nil,
    24  		},
    25  		{
    26  			prepare: func() *header.ExtendedHeader {
    27  				return untrustedNonAdj
    28  			},
    29  			err: nil,
    30  		},
    31  		{
    32  			prepare: func() *header.ExtendedHeader {
    33  				untrusted := *untrustedAdj
    34  				untrusted.ValidatorsHash = tmrand.Bytes(32)
    35  				return &untrusted
    36  			},
    37  			err: header.ErrValidatorHashMismatch,
    38  		},
    39  		{
    40  			prepare: func() *header.ExtendedHeader {
    41  				untrusted := *untrustedAdj
    42  				untrusted.RawHeader.LastBlockID.Hash = tmrand.Bytes(32)
    43  				return &untrusted
    44  			},
    45  			err: header.ErrLastHeaderHashMismatch,
    46  		},
    47  		{
    48  			prepare: func() *header.ExtendedHeader {
    49  				untrusted := *untrustedNonAdj
    50  				untrusted.Commit = NewTestSuite(t, 2, 0).Commit(RandRawHeader(t))
    51  				return &untrusted
    52  			},
    53  			err: header.ErrVerifyCommitLightTrustingFailed,
    54  		},
    55  	}
    56  
    57  	for i, test := range tests {
    58  		t.Run(strconv.Itoa(i), func(t *testing.T) {
    59  			err := trusted.Verify(test.prepare())
    60  			assert.ErrorIs(t, errors.Unwrap(err), test.err)
    61  		})
    62  	}
    63  }