github.com/celestiaorg/celestia-node@v0.15.0-beta.1/share/availability/full/availability_test.go (about) 1 package full 2 3 import ( 4 "context" 5 "testing" 6 7 "github.com/golang/mock/gomock" 8 "github.com/stretchr/testify/assert" 9 "github.com/stretchr/testify/require" 10 11 "github.com/celestiaorg/celestia-app/pkg/da" 12 13 "github.com/celestiaorg/celestia-node/header/headertest" 14 "github.com/celestiaorg/celestia-node/share" 15 availability_test "github.com/celestiaorg/celestia-node/share/availability/test" 16 "github.com/celestiaorg/celestia-node/share/eds/edstest" 17 "github.com/celestiaorg/celestia-node/share/mocks" 18 ) 19 20 func TestShareAvailableOverMocknet_Full(t *testing.T) { 21 ctx, cancel := context.WithCancel(context.Background()) 22 defer cancel() 23 24 net := availability_test.NewTestDAGNet(ctx, t) 25 _, root := RandNode(net, 32) 26 27 eh := headertest.RandExtendedHeaderWithRoot(t, root) 28 nd := Node(net) 29 net.ConnectAll() 30 31 err := nd.SharesAvailable(ctx, eh) 32 assert.NoError(t, err) 33 } 34 35 func TestSharesAvailable_Full(t *testing.T) { 36 ctx, cancel := context.WithCancel(context.Background()) 37 defer cancel() 38 39 // RandServiceWithSquare creates a NewShareAvailability inside, so we can test it 40 getter, dah := GetterWithRandSquare(t, 16) 41 42 eh := headertest.RandExtendedHeaderWithRoot(t, dah) 43 avail := TestAvailability(t, getter) 44 err := avail.SharesAvailable(ctx, eh) 45 assert.NoError(t, err) 46 } 47 48 func TestSharesAvailable_StoresToEDSStore(t *testing.T) { 49 ctx, cancel := context.WithCancel(context.Background()) 50 defer cancel() 51 52 // RandServiceWithSquare creates a NewShareAvailability inside, so we can test it 53 getter, dah := GetterWithRandSquare(t, 16) 54 eh := headertest.RandExtendedHeaderWithRoot(t, dah) 55 avail := TestAvailability(t, getter) 56 err := avail.SharesAvailable(ctx, eh) 57 assert.NoError(t, err) 58 59 has, err := avail.store.Has(ctx, dah.Hash()) 60 assert.NoError(t, err) 61 assert.True(t, has) 62 } 63 64 func TestSharesAvailable_Full_ErrNotAvailable(t *testing.T) { 65 ctrl := gomock.NewController(t) 66 getter := mocks.NewMockGetter(ctrl) 67 ctx, cancel := context.WithCancel(context.Background()) 68 defer cancel() 69 70 eds := edstest.RandEDS(t, 4) 71 dah, err := da.NewDataAvailabilityHeader(eds) 72 eh := headertest.RandExtendedHeaderWithRoot(t, &dah) 73 require.NoError(t, err) 74 avail := TestAvailability(t, getter) 75 76 errors := []error{share.ErrNotFound, context.DeadlineExceeded} 77 for _, getterErr := range errors { 78 getter.EXPECT().GetEDS(gomock.Any(), gomock.Any()).Return(nil, getterErr) 79 err := avail.SharesAvailable(ctx, eh) 80 require.ErrorIs(t, err, share.ErrNotAvailable) 81 } 82 }