Skip to content

Commit

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

func (r *ChainReader) IsAdmin(
ctx context.Context,
accountAddress gethcommon.Address,
adminAddress gethcommon.Address,
) (bool, error) {
isAdmin, err := r.permissionController.IsAdmin(&bind.CallOpts{Context: ctx}, accountAddress, adminAddress)
blockNumber *big.Int,
request IsAdminRequest,
) (IsAdminResponse, error) {
if r.permissionController == nil {
return IsAdminResponse{}, errors.New("PermissionController contract not provided")
}

isAdmin, err := r.permissionController.IsAdmin(
&bind.CallOpts{Context: ctx, BlockNumber: blockNumber},
request.AccountAddress,
request.AdminAddress,
)
// This call should not fail since it's a getter
if err != nil {
return false, utils.WrapError("call to permission controller failed", err)
return IsAdminResponse{}, utils.WrapError("call to permission controller failed", err)
}
return isAdmin, nil
return IsAdminResponse{IsAdmin: isAdmin}, nil
}
20 changes: 14 additions & 6 deletions chainio/clients/elcontracts/reader_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -755,9 +755,13 @@ func TestAdminFunctions(t *testing.T) {
})

t.Run("non-existent admin", func(t *testing.T) {
isAdmin, err := chainReader.IsAdmin(context.Background(), operatorAddr, pendingAdminAddr)
request := elcontracts.IsAdminRequest{
AccountAddress: operatorAddr,
AdminAddress: pendingAdminAddr,
}
response, err := chainReader.IsAdmin(context.Background(), nil, request)
assert.NoError(t, err)
assert.False(t, isAdmin)
assert.False(t, response.IsAdmin)
})

t.Run("list admins", func(t *testing.T) {
Expand All @@ -770,17 +774,21 @@ func TestAdminFunctions(t *testing.T) {
assert.NoError(t, err)
assert.Equal(t, receipt.Status, gethtypes.ReceiptStatusSuccessful)

requestAdmin := elcontracts.ListAdminsRequest{
requestListAdmin := elcontracts.ListAdminsRequest{
AccountAddress: operatorAddr,
}
response, err := chainReader.ListAdmins(context.Background(), nil, requestAdmin)
response, err := chainReader.ListAdmins(context.Background(), nil, requestListAdmin)
assert.NoError(t, err)
assert.Len(t, response.Admins, 1)

admin := response.Admins[0]
isAdmin, err := chainReader.IsAdmin(context.Background(), operatorAddr, admin)
requestAdmin := elcontracts.IsAdminRequest{
AccountAddress: operatorAddr,
AdminAddress: admin,
}
responseAdmin, err := chainReader.IsAdmin(context.Background(), nil, requestAdmin)
assert.NoError(t, err)
assert.True(t, isAdmin)
assert.True(t, responseAdmin.IsAdmin)
})
}

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 @@ -410,3 +410,12 @@ type IsPendingAdminRequest struct {
type IsPendingAdminResponse struct {
IsPendingAdmin bool
}

type IsAdminRequest struct {
AccountAddress common.Address
AdminAddress common.Address
}

type IsAdminResponse struct {
IsAdmin 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 @@ -818,9 +818,13 @@ func TestAcceptAdmin(t *testing.T) {
require.NoError(t, err)
require.Equal(t, gethtypes.ReceiptStatusSuccessful, receipt.Status)

isAdmin, err := chainReader.IsAdmin(context.Background(), accountAddr, pendingAdminAddr)
request := elcontracts.IsAdminRequest{
AccountAddress: accountAddr,
AdminAddress: pendingAdminAddr,
}
response, err := chainReader.IsAdmin(context.Background(), nil, request)
require.NoError(t, err)
require.True(t, isAdmin)
require.True(t, response.IsAdmin)
})

t.Run("accept admin when already accepted", func(t *testing.T) {
Expand Down Expand Up @@ -909,9 +913,13 @@ func TestRemoveAdmin(t *testing.T) {
require.NoError(t, err)
require.Equal(t, gethtypes.ReceiptStatusSuccessful, receipt.Status)

isAdmin, err := chainReader.IsAdmin(context.Background(), accountAddr, admin2)
request := elcontracts.IsAdminRequest{
AccountAddress: accountAddr,
AdminAddress: admin2,
}
response, err := chainReader.IsAdmin(context.Background(), nil, request)
require.NoError(t, err)
require.False(t, isAdmin)
require.False(t, response.IsAdmin)
})

t.Run("remove admin 2 when already removed", func(t *testing.T) {
Expand Down

0 comments on commit bf88f74

Please sign in to comment.