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 }