package sync import ( "context" "testing" lru "github.com/hashicorp/golang-lru" ethpb "github.com/prysmaticlabs/ethereumapis/eth/v1alpha1" "github.com/prysmaticlabs/go-bitfield" mock "github.com/prysmaticlabs/prysm/beacon-chain/blockchain/testing" "github.com/prysmaticlabs/prysm/beacon-chain/operations/attestations" "github.com/prysmaticlabs/prysm/shared/testutil/assert" "github.com/prysmaticlabs/prysm/shared/testutil/require" ) func TestBeaconAggregateProofSubscriber_CanSaveAggregatedAttestation(t *testing.T) { c, err := lru.New(10) require.NoError(t, err) r := &Service{ attPool: attestations.NewPool(), seenAttestationCache: c, attestationNotifier: (&mock.ChainService{}).OperationNotifier(), } a := ðpb.SignedAggregateAttestationAndProof{Message: ðpb.AggregateAttestationAndProof{Aggregate: ðpb.Attestation{Data: ðpb.AttestationData{Target: ðpb.Checkpoint{}}, AggregationBits: bitfield.Bitlist{0x07}}, AggregatorIndex: 100}} require.NoError(t, r.beaconAggregateProofSubscriber(context.Background(), a)) assert.DeepEqual(t, []*ethpb.Attestation{a.Message.Aggregate}, r.attPool.AggregatedAttestations(), "Did not save aggregated attestation") } func TestBeaconAggregateProofSubscriber_CanSaveUnaggregatedAttestation(t *testing.T) { c, err := lru.New(10) require.NoError(t, err) r := &Service{ attPool: attestations.NewPool(), seenAttestationCache: c, attestationNotifier: (&mock.ChainService{}).OperationNotifier(), } a := ðpb.SignedAggregateAttestationAndProof{Message: ðpb.AggregateAttestationAndProof{Aggregate: ðpb.Attestation{Data: ðpb.AttestationData{Target: ðpb.Checkpoint{}}, AggregationBits: bitfield.Bitlist{0x03}}, AggregatorIndex: 100}} require.NoError(t, r.beaconAggregateProofSubscriber(context.Background(), a)) atts, err := r.attPool.UnaggregatedAttestations() require.NoError(t, err) assert.DeepEqual(t, []*ethpb.Attestation{a.Message.Aggregate}, atts, "Did not save unaggregated attestation") }