def test_prefetch_jt_copy_capability(job_template, project, inventory, rando):
    job_template.project = project
    job_template.inventory = inventory
    job_template.save()

    qs = JobTemplate.objects.all()
    mapping = prefetch_page_capabilities(
        JobTemplate,
        qs,
        [{
            'copy': [
                'project.use',
                'inventory.use',
            ]
        }],
        rando,
    )
    assert mapping[job_template.id] == {'copy': False}

    project.use_role.members.add(rando)
    inventory.use_role.members.add(rando)

    mapping = prefetch_page_capabilities(
        JobTemplate,
        qs,
        [{
            'copy': [
                'project.use',
                'inventory.use',
            ]
        }],
        rando,
    )
    assert mapping[job_template.id] == {'copy': True}
def test_prefetch_ujt_job_template_capabilities(alice, bob, job_template):
    job_template.execute_role.members.add(alice)
    qs = UnifiedJobTemplate.objects.all()
    mapping = prefetch_page_capabilities(UnifiedJobTemplate, qs, ['admin', 'execute'], alice)
    assert mapping[job_template.id] == {'edit': False, 'start': True}
    qs = UnifiedJobTemplate.objects.all()
    mapping = prefetch_page_capabilities(UnifiedJobTemplate, qs, ['admin', 'execute'], bob)
    assert mapping[job_template.id] == {'edit': False, 'start': False}
def test_prefetch_group_capabilities(group, rando):
    group.inventory.adhoc_role.members.add(rando)
    qs = Group.objects.all()
    mapping = prefetch_page_capabilities(
        Group, qs, ['inventory.admin', 'inventory.adhoc'], rando)
    assert mapping[group.id] == {'edit': False, 'adhoc': True}
def test_prefetch_jt_capabilities(job_template, rando):
    job_template.execute_role.members.add(rando)
    qs = JobTemplate.objects.all()
    mapping = prefetch_page_capabilities(JobTemplate, qs, ['admin', 'execute'],
                                         rando)
    assert mapping[job_template.id] == {'edit': False, 'start': True}