mirror of
https://github.com/ansible/awx.git
synced 2026-03-05 18:51:06 -03:30
Added JobTemplate ownership change test
This commit is contained in:
@@ -235,6 +235,7 @@ def cleanup_detached_labels_on_deleted_parent(sender, instance, **kwargs):
|
|||||||
if l.is_candidate_for_detach():
|
if l.is_candidate_for_detach():
|
||||||
l.delete()
|
l.delete()
|
||||||
|
|
||||||
|
|
||||||
def set_original_organization(sender, instance, **kwargs):
|
def set_original_organization(sender, instance, **kwargs):
|
||||||
'''set_original_organization is used to set the original, or
|
'''set_original_organization is used to set the original, or
|
||||||
pre-save organization, so we can later determine if the organization
|
pre-save organization, so we can later determine if the organization
|
||||||
@@ -242,6 +243,7 @@ def set_original_organization(sender, instance, **kwargs):
|
|||||||
'''
|
'''
|
||||||
instance.__original_org = instance.organization
|
instance.__original_org = instance.organization
|
||||||
|
|
||||||
|
|
||||||
def save_related_job_templates(sender, instance, **kwargs):
|
def save_related_job_templates(sender, instance, **kwargs):
|
||||||
'''save_related_job_templates loops through all of the
|
'''save_related_job_templates loops through all of the
|
||||||
job templates that use an Inventory or Project that have had their
|
job templates that use an Inventory or Project that have had their
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ from awx.main.access import (
|
|||||||
ScheduleAccess
|
ScheduleAccess
|
||||||
)
|
)
|
||||||
from awx.main.models.jobs import JobTemplate
|
from awx.main.models.jobs import JobTemplate
|
||||||
|
from awx.main.models.organization import Organization
|
||||||
from awx.main.models.schedules import Schedule
|
from awx.main.models.schedules import Schedule
|
||||||
|
|
||||||
|
|
||||||
@@ -296,3 +297,30 @@ class TestJobTemplateSchedules:
|
|||||||
mock_change.return_value = True
|
mock_change.return_value = True
|
||||||
assert access.can_change(schedule, {'inventory': 42})
|
assert access.can_change(schedule, {'inventory': 42})
|
||||||
mock_change.assert_called_once_with(schedule, {'inventory': 42})
|
mock_change.assert_called_once_with(schedule, {'inventory': 42})
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.django_db
|
||||||
|
def test_jt_org_ownership_change(user, jt_linked):
|
||||||
|
admin1 = user('admin1')
|
||||||
|
org1 = jt_linked.project.organization
|
||||||
|
org1.admin_role.members.add(admin1)
|
||||||
|
a1_access = JobTemplateAccess(admin1)
|
||||||
|
|
||||||
|
assert a1_access.can_read(jt_linked)
|
||||||
|
|
||||||
|
|
||||||
|
admin2 = user('admin2')
|
||||||
|
org2 = Organization.objects.create(name='mrroboto', description='domo')
|
||||||
|
org2.admin_role.members.add(admin2)
|
||||||
|
a2_access = JobTemplateAccess(admin2)
|
||||||
|
|
||||||
|
assert not a2_access.can_read(jt_linked)
|
||||||
|
|
||||||
|
|
||||||
|
jt_linked.project.organization = org2
|
||||||
|
jt_linked.project.save()
|
||||||
|
jt_linked.inventory.organization = org2
|
||||||
|
jt_linked.inventory.save()
|
||||||
|
|
||||||
|
assert a2_access.can_read(jt_linked)
|
||||||
|
assert not a1_access.can_read(jt_linked)
|
||||||
|
|||||||
Reference in New Issue
Block a user