Skip to content

Commit

Permalink
implement request-response pattern for IsPendingAdmin and update tests.
Browse files Browse the repository at this point in the history
  • Loading branch information
damiramirez committed Jan 24, 2025
1 parent b01efd5 commit f2e0e63
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 16 deletions.
20 changes: 12 additions & 8 deletions chainio/clients/elcontracts/reader.go
Original file line number Diff line number Diff line change
Expand Up @@ -1036,19 +1036,23 @@ func (r *ChainReader) ListAdmins(

func (r *ChainReader) IsPendingAdmin(
ctx context.Context,
accountAddress gethcommon.Address,
pendingAdminAddress gethcommon.Address,
) (bool, error) {
blockNumber *big.Int,
request IsPendingAdminRequest,
) (IsPendingAdminResponse, error) {
if r.permissionController == nil {
return IsPendingAdminResponse{}, errors.New("PermissionController contract not provided")
}

isPendingAdmin, err := r.permissionController.IsPendingAdmin(
&bind.CallOpts{Context: ctx},
accountAddress,
pendingAdminAddress,
&bind.CallOpts{Context: ctx, BlockNumber: blockNumber},
request.AccountAddress,
request.PendingAdminAddress,
)
// This call should not fail since it's a getter
if err != nil {
return false, utils.WrapError("call to permission controller failed", err)
return IsPendingAdminResponse{}, utils.WrapError("call to permission controller failed", err)
}
return isPendingAdmin, nil
return IsPendingAdminResponse{IsPendingAdmin: isPendingAdmin}, nil
}

func (r *ChainReader) IsAdmin(
Expand Down
16 changes: 12 additions & 4 deletions chainio/clients/elcontracts/reader_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -709,9 +709,13 @@ func TestAdminFunctions(t *testing.T) {
assert.NoError(t, err)

t.Run("non-existent pending admin", func(t *testing.T) {
isPendingAdmin, err := chainReader.IsPendingAdmin(context.Background(), operatorAddr, pendingAdminAddr)
request := elcontracts.IsPendingAdminRequest{
AccountAddress: operatorAddr,
PendingAdminAddress: pendingAdminAddr,
}
response, err := chainReader.IsPendingAdmin(context.Background(), nil, request)
assert.NoError(t, err)
assert.False(t, isPendingAdmin)
assert.False(t, response.IsPendingAdmin)
})

t.Run("list pending admins when empty", func(t *testing.T) {
Expand All @@ -734,9 +738,13 @@ func TestAdminFunctions(t *testing.T) {
assert.NoError(t, err)
assert.Equal(t, receipt.Status, gethtypes.ReceiptStatusSuccessful)

isPendingAdmin, err := chainReader.IsPendingAdmin(context.Background(), operatorAddr, pendingAdminAddr)
requestPending := elcontracts.IsPendingAdminRequest{
AccountAddress: operatorAddr,
PendingAdminAddress: pendingAdminAddr,
}
responsePending, err := chainReader.IsPendingAdmin(context.Background(), nil, requestPending)
assert.NoError(t, err)
assert.True(t, isPendingAdmin)
assert.True(t, responsePending.IsPendingAdmin)

requestListPending := elcontracts.ListPendingAdminsRequest{
AccountAddress: operatorAddr,
Expand Down
9 changes: 9 additions & 0 deletions chainio/clients/elcontracts/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -401,3 +401,12 @@ type ListAdminsRequest struct {
type ListAdminsResponse struct {
Admins []common.Address
}

type IsPendingAdminRequest struct {
AccountAddress common.Address
PendingAdminAddress common.Address
}

type IsPendingAdminResponse struct {
IsPendingAdmin bool
}
16 changes: 12 additions & 4 deletions chainio/clients/elcontracts/writer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -740,9 +740,13 @@ func TestAddAndRemovePendingAdmin(t *testing.T) {
require.NoError(t, err)
require.Equal(t, gethtypes.ReceiptStatusSuccessful, receipt.Status)

isPendingAdmin, err := chainReader.IsPendingAdmin(context.Background(), operatorAddr, pendingAdmin)
request := elcontracts.IsPendingAdminRequest{
AccountAddress: operatorAddr,
PendingAdminAddress: pendingAdmin,
}
response, err := chainReader.IsPendingAdmin(context.Background(), nil, request)
require.NoError(t, err)
require.True(t, isPendingAdmin)
require.True(t, response.IsPendingAdmin)
})

t.Run("add pending admin when already added", func(t *testing.T) {
Expand All @@ -755,9 +759,13 @@ func TestAddAndRemovePendingAdmin(t *testing.T) {
require.NoError(t, err)
require.Equal(t, gethtypes.ReceiptStatusSuccessful, receipt.Status)

isPendingAdmin, err := chainReader.IsPendingAdmin(context.Background(), operatorAddr, pendingAdmin)
request := elcontracts.IsPendingAdminRequest{
AccountAddress: operatorAddr,
PendingAdminAddress: pendingAdmin,
}
response, err := chainReader.IsPendingAdmin(context.Background(), nil, request)
require.NoError(t, err)
require.False(t, isPendingAdmin)
require.False(t, response.IsPendingAdmin)
})
}

Expand Down

0 comments on commit f2e0e63

Please sign in to comment.