Skip to content

Commit

Permalink
test: improve test for is operator set quorum case (#546)
Browse files Browse the repository at this point in the history
  • Loading branch information
maximopalopoli authored Feb 7, 2025
1 parent 157b935 commit cc51a80
Showing 1 changed file with 70 additions and 10 deletions.
80 changes: 70 additions & 10 deletions chainio/clients/avsregistry/reader_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,13 @@ import (
"math/big"
"testing"

regcoord "github.com/Layr-Labs/eigensdk-go/contracts/bindings/RegistryCoordinator"
"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/accounts/abi/bind"
"github.com/ethereum/go-ethereum/common"
gethtypes "github.com/ethereum/go-ethereum/core/types"
"github.com/stretchr/testify/require"
)

Expand Down Expand Up @@ -135,16 +138,73 @@ func TestReaderMethods(t *testing.T) {
require.NoError(t, err)
require.Equal(t, 0, len(address_to_sockets))
})
}

t.Run("Is operator set quorum", func(t *testing.T) {
// A quorum registered in the old workflow should return false
isOperatorSet, err := chainReader.IsOperatorSetQuorum(
&bind.CallOpts{},
0,
)
require.NoError(t, err)
require.False(t, isOperatorSet)
func TestIsOperatorSetQuorum(t *testing.T) {
// Test set up
clients, anvilHttpEndpoint := testclients.BuildTestClients(t)

// TODO: Make a test with the new workflow testing a case returning true
})
chainWriter := clients.AvsRegistryChainWriter
chainReader := clients.ReadClients.AvsRegistryChainReader

contractAddrs := testutils.GetContractAddressesFromContractRegistry(anvilHttpEndpoint)

// By default, quorums are not operator sets
isOperatorSet, err := chainReader.IsOperatorSetQuorum(
&bind.CallOpts{},
0,
)
require.NoError(t, err)
require.False(t, isOperatorSet)

// Enabling operator sets to create slashable stake quorums
registryCoordinatorAddress := contractAddrs.RegistryCoordinator
registryCoordinator, err := regcoord.NewContractRegistryCoordinator(
registryCoordinatorAddress,
clients.EthHttpClient,
)
require.NoError(t, err)

txManager := clients.TxManager
noSendTxOpts, err := txManager.GetNoSendTxOpts()
require.NoError(t, err)

tx, err := registryCoordinator.EnableOperatorSets(noSendTxOpts)
require.NoError(t, err)

_, err = txManager.Send(context.Background(), tx, true)
require.NoError(t, err)

// Create a new slashable stake quorum
operatorSetParams := regcoord.ISlashingRegistryCoordinatorTypesOperatorSetParam{
MaxOperatorCount: 5,
}
minimumStakeNeeded := big.NewInt(0)

strategyAddr := contractAddrs.Erc20MockStrategy
strategyParam := regcoord.IStakeRegistryTypesStrategyParams{
Strategy: strategyAddr,
Multiplier: big.NewInt(1e18),
}

lookAheadPeriod := uint32(0)

receipt, err := chainWriter.CreateSlashableStakeQuorum(
context.Background(),
operatorSetParams,
minimumStakeNeeded,
[]regcoord.IStakeRegistryTypesStrategyParams{strategyParam},
lookAheadPeriod,
true,
)
require.NoError(t, err)
require.Equal(t, receipt.Status, gethtypes.ReceiptStatusSuccessful)

// After inserting a new flow quorum, requesting if is an operator set returns true
isOperatorSet, err = chainReader.IsOperatorSetQuorum(
&bind.CallOpts{},
1,
)
require.NoError(t, err)
require.True(t, isOperatorSet)
}

0 comments on commit cc51a80

Please sign in to comment.