From 6af7496795c2ad80dd8a3f1524ac696cec601c20 Mon Sep 17 00:00:00 2001 From: maximopalopoli Date: Mon, 20 Jan 2025 15:02:55 -0300 Subject: [PATCH 01/14] Add initial test structure --- chainio/clients/elcontracts/writer_test.go | 28 ++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/chainio/clients/elcontracts/writer_test.go b/chainio/clients/elcontracts/writer_test.go index c001e26a9..8200f99d3 100644 --- a/chainio/clients/elcontracts/writer_test.go +++ b/chainio/clients/elcontracts/writer_test.go @@ -1154,3 +1154,31 @@ func setTestRewardsCoordinatorActivationDelay( } return receipt, err } + +// TestInvalidConfig tests the behavior of the chainWriter when the config is invalid (e.g. missing addresses, wrong +// addresses) +func TestInvalidConfig(t *testing.T) { + 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) + + operatorAddr := testutils.ANVIL_FIRST_ADDRESS + operator := types.Operator{ + Address: operatorAddr, + } + + privateKeyHex := testutils.ANVIL_FIRST_PRIVATE_KEY + + config := elcontracts.Config{} + chainWriter, err := testclients.NewTestChainWriterFromConfig(anvilHttpEndpoint, privateKeyHex, config) + require.NoError(t, err) + + _ = contractAddrs + _ = operator + _ = chainWriter +} From bed08b8f78ef6d6bb0bbcdd3b9cb237689436832 Mon Sep 17 00:00:00 2001 From: maximopalopoli Date: Mon, 20 Jan 2025 17:42:45 -0300 Subject: [PATCH 02/14] Add some invalid config test cases with chain writer --- chainio/clients/elcontracts/writer_test.go | 44 ++++++++++++++++++++-- 1 file changed, 41 insertions(+), 3 deletions(-) diff --git a/chainio/clients/elcontracts/writer_test.go b/chainio/clients/elcontracts/writer_test.go index 8200f99d3..78b9c025a 100644 --- a/chainio/clients/elcontracts/writer_test.go +++ b/chainio/clients/elcontracts/writer_test.go @@ -1178,7 +1178,45 @@ func TestInvalidConfig(t *testing.T) { chainWriter, err := testclients.NewTestChainWriterFromConfig(anvilHttpEndpoint, privateKeyHex, config) require.NoError(t, err) - _ = contractAddrs - _ = operator - _ = chainWriter + t.Run("register as operator", func(t *testing.T) { + receipt, err := chainWriter.RegisterAsOperator( + context.Background(), + operator, + true, + ) + assert.Error(t, err) + assert.Nil(t, receipt) + }) + + t.Run("update operator details", func(t *testing.T) { + receipt, err := chainWriter.UpdateOperatorDetails( + context.Background(), + operator, + true, + ) + assert.Error(t, err) + assert.Nil(t, receipt) + }) + + t.Run("update metadata URI", func(t *testing.T) { + receipt, err := chainWriter.UpdateMetadataURI( + context.Background(), + common.HexToAddress(operatorAddr), + "https://0.0.0.0", + true, + ) + assert.Error(t, err) + assert.Nil(t, receipt) + }) + + t.Run("deposit erc20 into strategy", func(t *testing.T) { + receipt, err := chainWriter.DepositERC20IntoStrategy( + context.Background(), + contractAddrs.Erc20MockStrategy, + big.NewInt(1), + true, + ) + assert.Error(t, err) + assert.Nil(t, receipt) + }) } From 371129572af4a940e9ec1a0319cf109f692971fa Mon Sep 17 00:00:00 2001 From: maximopalopoli Date: Mon, 20 Jan 2025 17:43:39 -0300 Subject: [PATCH 03/14] Add claim related invalid config test cases --- chainio/clients/elcontracts/writer_test.go | 66 ++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/chainio/clients/elcontracts/writer_test.go b/chainio/clients/elcontracts/writer_test.go index 78b9c025a..ba6a28a41 100644 --- a/chainio/clients/elcontracts/writer_test.go +++ b/chainio/clients/elcontracts/writer_test.go @@ -1219,4 +1219,70 @@ func TestInvalidConfig(t *testing.T) { assert.Error(t, err) assert.Nil(t, receipt) }) + + t.Run("set claimer for", func(t *testing.T) { + receipt, err := chainWriter.SetClaimerFor( + context.Background(), + common.HexToAddress(testutils.ANVIL_FIRST_ADDRESS), + true, + ) + assert.Error(t, err) + assert.Nil(t, receipt) + }) + + t.Run("process claim", func(t *testing.T) { + rewardsCoordinatorAddr := contractAddrs.RewardsCoordinator + config := elcontracts.Config{ + DelegationManagerAddress: contractAddrs.DelegationManager, + RewardsCoordinatorAddress: rewardsCoordinatorAddr, + } + chainReader, err := testclients.NewTestChainReaderFromConfig(anvilHttpEndpoint, config) + require.NoError(t, err) + + activationDelay := uint32(0) + receipt, err := setTestRewardsCoordinatorActivationDelay(anvilHttpEndpoint, privateKeyHex, activationDelay) + require.NoError(t, err) + require.Equal(t, gethtypes.ReceiptStatusSuccessful, receipt.Status) + + cumulativeEarnings := int64(42) + claim, err := newTestClaim(chainReader, anvilHttpEndpoint, cumulativeEarnings, privateKeyHex) + require.NoError(t, err) + + receipt, err = chainWriter.ProcessClaim( + context.Background(), + *claim, + common.HexToAddress(testutils.ANVIL_FIRST_ADDRESS), + true, + ) + assert.Error(t, err) + assert.Nil(t, receipt) + }) + + t.Run("process claims", func(t *testing.T) { + rewardsCoordinatorAddr := contractAddrs.RewardsCoordinator + config := elcontracts.Config{ + DelegationManagerAddress: contractAddrs.DelegationManager, + RewardsCoordinatorAddress: rewardsCoordinatorAddr, + } + chainReader, err := testclients.NewTestChainReaderFromConfig(anvilHttpEndpoint, config) + require.NoError(t, err) + + activationDelay := uint32(0) + receipt, err := setTestRewardsCoordinatorActivationDelay(anvilHttpEndpoint, privateKeyHex, activationDelay) + require.NoError(t, err) + require.Equal(t, gethtypes.ReceiptStatusSuccessful, receipt.Status) + + cumulativeEarnings := int64(42) + claim, err := newTestClaim(chainReader, anvilHttpEndpoint, cumulativeEarnings, privateKeyHex) + require.NoError(t, err) + + receipt, err = chainWriter.ProcessClaims( + context.Background(), + []rewardscoordinator.IRewardsCoordinatorTypesRewardsMerkleClaim{*claim}, + common.HexToAddress(testutils.ANVIL_FIRST_ADDRESS), + true, + ) + assert.Error(t, err) + assert.Nil(t, receipt) + }) } From af6c272d76468dee5afd0d98c7c3407212feeac8 Mon Sep 17 00:00:00 2001 From: maximopalopoli Date: Mon, 20 Jan 2025 17:45:14 -0300 Subject: [PATCH 04/14] Add set operator split cases --- chainio/clients/elcontracts/writer_test.go | 23 ++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/chainio/clients/elcontracts/writer_test.go b/chainio/clients/elcontracts/writer_test.go index ba6a28a41..ce49272f0 100644 --- a/chainio/clients/elcontracts/writer_test.go +++ b/chainio/clients/elcontracts/writer_test.go @@ -1285,4 +1285,27 @@ func TestInvalidConfig(t *testing.T) { assert.Error(t, err) assert.Nil(t, receipt) }) + + t.Run("set operator AVS split", func(t *testing.T) { + receipt, err := chainWriter.SetOperatorAVSSplit( + context.Background(), + common.HexToAddress(operatorAddr), + common.HexToAddress(testutils.ANVIL_FIRST_ADDRESS), + uint16(1), + true, + ) + assert.Error(t, err) + assert.Nil(t, receipt) + }) + + t.Run("set operator PI split", func(t *testing.T) { + receipt, err := chainWriter.SetOperatorPISplit( + context.Background(), + common.HexToAddress(operatorAddr), + uint16(1), + true, + ) + assert.Error(t, err) + assert.Nil(t, receipt) + }) } From cf3e013217addf39d6491ed44bb43de12b61937e Mon Sep 17 00:00:00 2001 From: maximopalopoli Date: Mon, 20 Jan 2025 17:46:27 -0300 Subject: [PATCH 05/14] Add allocation related invalid config test cases --- chainio/clients/elcontracts/writer_test.go | 39 ++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/chainio/clients/elcontracts/writer_test.go b/chainio/clients/elcontracts/writer_test.go index ce49272f0..f67ecf36b 100644 --- a/chainio/clients/elcontracts/writer_test.go +++ b/chainio/clients/elcontracts/writer_test.go @@ -1308,4 +1308,43 @@ func TestInvalidConfig(t *testing.T) { assert.Error(t, err) assert.Nil(t, receipt) }) + + t.Run("modify allocations", func(t *testing.T) { + strategyAddr := contractAddrs.Erc20MockStrategy + avsAddr := common.HexToAddress(testutils.ANVIL_FIRST_ADDRESS) + operatorSetId := uint32(1) + + operatorSet := allocationmanager.OperatorSet{ + Avs: avsAddr, + Id: operatorSetId, + } + newAllocation := uint64(100) + allocateParams := []allocationmanager.IAllocationManagerTypesAllocateParams{ + { + OperatorSet: operatorSet, + Strategies: []common.Address{strategyAddr}, + NewMagnitudes: []uint64{newAllocation}, + }, + } + + receipt, err := chainWriter.ModifyAllocations( + context.Background(), + common.HexToAddress(operatorAddr), + allocateParams, + true, + ) + assert.Error(t, err) + assert.Nil(t, receipt) + }) + + t.Run("set allocation delay", func(t *testing.T) { + receipt, err := chainWriter.SetAllocationDelay( + context.Background(), + common.HexToAddress(operatorAddr), + uint32(0), + true, + ) + assert.Error(t, err) + assert.Nil(t, receipt) + }) } From 9aa6e989c24a8ad330a8497b1d3e709ced40f802 Mon Sep 17 00:00:00 2001 From: maximopalopoli Date: Mon, 20 Jan 2025 17:47:05 -0300 Subject: [PATCH 06/14] add register/deregister for operator with invalid config --- chainio/clients/elcontracts/writer_test.go | 47 ++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/chainio/clients/elcontracts/writer_test.go b/chainio/clients/elcontracts/writer_test.go index f67ecf36b..af1dfea34 100644 --- a/chainio/clients/elcontracts/writer_test.go +++ b/chainio/clients/elcontracts/writer_test.go @@ -1347,4 +1347,51 @@ func TestInvalidConfig(t *testing.T) { assert.Error(t, err) assert.Nil(t, receipt) }) + + t.Run("deregister from operator sets", func(t *testing.T) { + avsAddress := common.HexToAddress("0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266") + operatorSetId := uint32(1) + deregistrationRequest := elcontracts.DeregistrationRequest{ + AVSAddress: avsAddress, + OperatorSetIds: []uint32{operatorSetId}, + WaitForReceipt: true, + } + + receipt, err := chainWriter.DeregisterFromOperatorSets( + context.Background(), + common.HexToAddress(operatorAddr), + deregistrationRequest, + ) + assert.Error(t, err) + assert.Nil(t, receipt) + }) + + t.Run("register for operator sets", func(t *testing.T) { + operatorAddressHex := "70997970C51812dc3A010C7d01b50e0d17dc79C8" + + operatorAddress := common.HexToAddress(operatorAddressHex) + keypair, err := bls.NewKeyPairFromString("0x01") + require.NoError(t, err) + + avsAddress := common.HexToAddress("0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266") + operatorSetId := uint32(1) + + request := elcontracts.RegistrationRequest{ + OperatorAddress: operatorAddress, + AVSAddress: avsAddress, + OperatorSetIds: []uint32{operatorSetId}, + WaitForReceipt: true, + Socket: "socket", + BlsKeyPair: keypair, + } + + receipt, err := chainWriter.RegisterForOperatorSets( + context.Background(), + common.HexToAddress(operatorAddr), + request, + ) + assert.Error(t, err) + assert.Nil(t, receipt) + }) + } From 81e7bd881e53a261d1fe713f1e1016ef8dd41794 Mon Sep 17 00:00:00 2001 From: maximopalopoli Date: Mon, 20 Jan 2025 18:10:37 -0300 Subject: [PATCH 07/14] add remove/set permission invalid config case --- chainio/clients/elcontracts/writer_test.go | 45 ++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/chainio/clients/elcontracts/writer_test.go b/chainio/clients/elcontracts/writer_test.go index af1dfea34..49c16ae11 100644 --- a/chainio/clients/elcontracts/writer_test.go +++ b/chainio/clients/elcontracts/writer_test.go @@ -1394,4 +1394,49 @@ func TestInvalidConfig(t *testing.T) { assert.Nil(t, receipt) }) + t.Run("remove permission", func(t *testing.T) { + accountAddress := common.HexToAddress(testutils.ANVIL_FIRST_ADDRESS) + appointeeAddress := common.HexToAddress("009440d62dc85c73dbf889b7ad1f4da8b231d2ef") + target := common.HexToAddress("14dC79964da2C08b23698B3D3cc7Ca32193d9955") + selector := [4]byte{0, 1, 2, 3} + waitForReceipt := true + + removePermissionRequest := elcontracts.RemovePermissionRequest{ + AccountAddress: accountAddress, + AppointeeAddress: appointeeAddress, + Target: target, + Selector: selector, + WaitForReceipt: waitForReceipt, + } + + receipt, err := chainWriter.RemovePermission( + context.Background(), + removePermissionRequest, + ) + assert.Error(t, err) + assert.Nil(t, receipt) + }) + + t.Run("set permission", func(t *testing.T) { + accountAddress := common.HexToAddress(testutils.ANVIL_FIRST_ADDRESS) + appointeeAddress := common.HexToAddress("009440d62dc85c73dbf889b7ad1f4da8b231d2ef") + target := common.HexToAddress("14dC79964da2C08b23698B3D3cc7Ca32193d9955") + selector := [4]byte{0, 1, 2, 3} + waitForReceipt := true + + setPermissionRequest := elcontracts.SetPermissionRequest{ + AccountAddress: accountAddress, + AppointeeAddress: appointeeAddress, + Target: target, + Selector: selector, + WaitForReceipt: waitForReceipt, + } + + receipt, err := chainWriter.SetPermission( + context.Background(), + setPermissionRequest, + ) + assert.Error(t, err) + assert.Nil(t, receipt) + }) } From a42a71f906407c72905f20c5c86c2594f3bb488a Mon Sep 17 00:00:00 2001 From: maximopalopoli Date: Mon, 20 Jan 2025 18:11:32 -0300 Subject: [PATCH 08/14] Add accept/ remove admin invalid config test cases --- chainio/clients/elcontracts/writer_test.go | 67 ++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/chainio/clients/elcontracts/writer_test.go b/chainio/clients/elcontracts/writer_test.go index 49c16ae11..9f6669560 100644 --- a/chainio/clients/elcontracts/writer_test.go +++ b/chainio/clients/elcontracts/writer_test.go @@ -1439,4 +1439,71 @@ func TestInvalidConfig(t *testing.T) { assert.Error(t, err) assert.Nil(t, receipt) }) + + t.Run("accept admin", func(t *testing.T) { + accountAddress := common.HexToAddress(testutils.ANVIL_FIRST_ADDRESS) + acceptAdminRequest := elcontracts.AcceptAdminRequest{ + AccountAddress: accountAddress, + WaitForReceipt: true, + } + + receipt, err := chainWriter.AcceptAdmin( + context.Background(), + acceptAdminRequest, + ) + assert.Error(t, err) + assert.Nil(t, receipt) + }) + + t.Run("add pending admin", func(t *testing.T) { + accountAddress := common.HexToAddress(testutils.ANVIL_FIRST_ADDRESS) + admin1 := common.HexToAddress("14dC79964da2C08b23698B3D3cc7Ca32193d9955") + + addAdmin1Request := elcontracts.AddPendingAdminRequest{ + AccountAddress: accountAddress, + AdminAddress: admin1, + WaitForReceipt: true, + } + + receipt, err := chainWriter.AddPendingAdmin( + context.Background(), + addAdmin1Request, + ) + assert.Error(t, err) + assert.Nil(t, receipt) + }) + + t.Run("remove admin", func(t *testing.T) { + accountAddress := common.HexToAddress(testutils.ANVIL_FIRST_ADDRESS) + admin2 := common.HexToAddress("23618e81E3f5cdF7f54C3d65f7FBc0aBf5B21E8f") + + removeAdminRequest := elcontracts.RemoveAdminRequest{ + AccountAddress: accountAddress, + AdminAddress: admin2, + WaitForReceipt: true, + } + + receipt, err := chainWriter.RemoveAdmin( + context.Background(), + removeAdminRequest, + ) + assert.Error(t, err) + assert.Nil(t, receipt) + }) + + t.Run("remove pending admin", func(t *testing.T) { + pendingAdmin := common.HexToAddress("009440d62dc85c73dbf889b7ad1f4da8b231d2ef") + removePendingAdminRequest := elcontracts.RemovePendingAdminRequest{ + AccountAddress: common.HexToAddress(operatorAddr), + AdminAddress: pendingAdmin, + WaitForReceipt: true, + } + + receipt, err := chainWriter.RemovePendingAdmin( + context.Background(), + removePendingAdminRequest, + ) + assert.Error(t, err) + assert.Nil(t, receipt) + }) } From 4140d5b5cdf171e3056c74c0c7ec20b568cdc853 Mon Sep 17 00:00:00 2001 From: maximopalopoli Date: Tue, 21 Jan 2025 09:33:10 -0300 Subject: [PATCH 09/14] Make conversion of const address once at beginning --- chainio/clients/elcontracts/writer_test.go | 23 +++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/chainio/clients/elcontracts/writer_test.go b/chainio/clients/elcontracts/writer_test.go index 869836f54..994662db0 100644 --- a/chainio/clients/elcontracts/writer_test.go +++ b/chainio/clients/elcontracts/writer_test.go @@ -1134,6 +1134,7 @@ func TestInvalidConfig(t *testing.T) { require.NoError(t, err) contractAddrs := testutils.GetContractAddressesFromContractRegistry(anvilHttpEndpoint) + anvilFirstAddr := common.HexToAddress(testutils.ANVIL_FIRST_ADDRESS) operatorAddr := testutils.ANVIL_FIRST_ADDRESS operator := types.Operator{ @@ -1169,7 +1170,7 @@ func TestInvalidConfig(t *testing.T) { t.Run("update metadata URI", func(t *testing.T) { receipt, err := chainWriter.UpdateMetadataURI( context.Background(), - common.HexToAddress(operatorAddr), + anvilFirstAddr, "https://0.0.0.0", true, ) @@ -1191,7 +1192,7 @@ func TestInvalidConfig(t *testing.T) { t.Run("set claimer for", func(t *testing.T) { receipt, err := chainWriter.SetClaimerFor( context.Background(), - common.HexToAddress(testutils.ANVIL_FIRST_ADDRESS), + anvilFirstAddr, true, ) assert.Error(t, err) @@ -1219,7 +1220,7 @@ func TestInvalidConfig(t *testing.T) { receipt, err = chainWriter.ProcessClaim( context.Background(), *claim, - common.HexToAddress(testutils.ANVIL_FIRST_ADDRESS), + anvilFirstAddr, true, ) assert.Error(t, err) @@ -1247,7 +1248,7 @@ func TestInvalidConfig(t *testing.T) { receipt, err = chainWriter.ProcessClaims( context.Background(), []rewardscoordinator.IRewardsCoordinatorTypesRewardsMerkleClaim{*claim}, - common.HexToAddress(testutils.ANVIL_FIRST_ADDRESS), + anvilFirstAddr, true, ) assert.Error(t, err) @@ -1258,7 +1259,7 @@ func TestInvalidConfig(t *testing.T) { receipt, err := chainWriter.SetOperatorAVSSplit( context.Background(), common.HexToAddress(operatorAddr), - common.HexToAddress(testutils.ANVIL_FIRST_ADDRESS), + anvilFirstAddr, uint16(1), true, ) @@ -1279,7 +1280,7 @@ func TestInvalidConfig(t *testing.T) { t.Run("modify allocations", func(t *testing.T) { strategyAddr := contractAddrs.Erc20MockStrategy - avsAddr := common.HexToAddress(testutils.ANVIL_FIRST_ADDRESS) + avsAddr := anvilFirstAddr operatorSetId := uint32(1) operatorSet := allocationmanager.OperatorSet{ @@ -1363,7 +1364,7 @@ func TestInvalidConfig(t *testing.T) { }) t.Run("remove permission", func(t *testing.T) { - accountAddress := common.HexToAddress(testutils.ANVIL_FIRST_ADDRESS) + accountAddress := anvilFirstAddr appointeeAddress := common.HexToAddress("009440d62dc85c73dbf889b7ad1f4da8b231d2ef") target := common.HexToAddress("14dC79964da2C08b23698B3D3cc7Ca32193d9955") selector := [4]byte{0, 1, 2, 3} @@ -1386,7 +1387,7 @@ func TestInvalidConfig(t *testing.T) { }) t.Run("set permission", func(t *testing.T) { - accountAddress := common.HexToAddress(testutils.ANVIL_FIRST_ADDRESS) + accountAddress := anvilFirstAddr appointeeAddress := common.HexToAddress("009440d62dc85c73dbf889b7ad1f4da8b231d2ef") target := common.HexToAddress("14dC79964da2C08b23698B3D3cc7Ca32193d9955") selector := [4]byte{0, 1, 2, 3} @@ -1409,7 +1410,7 @@ func TestInvalidConfig(t *testing.T) { }) t.Run("accept admin", func(t *testing.T) { - accountAddress := common.HexToAddress(testutils.ANVIL_FIRST_ADDRESS) + accountAddress := anvilFirstAddr acceptAdminRequest := elcontracts.AcceptAdminRequest{ AccountAddress: accountAddress, WaitForReceipt: true, @@ -1424,7 +1425,7 @@ func TestInvalidConfig(t *testing.T) { }) t.Run("add pending admin", func(t *testing.T) { - accountAddress := common.HexToAddress(testutils.ANVIL_FIRST_ADDRESS) + accountAddress := anvilFirstAddr admin1 := common.HexToAddress("14dC79964da2C08b23698B3D3cc7Ca32193d9955") addAdmin1Request := elcontracts.AddPendingAdminRequest{ @@ -1442,7 +1443,7 @@ func TestInvalidConfig(t *testing.T) { }) t.Run("remove admin", func(t *testing.T) { - accountAddress := common.HexToAddress(testutils.ANVIL_FIRST_ADDRESS) + accountAddress := anvilFirstAddr admin2 := common.HexToAddress("23618e81E3f5cdF7f54C3d65f7FBc0aBf5B21E8f") removeAdminRequest := elcontracts.RemoveAdminRequest{ From e403cb3be6a78004549fdc0bf0e9c778a2e0c944 Mon Sep 17 00:00:00 2001 From: maximopalopoli Date: Tue, 21 Jan 2025 11:28:49 -0300 Subject: [PATCH 10/14] Unify process claim and process claims subtests --- chainio/clients/elcontracts/writer_test.go | 21 +-------------------- 1 file changed, 1 insertion(+), 20 deletions(-) diff --git a/chainio/clients/elcontracts/writer_test.go b/chainio/clients/elcontracts/writer_test.go index 994662db0..10e4decc1 100644 --- a/chainio/clients/elcontracts/writer_test.go +++ b/chainio/clients/elcontracts/writer_test.go @@ -1199,7 +1199,7 @@ func TestInvalidConfig(t *testing.T) { assert.Nil(t, receipt) }) - t.Run("process claim", func(t *testing.T) { + t.Run("process claim and process claims", func(t *testing.T) { rewardsCoordinatorAddr := contractAddrs.RewardsCoordinator config := elcontracts.Config{ DelegationManagerAddress: contractAddrs.DelegationManager, @@ -1225,25 +1225,6 @@ func TestInvalidConfig(t *testing.T) { ) assert.Error(t, err) assert.Nil(t, receipt) - }) - - t.Run("process claims", func(t *testing.T) { - rewardsCoordinatorAddr := contractAddrs.RewardsCoordinator - config := elcontracts.Config{ - DelegationManagerAddress: contractAddrs.DelegationManager, - RewardsCoordinatorAddress: rewardsCoordinatorAddr, - } - chainReader, err := testclients.NewTestChainReaderFromConfig(anvilHttpEndpoint, config) - require.NoError(t, err) - - activationDelay := uint32(0) - receipt, err := setTestRewardsCoordinatorActivationDelay(anvilHttpEndpoint, privateKeyHex, activationDelay) - require.NoError(t, err) - require.Equal(t, gethtypes.ReceiptStatusSuccessful, receipt.Status) - - cumulativeEarnings := int64(42) - claim, err := newTestClaim(chainReader, anvilHttpEndpoint, cumulativeEarnings, privateKeyHex) - require.NoError(t, err) receipt, err = chainWriter.ProcessClaims( context.Background(), From a88a5c38f48a1ae2f07d8e213b422213d86d4797 Mon Sep 17 00:00:00 2001 From: maximopalopoli Date: Tue, 21 Jan 2025 11:42:28 -0300 Subject: [PATCH 11/14] Use anvil first address constant for avsAddress --- chainio/clients/elcontracts/writer_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/chainio/clients/elcontracts/writer_test.go b/chainio/clients/elcontracts/writer_test.go index 10e4decc1..04e079247 100644 --- a/chainio/clients/elcontracts/writer_test.go +++ b/chainio/clients/elcontracts/writer_test.go @@ -1299,7 +1299,7 @@ func TestInvalidConfig(t *testing.T) { }) t.Run("deregister from operator sets", func(t *testing.T) { - avsAddress := common.HexToAddress("0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266") + avsAddress := common.HexToAddress(testutils.ANVIL_FIRST_ADDRESS) operatorSetId := uint32(1) deregistrationRequest := elcontracts.DeregistrationRequest{ AVSAddress: avsAddress, @@ -1323,7 +1323,7 @@ func TestInvalidConfig(t *testing.T) { keypair, err := bls.NewKeyPairFromString("0x01") require.NoError(t, err) - avsAddress := common.HexToAddress("0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266") + avsAddress := common.HexToAddress(testutils.ANVIL_FIRST_ADDRESS) operatorSetId := uint32(1) request := elcontracts.RegistrationRequest{ From d9418186fa7780cf0ca6ed3c6a0cbace47267f8c Mon Sep 17 00:00:00 2001 From: maximopalopoli Date: Tue, 21 Jan 2025 11:43:02 -0300 Subject: [PATCH 12/14] Use constant anvli addresses instead of literals --- chainio/clients/elcontracts/writer_test.go | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/chainio/clients/elcontracts/writer_test.go b/chainio/clients/elcontracts/writer_test.go index 04e079247..d7c66f73e 100644 --- a/chainio/clients/elcontracts/writer_test.go +++ b/chainio/clients/elcontracts/writer_test.go @@ -1317,9 +1317,7 @@ func TestInvalidConfig(t *testing.T) { }) t.Run("register for operator sets", func(t *testing.T) { - operatorAddressHex := "70997970C51812dc3A010C7d01b50e0d17dc79C8" - - operatorAddress := common.HexToAddress(operatorAddressHex) + operatorAddress := common.HexToAddress(testutils.ANVIL_SECOND_ADDRESS) keypair, err := bls.NewKeyPairFromString("0x01") require.NoError(t, err) @@ -1346,8 +1344,8 @@ func TestInvalidConfig(t *testing.T) { t.Run("remove permission", func(t *testing.T) { accountAddress := anvilFirstAddr - appointeeAddress := common.HexToAddress("009440d62dc85c73dbf889b7ad1f4da8b231d2ef") - target := common.HexToAddress("14dC79964da2C08b23698B3D3cc7Ca32193d9955") + appointeeAddress := common.HexToAddress(testutils.ANVIL_SECOND_ADDRESS) + target := common.HexToAddress(testutils.ANVIL_THIRD_ADDRESS) selector := [4]byte{0, 1, 2, 3} waitForReceipt := true @@ -1369,8 +1367,8 @@ func TestInvalidConfig(t *testing.T) { t.Run("set permission", func(t *testing.T) { accountAddress := anvilFirstAddr - appointeeAddress := common.HexToAddress("009440d62dc85c73dbf889b7ad1f4da8b231d2ef") - target := common.HexToAddress("14dC79964da2C08b23698B3D3cc7Ca32193d9955") + appointeeAddress := common.HexToAddress(testutils.ANVIL_SECOND_ADDRESS) + target := common.HexToAddress(testutils.ANVIL_THIRD_ADDRESS) selector := [4]byte{0, 1, 2, 3} waitForReceipt := true @@ -1407,7 +1405,7 @@ func TestInvalidConfig(t *testing.T) { t.Run("add pending admin", func(t *testing.T) { accountAddress := anvilFirstAddr - admin1 := common.HexToAddress("14dC79964da2C08b23698B3D3cc7Ca32193d9955") + admin1 := common.HexToAddress(testutils.ANVIL_SECOND_ADDRESS) addAdmin1Request := elcontracts.AddPendingAdminRequest{ AccountAddress: accountAddress, @@ -1425,7 +1423,7 @@ func TestInvalidConfig(t *testing.T) { t.Run("remove admin", func(t *testing.T) { accountAddress := anvilFirstAddr - admin2 := common.HexToAddress("23618e81E3f5cdF7f54C3d65f7FBc0aBf5B21E8f") + admin2 := common.HexToAddress(testutils.ANVIL_THIRD_ADDRESS) removeAdminRequest := elcontracts.RemoveAdminRequest{ AccountAddress: accountAddress, From c15716c9e858b6961e14f17c3d120c0bf6044f57 Mon Sep 17 00:00:00 2001 From: maximopalopoli Date: Tue, 21 Jan 2025 18:39:27 -0300 Subject: [PATCH 13/14] Rename InvalidConfig ChainWriter test --- chainio/clients/elcontracts/writer_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chainio/clients/elcontracts/writer_test.go b/chainio/clients/elcontracts/writer_test.go index d7c66f73e..499d963ab 100644 --- a/chainio/clients/elcontracts/writer_test.go +++ b/chainio/clients/elcontracts/writer_test.go @@ -1125,7 +1125,7 @@ func setTestRewardsCoordinatorActivationDelay( // TestInvalidConfig tests the behavior of the chainWriter when the config is invalid (e.g. missing addresses, wrong // addresses) -func TestInvalidConfig(t *testing.T) { +func TestInvalidConfigChainWriter(t *testing.T) { testConfig := testutils.GetDefaultTestConfig() anvilC, err := testutils.StartAnvilContainer(testConfig.AnvilStateFileName) require.NoError(t, err) From dc952c47ffad2371ad3ebf72759cb758b965f9ac Mon Sep 17 00:00:00 2001 From: maximopalopoli Date: Wed, 29 Jan 2025 15:46:21 -0300 Subject: [PATCH 14/14] Improve comment of TestInvalidConfigChainWriter --- chainio/clients/elcontracts/writer_test.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/chainio/clients/elcontracts/writer_test.go b/chainio/clients/elcontracts/writer_test.go index 499d963ab..ab0679496 100644 --- a/chainio/clients/elcontracts/writer_test.go +++ b/chainio/clients/elcontracts/writer_test.go @@ -1123,8 +1123,7 @@ func setTestRewardsCoordinatorActivationDelay( return receipt, err } -// TestInvalidConfig tests the behavior of the chainWriter when the config is invalid (e.g. missing addresses, wrong -// addresses) +// TestInvalidConfig tests the behavior of the chainWriter when the config is invalid (e.g. missing addresses) func TestInvalidConfigChainWriter(t *testing.T) { testConfig := testutils.GetDefaultTestConfig() anvilC, err := testutils.StartAnvilContainer(testConfig.AnvilStateFileName)