Added JobTemplate ownership change test

This commit is contained in:
Wayne Witzel III
2018-04-05 09:46:38 -04:00
parent 524343870b
commit 3411389d00
2 changed files with 30 additions and 0 deletions

View File

@@ -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

View File

@@ -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)