Skip to content

Commit

Permalink
test: avsregistry add tests for subscriber (#456)
Browse files Browse the repository at this point in the history
  • Loading branch information
damiramirez authored Jan 22, 2025
1 parent bd37a31 commit 51a62e2
Showing 1 changed file with 76 additions and 0 deletions.
76 changes: 76 additions & 0 deletions chainio/clients/avsregistry/subscriber_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
package avsregistry_test

import (
"context"
"testing"
"time"

"github.com/Layr-Labs/eigensdk-go/crypto/bls"
"github.com/Layr-Labs/eigensdk-go/testutils"
"github.com/Layr-Labs/eigensdk-go/testutils/testclients"
"github.com/Layr-Labs/eigensdk-go/types"
"github.com/ethereum/go-ethereum/crypto"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)

func TestSubscriberAvsRegistry(t *testing.T) {
client, _ := testclients.BuildTestClients(t)
chainSubscriber := client.AvsRegistryChainSubscriber
chainWriter := client.AvsRegistryChainWriter

t.Run("subscribe to new pubkey registrations", func(t *testing.T) {
pubKeyRegistrationsC, event, err := chainSubscriber.SubscribeToNewPubkeyRegistrations()
require.NoError(t, err)
defer event.Unsubscribe()

// Emit a NewPubkeyRegistration event creating a new operator
keypair, err := bls.NewKeyPairFromString("0x01")
require.NoError(t, err)

ecdsaPrivateKey, err := crypto.HexToECDSA(testutils.ANVIL_FIRST_PRIVATE_KEY)
require.NoError(t, err)

quorumNumbers := types.QuorumNums{0}

receipt, err := chainWriter.RegisterOperator(
context.Background(),
ecdsaPrivateKey,
keypair,
quorumNumbers,
"",
true,
)
require.NoError(t, err)
require.NotNil(t, receipt)

select {
case newPubkeyRegistration := <-pubKeyRegistrationsC:
expectedOperator := crypto.PubkeyToAddress(ecdsaPrivateKey.PublicKey)
assert.Equal(t, expectedOperator, newPubkeyRegistration.Operator)
case <-time.After(10 * time.Second):
// Throw an error if the event is not received within 10 seconds, making the test fail
t.Fatal("Timed out waiting for NewPubkeyRegistration event")
}
})

t.Run("subscribe to operator socket updates", func(t *testing.T) {
socketC, event, err := chainSubscriber.SubscribeToOperatorSocketUpdates()
require.NoError(t, err)
defer event.Unsubscribe()

// Emit a SocketUpdate event
socketUpdate := "socket-update"
receipt, err := chainWriter.UpdateSocket(context.Background(), types.Socket(socketUpdate), true)
require.NoError(t, err)
require.NotNil(t, receipt)

select {
case operatorSocketUpdate := <-socketC:
assert.Equal(t, socketUpdate, operatorSocketUpdate.Socket)
case <-time.After(10 * time.Second):
// Throw an error if the event is not received within 10 seconds, making the test fail
t.Fatal("Timed out waiting for OperatorSocketUpdate event")
}
})
}

0 comments on commit 51a62e2

Please sign in to comment.