mirror of https://github.com/poanetwork/quorum.git
permission: declare constants for arbitrary values in unit tests
This commit is contained in:
commit
0dffa2eb8d
|
@ -652,9 +652,9 @@ func (q *QuorumControlsAPI) valNodeStatusChange(orgId, url string, op NodeUpdate
|
|||
}
|
||||
|
||||
// validate the op and node status and check if the op can be performed
|
||||
if (permAction == UpdateNodeStatus && ( op != SuspendNode && op != ActivateSuspendedNode && op != BlacklistNode )) ||
|
||||
if (permAction == UpdateNodeStatus && (op != SuspendNode && op != ActivateSuspendedNode && op != BlacklistNode)) ||
|
||||
(permAction == InitiateNodeRecovery && op != RecoverBlacklistedNode) ||
|
||||
(permAction == ApproveNodeRecovery && op != ApproveBlacklistedNodeRecovery){
|
||||
(permAction == ApproveNodeRecovery && op != ApproveBlacklistedNodeRecovery) {
|
||||
return ErrOpNotAllowed, errors.New("invalid node status change operation")
|
||||
}
|
||||
|
||||
|
@ -682,7 +682,7 @@ func (q *QuorumControlsAPI) validateRole(orgId, roleId string) bool {
|
|||
return r != nil && r.Active
|
||||
}
|
||||
|
||||
func (q *QuorumControlsAPI) valAccountStatusChange(orgId string, account common.Address, permAction PermAction, op AccountUpdateAction) (ExecStatus, error) {
|
||||
func (q *QuorumControlsAPI) valAccountStatusChange(orgId string, account common.Address, permAction PermAction, op AccountUpdateAction) (ExecStatus, error) {
|
||||
// validates if the enode is linked the passed organization
|
||||
ac := types.AcctInfoMap.GetAccount(account)
|
||||
|
||||
|
@ -698,7 +698,7 @@ func (q *QuorumControlsAPI) valAccountStatusChange(orgId string, account common
|
|||
return ErrOrgNotOwner, errors.New("account does not belong to the organization passed")
|
||||
}
|
||||
if (permAction == UpdateAccountStatus && (op != SuspendAccount && op != ActivateSuspendedAccount && op != BlacklistAccount)) ||
|
||||
(permAction == InitiateAccountRecovery && op != RecoverBlacklistedAccount ) ||
|
||||
(permAction == InitiateAccountRecovery && op != RecoverBlacklistedAccount) ||
|
||||
(permAction == ApproveAccountRecovery && op != ApproveBlacklistedAccountRecovery) {
|
||||
return ErrOpNotAllowed, errors.New("invalid account status change operation")
|
||||
}
|
||||
|
@ -707,7 +707,6 @@ func (q *QuorumControlsAPI) valAccountStatusChange(orgId string, account common
|
|||
return ErrBlacklistedAccount, errors.New("blacklisted account. operation not allowed")
|
||||
}
|
||||
|
||||
|
||||
if (op == SuspendAccount && ac.Status != types.AcctActive) ||
|
||||
(op == ActivateSuspendedAccount && ac.Status != types.AcctSuspended) ||
|
||||
(op == BlacklistAccount && ac.Status == types.AcctRecoveryInitiated) ||
|
||||
|
@ -1095,7 +1094,7 @@ func (q *QuorumControlsAPI) valRecoverAccount(args txArgs, pinterf *pbind.PermIn
|
|||
opAction = ApproveBlacklistedAccountRecovery
|
||||
}
|
||||
|
||||
if execStatus, err := q.valAccountStatusChange(args.orgId, args.acctId, action, opAction ); err != nil {
|
||||
if execStatus, err := q.valAccountStatusChange(args.orgId, args.acctId, action, opAction); err != nil {
|
||||
return execStatus
|
||||
}
|
||||
|
||||
|
@ -1120,7 +1119,7 @@ func (q *QuorumControlsAPI) validateAccount(from common.Address) (accounts.Walle
|
|||
}
|
||||
|
||||
func (q *QuorumControlsAPI) newPermInterfaceSession(w accounts.Wallet, txa ethapi.SendTxArgs) *pbind.PermInterfaceSession {
|
||||
frmAcct, transactOpts, gasLimit, gasPrice, nonce := q.getTxParams(txa, w)
|
||||
frmAcct, transactOpts, gasLimit, gasPrice := q.getTxParams(txa, w)
|
||||
ps := &pbind.PermInterfaceSession{
|
||||
Contract: q.permCtrl.permInterf,
|
||||
CallOpts: bind.CallOpts{
|
||||
|
@ -1131,14 +1130,13 @@ func (q *QuorumControlsAPI) newPermInterfaceSession(w accounts.Wallet, txa ethap
|
|||
GasLimit: gasLimit,
|
||||
GasPrice: gasPrice,
|
||||
Signer: transactOpts.Signer,
|
||||
Nonce: nonce,
|
||||
},
|
||||
}
|
||||
return ps
|
||||
}
|
||||
|
||||
// getTxParams extracts the transaction related parameters
|
||||
func (q *QuorumControlsAPI) getTxParams(txa ethapi.SendTxArgs, w accounts.Wallet) (accounts.Account, *bind.TransactOpts, uint64, *big.Int, *big.Int) {
|
||||
func (q *QuorumControlsAPI) getTxParams(txa ethapi.SendTxArgs, w accounts.Wallet) (accounts.Account, *bind.TransactOpts, uint64, *big.Int) {
|
||||
frmAcct := accounts.Account{Address: txa.From}
|
||||
transactOpts := bind.NewWalletTransactor(w, frmAcct)
|
||||
gasLimit := defaultGasLimit
|
||||
|
@ -1149,11 +1147,5 @@ func (q *QuorumControlsAPI) getTxParams(txa ethapi.SendTxArgs, w accounts.Wallet
|
|||
if txa.Gas != nil {
|
||||
gasLimit = uint64(*txa.Gas)
|
||||
}
|
||||
var nonce *big.Int
|
||||
if txa.Nonce != nil {
|
||||
nonce = new(big.Int).SetUint64(uint64(*txa.Nonce))
|
||||
} else {
|
||||
nonce = new(big.Int).SetUint64(q.permCtrl.eth.TxPool().Nonce(frmAcct.Address))
|
||||
}
|
||||
return frmAcct, transactOpts, gasLimit, gasPrice, nonce
|
||||
return frmAcct, transactOpts, gasLimit, gasPrice
|
||||
}
|
||||
|
|
|
@ -668,12 +668,10 @@ func (p *PermissionCtrl) populateInitPermissions() error {
|
|||
|
||||
// initialize the permissions model and populate initial values
|
||||
func (p *PermissionCtrl) bootupNetwork(permInterfSession *pbind.PermInterfaceSession) error {
|
||||
// permInterfSession.TransactOpts.Nonce = new(big.Int).SetUint64(p.eth.TxPool().State().GetNonce(permInterfSession.TransactOpts.From))
|
||||
if _, err := permInterfSession.SetPolicy(p.permConfig.NwAdminOrg, p.permConfig.NwAdminRole, p.permConfig.OrgAdminRole); err != nil {
|
||||
log.Error("bootupNetwork SetPolicy failed", "err", err)
|
||||
return err
|
||||
}
|
||||
// permInterfSession.TransactOpts.Nonce = new(big.Int).SetUint64(p.eth.TxPool().State().GetNonce(permInterfSession.TransactOpts.From))
|
||||
if _, err := permInterfSession.Init(&p.permConfig.SubOrgBreadth, &p.permConfig.SubOrgDepth); err != nil {
|
||||
log.Error("bootupNetwork init failed", "err", err)
|
||||
return err
|
||||
|
@ -756,7 +754,6 @@ func (p *PermissionCtrl) populateNodesFromContract(auth *bind.TransactOpts) erro
|
|||
if numberOfNodes, err := permNodeSession.GetNumberOfNodes(); err == nil {
|
||||
iOrgNum := numberOfNodes.Uint64()
|
||||
for k := uint64(0); k < iOrgNum; k++ {
|
||||
permNodeSession.TransactOpts.Nonce = new(big.Int).SetUint64(p.eth.TxPool().Nonce(permNodeSession.TransactOpts.From))
|
||||
if nodeStruct, err := permNodeSession.GetNodeDetailsFromIndex(big.NewInt(int64(k))); err == nil {
|
||||
types.NodeInfoMap.UpsertNode(nodeStruct.OrgId, nodeStruct.EnodeId, types.NodeStatus(int(nodeStruct.NodeStatus.Int64())))
|
||||
}
|
||||
|
@ -793,14 +790,9 @@ func (p *PermissionCtrl) populateOrgsFromContract(auth *bind.TransactOpts) error
|
|||
func (p *PermissionCtrl) populateStaticNodesToContract(permissionsSession *pbind.PermInterfaceSession) error {
|
||||
nodes := p2p.ParsePermissionedNodes(p.dataDir)
|
||||
for _, node := range nodes {
|
||||
|
||||
enodeID := node.EnodeID()
|
||||
nonce := p.eth.TxPool().Nonce(permissionsSession.TransactOpts.From)
|
||||
permissionsSession.TransactOpts.Nonce = new(big.Int).SetUint64(nonce)
|
||||
|
||||
_, err := permissionsSession.AddAdminNode(node.String())
|
||||
if err != nil {
|
||||
log.Warn("Failed to propose node", "err", err, "enode", enodeID)
|
||||
log.Warn("Failed to propose node", "err", err, "enode", node.EnodeID())
|
||||
return err
|
||||
}
|
||||
types.NodeInfoMap.UpsertNode(p.permConfig.NwAdminOrg, node.String(), 2)
|
||||
|
@ -812,8 +804,6 @@ func (p *PermissionCtrl) populateStaticNodesToContract(permissionsSession *pbind
|
|||
// set of accounts access to full access
|
||||
func (p *PermissionCtrl) populateInitAccountAccess(permissionsSession *pbind.PermInterfaceSession) error {
|
||||
for _, a := range p.permConfig.Accounts {
|
||||
//nonce := p.eth.TxPool().Nonce(permissionsSession.TransactOpts.From)
|
||||
//permissionsSession.TransactOpts.Nonce = new(big.Int).SetUint64(nonce)
|
||||
_, er := permissionsSession.AddAdminAccount(a)
|
||||
if er != nil {
|
||||
log.Warn("Error adding permission initial account list", "err", er, "account", a)
|
||||
|
@ -826,8 +816,6 @@ func (p *PermissionCtrl) populateInitAccountAccess(permissionsSession *pbind.Per
|
|||
|
||||
// updates network boot status to true
|
||||
func (p *PermissionCtrl) updateNetworkStatus(permissionsSession *pbind.PermInterfaceSession) error {
|
||||
//nonce := p.eth.TxPool().Nonce(permissionsSession.TransactOpts.From)
|
||||
//permissionsSession.TransactOpts.Nonce = new(big.Int).SetUint64(nonce)
|
||||
_, err := permissionsSession.UpdateNetworkBootStatus()
|
||||
if err != nil {
|
||||
log.Warn("Failed to udpate network boot status ", "err", err)
|
||||
|
|
|
@ -27,6 +27,12 @@ import (
|
|||
pbind "github.com/ethereum/go-ethereum/permission/bind"
|
||||
)
|
||||
|
||||
const (
|
||||
arbitraryNetworkAdminOrg = "NETWORK_ADMIN"
|
||||
arbitraryNetworkAdminRole = "NETWORK_ADMIN_ROLE"
|
||||
arbitraryOrgAdminRole = "ORG_ADMIN_ROLE"
|
||||
)
|
||||
|
||||
var (
|
||||
testObject *PermissionCtrl
|
||||
guardianKey *ecdsa.PrivateKey
|
||||
|
@ -163,9 +169,9 @@ func TestPermissionCtrl_PopulateInitPermissions_whenNetworkIsInitialized(t *test
|
|||
// assert cache
|
||||
assert.Equal(t, 1, len(types.OrgInfoMap.GetOrgList()))
|
||||
cachedOrg := types.OrgInfoMap.GetOrgList()[0]
|
||||
assert.Equal(t, "NETWORK_ADMIN", cachedOrg.OrgId)
|
||||
assert.Equal(t, "NETWORK_ADMIN", cachedOrg.FullOrgId)
|
||||
assert.Equal(t, "NETWORK_ADMIN", cachedOrg.UltimateParent)
|
||||
assert.Equal(t, arbitraryNetworkAdminOrg, cachedOrg.OrgId)
|
||||
assert.Equal(t, arbitraryNetworkAdminOrg, cachedOrg.FullOrgId)
|
||||
assert.Equal(t, arbitraryNetworkAdminOrg, cachedOrg.UltimateParent)
|
||||
assert.Equal(t, "", cachedOrg.ParentOrgId)
|
||||
assert.Equal(t, types.OrgApproved, cachedOrg.Status)
|
||||
assert.Equal(t, 0, len(cachedOrg.SubOrgList))
|
||||
|
@ -173,8 +179,8 @@ func TestPermissionCtrl_PopulateInitPermissions_whenNetworkIsInitialized(t *test
|
|||
|
||||
assert.Equal(t, 1, len(types.RoleInfoMap.GetRoleList()))
|
||||
cachedRole := types.RoleInfoMap.GetRoleList()[0]
|
||||
assert.Equal(t, "NETWORK_ADMIN", cachedRole.OrgId)
|
||||
assert.Equal(t, "NETWORK_ADMIN_ROLE", cachedRole.RoleId)
|
||||
assert.Equal(t, arbitraryNetworkAdminOrg, cachedRole.OrgId)
|
||||
assert.Equal(t, arbitraryNetworkAdminRole, cachedRole.RoleId)
|
||||
assert.True(t, cachedRole.Active)
|
||||
assert.True(t, cachedRole.IsAdmin)
|
||||
assert.True(t, cachedRole.IsVoter)
|
||||
|
@ -184,8 +190,8 @@ func TestPermissionCtrl_PopulateInitPermissions_whenNetworkIsInitialized(t *test
|
|||
|
||||
assert.Equal(t, 1, len(types.AcctInfoMap.GetAcctList()))
|
||||
cachedAccount := types.AcctInfoMap.GetAcctList()[0]
|
||||
assert.Equal(t, "NETWORK_ADMIN", cachedAccount.OrgId)
|
||||
assert.Equal(t, "NETWORK_ADMIN_ROLE", cachedAccount.RoleId)
|
||||
assert.Equal(t, arbitraryNetworkAdminOrg, cachedAccount.OrgId)
|
||||
assert.Equal(t, arbitraryNetworkAdminRole, cachedAccount.RoleId)
|
||||
assert.Equal(t, types.AcctActive, cachedAccount.Status)
|
||||
assert.True(t, cachedAccount.IsOrgAdmin)
|
||||
assert.Equal(t, guardianAddress, cachedAccount.AcctId)
|
||||
|
@ -201,9 +207,9 @@ func typicalPermissionCtrl(t *testing.T) *PermissionCtrl {
|
|||
RoleAddress: roleManagerAddress,
|
||||
VoterAddress: voterManagerAddress,
|
||||
OrgAddress: orgManagerAddress,
|
||||
NwAdminOrg: "NETWORK_ADMIN",
|
||||
NwAdminRole: "NETWORK_ADMIN_ROLE",
|
||||
OrgAdminRole: "ORG_ADMIN_ROLE",
|
||||
NwAdminOrg: arbitraryNetworkAdminOrg,
|
||||
NwAdminRole: arbitraryNetworkAdminRole,
|
||||
OrgAdminRole: arbitraryOrgAdminRole,
|
||||
Accounts: []common.Address{
|
||||
guardianAddress,
|
||||
},
|
||||
|
|
Loading…
Reference in New Issue