def test_copy_edit_standard(self, mocker, job_template_factory):
        """Verify that the exact output of the access.py methods
        are put into the serializer user_capabilities"""

        jt_obj = job_template_factory('testJT',
                                      project='proj1',
                                      persisted=False).job_template
        jt_obj.admin_role = Role(id=9, role_field='admin_role')
        jt_obj.execute_role = Role(id=8, role_field='execute_role')
        jt_obj.read_role = Role(id=7, role_field='execute_role')
        user = User(username="******")
        serializer = JobTemplateSerializer(job_template)
        serializer.show_capabilities = ['copy', 'edit']
        serializer._summary_field_labels = lambda self: []
        serializer._recent_jobs = lambda self: []
        request = APIRequestFactory().get('/api/v2/job_templates/42/')
        request.user = user
        view = JobTemplateDetail()
        view.request = request
        view.kwargs = {}
        serializer.context['view'] = view

        with mocker.patch("awx.api.serializers.role_summary_fields_generator",
                          return_value='Can eat pie'):
            with mocker.patch("awx.main.access.JobTemplateAccess.can_change",
                              return_value='foobar'):
                with mocker.patch("awx.main.access.JobTemplateAccess.can_copy",
                                  return_value='foo'):
                    response = serializer.get_summary_fields(jt_obj)

        assert response['user_capabilities']['copy'] == 'foo'
        assert response['user_capabilities']['edit'] == 'foobar'
Ejemplo n.º 2
0
    JobTemplateSurveySpec,
    JobTemplateActivityStreamList,
    JobTemplateNotificationTemplatesErrorList,
    JobTemplateNotificationTemplatesStartedList,
    JobTemplateNotificationTemplatesSuccessList,
    JobTemplateInstanceGroupsList,
    JobTemplateAccessList,
    JobTemplateObjectRolesList,
    JobTemplateLabelList,
    JobTemplateCopy,
)

urls = [
    url(r'^$', JobTemplateList.as_view(), name='job_template_list'),
    url(r'^(?P<pk>[0-9]+)/$',
        JobTemplateDetail.as_view(),
        name='job_template_detail'),
    url(r'^(?P<pk>[0-9]+)/launch/$',
        JobTemplateLaunch.as_view(),
        name='job_template_launch'),
    url(r'^(?P<pk>[0-9]+)/jobs/$',
        JobTemplateJobsList.as_view(),
        name='job_template_jobs_list'),
    url(r'^(?P<pk>[0-9]+)/slice_workflow_jobs/$',
        JobTemplateSliceWorkflowJobsList.as_view(),
        name='job_template_slice_workflow_jobs_list'),
    url(r'^(?P<pk>[0-9]+)/callback/$',
        JobTemplateCallback.as_view(),
        name='job_template_callback'),
    url(r'^(?P<pk>[0-9]+)/schedules/$',
        JobTemplateSchedulesList.as_view(),
Ejemplo n.º 3
0
    JobTemplateSurveySpec,
    JobTemplateActivityStreamList,
    JobTemplateNotificationTemplatesAnyList,
    JobTemplateNotificationTemplatesErrorList,
    JobTemplateNotificationTemplatesSuccessList,
    JobTemplateInstanceGroupsList,
    JobTemplateAccessList,
    JobTemplateObjectRolesList,
    JobTemplateLabelList,
    JobTemplateCopy,
)


urls = [
    url(r'^$', JobTemplateList.as_view(), name='job_template_list'),
    url(r'^(?P<pk>[0-9]+)/$', JobTemplateDetail.as_view(), name='job_template_detail'),
    url(r'^(?P<pk>[0-9]+)/launch/$', JobTemplateLaunch.as_view(), name='job_template_launch'),
    url(r'^(?P<pk>[0-9]+)/jobs/$', JobTemplateJobsList.as_view(), name='job_template_jobs_list'),
    url(r'^(?P<pk>[0-9]+)/slice_workflow_jobs/$', JobTemplateSliceWorkflowJobsList.as_view(), name='job_template_slice_workflow_jobs_list'),
    url(r'^(?P<pk>[0-9]+)/callback/$', JobTemplateCallback.as_view(), name='job_template_callback'),
    url(r'^(?P<pk>[0-9]+)/schedules/$', JobTemplateSchedulesList.as_view(), name='job_template_schedules_list'),
    url(r'^(?P<pk>[0-9]+)/survey_spec/$', JobTemplateSurveySpec.as_view(), name='job_template_survey_spec'),
    url(r'^(?P<pk>[0-9]+)/activity_stream/$', JobTemplateActivityStreamList.as_view(), name='job_template_activity_stream_list'),
    url(r'^(?P<pk>[0-9]+)/notification_templates_any/$', JobTemplateNotificationTemplatesAnyList.as_view(),
        name='job_template_notification_templates_any_list'),
    url(r'^(?P<pk>[0-9]+)/notification_templates_error/$', JobTemplateNotificationTemplatesErrorList.as_view(),
        name='job_template_notification_templates_error_list'),
    url(r'^(?P<pk>[0-9]+)/notification_templates_success/$', JobTemplateNotificationTemplatesSuccessList.as_view(),
        name='job_template_notification_templates_success_list'),
    url(r'^(?P<pk>[0-9]+)/instance_groups/$', JobTemplateInstanceGroupsList.as_view(), name='job_template_instance_groups_list'),
    url(r'^(?P<pk>[0-9]+)/access_list/$', JobTemplateAccessList.as_view(), name='job_template_access_list'),