mirror of
https://github.com/ansible/awx.git
synced 2026-01-09 15:02:07 -03:30
Develop ability to list permissions for existing roles Create a model registry for RBAC-tracked models Write the data migration logic for creating the preloaded role definitions Write migration to migrate old Role into ObjectRole model This loops over the old Role model, knowing it is unique on object and role_field Most of the logic is concerned with identifying the needed permissions, and then corresponding role definition As needed, object roles are created and users then teams are assigned Write re-computation of cache logic for teams and then for object role permissions Migrate new RBAC internals to ansible_base Migrate tests to ansible_base Implement solution for visible_roles Expose URLs for DAB RBAC
34 lines
1.3 KiB
Python
34 lines
1.3 KiB
Python
import pytest
|
|
|
|
# AWX context managers for testing
|
|
from awx.main.signals import disable_activity_stream, disable_computed_fields, update_inventory_computed_fields
|
|
|
|
# AWX models
|
|
from awx.main.models.organization import Organization
|
|
from awx.main.models import ActivityStream, Job
|
|
from awx.main.tests.functional import immediate_on_commit
|
|
|
|
|
|
@pytest.mark.django_db
|
|
def test_disable_activity_stream():
|
|
with disable_activity_stream():
|
|
Organization.objects.create(name='test-organization')
|
|
assert ActivityStream.objects.filter(organization__isnull=False).count() == 0
|
|
|
|
|
|
@pytest.mark.django_db
|
|
class TestComputedFields:
|
|
def test_computed_fields_normal_use(self, mocker, inventory):
|
|
job = Job.objects.create(name='fake-job', inventory=inventory)
|
|
with immediate_on_commit():
|
|
with mocker.patch.object(update_inventory_computed_fields, 'delay'):
|
|
job.delete()
|
|
update_inventory_computed_fields.delay.assert_called_once_with(inventory.id)
|
|
|
|
def test_disable_computed_fields(self, mocker, inventory):
|
|
job = Job.objects.create(name='fake-job', inventory=inventory)
|
|
with disable_computed_fields():
|
|
with mocker.patch.object(update_inventory_computed_fields, 'delay'):
|
|
job.delete()
|
|
update_inventory_computed_fields.delay.assert_not_called()
|