mirror of
https://github.com/ansible/awx.git
synced 2026-03-13 23:17:32 -02:30
Cache organization child evaluations and remove hacks
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import pytest
|
||||
|
||||
from awx.main.models.rbac import get_role_from_object_role
|
||||
from awx.main.models import User, Organization
|
||||
|
||||
from ansible_base.rbac.models import RoleUserAssignment
|
||||
|
||||
@@ -21,3 +22,40 @@ def test_round_trip_roles(organization, rando, role_name):
|
||||
print(assignment.role_definition.name)
|
||||
old_role = get_role_from_object_role(assignment.object_role)
|
||||
assert old_role.id == getattr(organization, role_name).id
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_organization_level_permissions(organization, inventory):
|
||||
u1 = User.objects.create(username='alice')
|
||||
u2 = User.objects.create(username='bob')
|
||||
|
||||
organization.inventory_admin_role.members.add(u1)
|
||||
organization.workflow_admin_role.members.add(u2)
|
||||
|
||||
assert u1 in inventory.admin_role
|
||||
assert u1 in organization.inventory_admin_role
|
||||
assert u2 in organization.workflow_admin_role
|
||||
|
||||
assert u2 not in organization.inventory_admin_role
|
||||
assert u1 not in organization.workflow_admin_role
|
||||
assert not (set(u1.has_roles.all()) & set(u2.has_roles.all())) # user have no roles in common
|
||||
|
||||
# Old style
|
||||
assert set(Organization.accessible_objects(u1, 'inventory_admin_role')) == set([organization])
|
||||
assert set(Organization.accessible_objects(u2, 'inventory_admin_role')) == set()
|
||||
assert set(Organization.accessible_objects(u1, 'workflow_admin_role')) == set()
|
||||
assert set(Organization.accessible_objects(u2, 'workflow_admin_role')) == set([organization])
|
||||
|
||||
# New style
|
||||
assert set(Organization.access_qs(u1, 'add_inventory')) == set([organization])
|
||||
assert set(Organization.access_qs(u1, 'change_inventory')) == set([organization])
|
||||
assert set(Organization.access_qs(u2, 'add_inventory')) == set()
|
||||
assert set(Organization.access_qs(u1, 'add_workflowjobtemplate')) == set()
|
||||
assert set(Organization.access_qs(u2, 'add_workflowjobtemplate')) == set([organization])
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_organization_execute_role(organization, rando):
|
||||
organization.execute_role.members.add(rando)
|
||||
assert rando in organization.execute_role
|
||||
assert set(Organization.accessible_objects(rando, 'execute_role')) == set([organization])
|
||||
|
||||
Reference in New Issue
Block a user