def test_job_template_access_admin(role_names, jt_linked, rando): ssh_cred = jt_linked.machine_credential access = JobTemplateAccess(rando) # Appoint this user as admin of the organization #jt_linked.inventory.organization.admin_role.members.add(rando) assert not access.can_read(jt_linked) assert not access.can_delete(jt_linked) for role_name in role_names: role = getattr(jt_linked.inventory.organization, role_name) role.members.add(rando) # Assign organization permission in the same way the create view does organization = jt_linked.inventory.organization ssh_cred.admin_role.parents.add(organization.admin_role) proj_pk = jt_linked.project.pk assert access.can_add( dict(inventory=jt_linked.inventory.pk, project=proj_pk)) assert access.can_add(dict(credential=ssh_cred.pk, project=proj_pk)) for cred in jt_linked.credentials.all(): assert access.can_unattach(jt_linked, cred, 'credentials', {}) assert access.can_read(jt_linked) assert access.can_delete(jt_linked)
def test_job_template_access_org_admin(jt_linked, rando): access = JobTemplateAccess(rando) # Appoint this user as admin of the organization jt_linked.inventory.organization.admin_role.members.add(rando) # Assign organization permission in the same way the create view does organization = jt_linked.inventory.organization jt_linked.get_deprecated_credential('ssh').admin_role.parents.add(organization.admin_role) proj_pk = jt_linked.project.pk assert access.can_add(dict(inventory=jt_linked.inventory.pk, project=proj_pk)) assert access.can_add(dict(credential=jt_linked.credential, project=proj_pk)) for cred in jt_linked.credentials.all(): assert access.can_unattach(jt_linked, cred, 'credentials', {}) assert access.can_read(jt_linked) assert access.can_delete(jt_linked)
def test_job_template_delete_access_with_survey(job_template_with_survey, admin_user): """The survey_spec view relies on JT `can_delete` to determine permission to delete the survey. This checks that system admins can delete the survey on a JT.""" access = JobTemplateAccess(admin_user) assert access.can_delete(job_template_with_survey)