From 9c61d80b9efc773dd70a1c69497de796166b0092 Mon Sep 17 00:00:00 2001 From: maximopalopoli Date: Tue, 21 Jan 2025 18:27:40 -0300 Subject: [PATCH] Create NewTestAvsRegistryWriterFromConfig, use it on tests --- chainio/clients/avsregistry/writer_test.go | 19 ++++++++- testutils/testclients/testclients.go | 45 ++++++++++++++++++++++ 2 files changed, 62 insertions(+), 2 deletions(-) diff --git a/chainio/clients/avsregistry/writer_test.go b/chainio/clients/avsregistry/writer_test.go index 8df78ec3..1c66b770 100644 --- a/chainio/clients/avsregistry/writer_test.go +++ b/chainio/clients/avsregistry/writer_test.go @@ -16,8 +16,23 @@ import ( ) func TestWriterMethods(t *testing.T) { - clients, _ := testclients.BuildTestClients(t) - chainWriter := clients.AvsRegistryChainWriter + testConfig := testutils.GetDefaultTestConfig() + anvilC, err := testutils.StartAnvilContainer(testConfig.AnvilStateFileName) + require.NoError(t, err) + + anvilHttpEndpoint, err := anvilC.Endpoint(context.Background(), "http") + require.NoError(t, err) + contractAddrs := testutils.GetContractAddressesFromContractRegistry(anvilHttpEndpoint) + + operatorPrivateKeyHex := testutils.ANVIL_FIRST_PRIVATE_KEY + + config := avsregistry.Config{ + RegistryCoordinatorAddress: contractAddrs.RegistryCoordinator, + OperatorStateRetrieverAddress: contractAddrs.OperatorStateRetriever, + } + + chainWriter, err := testclients.NewTestAvsRegistryWriterFromConfig(anvilHttpEndpoint, operatorPrivateKeyHex, config) + require.NoError(t, err) keypair, err := bls.NewKeyPairFromString("0x01") require.NoError(t, err) diff --git a/testutils/testclients/testclients.go b/testutils/testclients/testclients.go index 28e1b48e..6798e451 100644 --- a/testutils/testclients/testclients.go +++ b/testutils/testclients/testclients.go @@ -6,6 +6,7 @@ import ( "testing" "github.com/Layr-Labs/eigensdk-go/chainio/clients" + "github.com/Layr-Labs/eigensdk-go/chainio/clients/avsregistry" "github.com/Layr-Labs/eigensdk-go/chainio/clients/elcontracts" "github.com/Layr-Labs/eigensdk-go/chainio/clients/wallet" "github.com/Layr-Labs/eigensdk-go/chainio/txmgr" @@ -193,3 +194,47 @@ func NewTestTxManager(httpEndpoint string, privateKeyHex string) (*txmgr.SimpleT txManager := txmgr.NewSimpleTxManager(pkWallet, ethHttpClient, logger, addr) return txManager, nil } + +// Creates a testing ChainWriter from an httpEndpoint, private key and config. +// This is needed because the existing testclients.BuildTestClients returns a +// ChainWriter with a null rewardsCoordinator, which is required for some of the tests. +func NewTestAvsRegistryWriterFromConfig( + httpEndpoint string, + privateKeyHex string, + config avsregistry.Config, +) (*avsregistry.ChainWriter, error) { + privateKey, err := crypto.HexToECDSA(privateKeyHex) + if err != nil { + return nil, utils.WrapError("Failed convert hex string to ecdsa private key", err) + } + testConfig := testutils.GetDefaultTestConfig() + logger := logging.NewTextSLogger(os.Stdout, &logging.SLoggerOptions{Level: testConfig.LogLevel}) + ethHttpClient, err := ethclient.Dial(httpEndpoint) + if err != nil { + return nil, utils.WrapError("Failed to create eth client", err) + } + chainid, err := ethHttpClient.ChainID(context.Background()) + if err != nil { + return nil, utils.WrapError("Failed to get chain id", err) + } + signerV2, addr, err := signerv2.SignerFromConfig(signerv2.Config{PrivateKey: privateKey}, chainid) + if err != nil { + return nil, utils.WrapError("Failed to create the signer from the given config", err) + } + + pkWallet, err := wallet.NewPrivateKeyWallet(ethHttpClient, signerV2, addr, logger) + if err != nil { + return nil, utils.WrapError("Failed to create wallet", err) + } + txManager := txmgr.NewSimpleTxManager(pkWallet, ethHttpClient, logger, addr) + testWriter, err := avsregistry.NewWriterFromConfig( + config, + ethHttpClient, + txManager, + logger, + ) + if err != nil { + return nil, err + } + return testWriter, nil +}