From 74beca5b7468792f01598073e7598e80063ec79a Mon Sep 17 00:00:00 2001 From: AlanCoding Date: Tue, 31 May 2016 11:40:30 -0400 Subject: [PATCH] cleanup of Job Template tests and fixtures --- .../tests/functional/api/test_job_template.py | 42 +++++++------------ .../functional/api/test_job_templates.py | 4 +- ...templates.py => test_job_template_unit.py} | 6 --- 3 files changed, 16 insertions(+), 36 deletions(-) rename awx/main/tests/unit/models/{test_job_templates.py => test_job_template_unit.py} (93%) diff --git a/awx/main/tests/functional/api/test_job_template.py b/awx/main/tests/functional/api/test_job_template.py index 6559a32269..1b971fe0d4 100644 --- a/awx/main/tests/functional/api/test_job_template.py +++ b/awx/main/tests/functional/api/test_job_template.py @@ -4,6 +4,7 @@ import mock # AWX from awx.api.serializers import JobTemplateSerializer from awx.main.models.jobs import JobTemplate +from awx.main.models.projects import ProjectOptions # Django from django.test.client import RequestFactory @@ -11,16 +12,15 @@ from django.core.urlresolvers import reverse @pytest.fixture -def jt_copy_edit(project): - return JobTemplate.objects.create( - job_type='run', - project=project, - playbook='hello_world.yml', - ask_inventory_on_launch=True, - ask_credential_on_launch=True, - name='copy-edit-job-template' - ) +def jt_copy_edit(job_template_factory, project): + objects = job_template_factory( + 'copy-edit-job-template', + project=project) + return objects.job_template +@property +def project_playbooks(self): + return ['mocked', 'mocked.yml', 'alt-mocked.yml'] @pytest.mark.django_db def test_job_template_role_user(post, organization_factory, job_template_factory): @@ -149,25 +149,20 @@ def test_proj_jt_admin_copy_edit(jt_copy_edit, rando): # Functional tests - create new JT with all returned fields, as the UI does @pytest.mark.django_db +@mock.patch.object(ProjectOptions, "playbooks", project_playbooks) def test_org_admin_copy_edit_functional(jt_copy_edit, org_admin, get, post): get_response = get(reverse('api:job_template_detail', args=[jt_copy_edit.pk]), user=org_admin) - - post_data = get_response.data - post_data['name'] = '%s @ 12:19:47 pm' % post_data['name'] - assert get_response.status_code == 200 assert get_response.data['summary_fields']['can_copy'] - with mock.patch( - 'awx.main.models.projects.ProjectOptions.playbooks', - new_callable=mock.PropertyMock(return_value=['hello_world.yml'])): - post_response = post(reverse('api:job_template_list', args=[]), user=org_admin, data=post_data) - - print '\n post_response: ' + str(post_response.data) + post_data = get_response.data + post_data['name'] = '%s @ 12:19:47 pm' % post_data['name'] + post_response = post(reverse('api:job_template_list', args=[]), user=org_admin, data=post_data) assert post_response.status_code == 201 assert post_response.data['name'] == 'copy-edit-job-template @ 12:19:47 pm' @pytest.mark.django_db +@mock.patch.object(ProjectOptions, "playbooks", project_playbooks) def test_jt_admin_copy_edit_functional(jt_copy_edit, rando, get, post): # Grant random user JT admin access only @@ -175,17 +170,10 @@ def test_jt_admin_copy_edit_functional(jt_copy_edit, rando, get, post): jt_copy_edit.save() get_response = get(reverse('api:job_template_detail', args=[jt_copy_edit.pk]), user=rando) - assert get_response.status_code == 200 assert not get_response.data['summary_fields']['can_copy'] post_data = get_response.data post_data['name'] = '%s @ 12:19:47 pm' % post_data['name'] - - with mock.patch( - 'awx.main.models.projects.ProjectOptions.playbooks', - new_callable=mock.PropertyMock(return_value=['hello_world.yml'])): - post_response = post(reverse('api:job_template_list', args=[]), user=rando, data=post_data) - - print '\n post_response: ' + str(post_response.data) + post_response = post(reverse('api:job_template_list', args=[]), user=rando, data=post_data) assert post_response.status_code == 403 diff --git a/awx/main/tests/functional/api/test_job_templates.py b/awx/main/tests/functional/api/test_job_templates.py index 7f20a099ca..3c582ca2eb 100644 --- a/awx/main/tests/functional/api/test_job_templates.py +++ b/awx/main/tests/functional/api/test_job_templates.py @@ -7,7 +7,7 @@ from django.core.urlresolvers import reverse @property def project_playbooks(self): - return ['mocked.yml', 'alt-mocked.yml'] + return ['mocked', 'mocked.yml', 'alt-mocked.yml'] @pytest.mark.django_db @mock.patch.object(ProjectOptions, "playbooks", project_playbooks) @@ -87,8 +87,6 @@ def test_edit_playbook(patch, job_template_factory, alice): def test_edit_nonsenstive(patch, job_template_factory, alice): objs = job_template_factory('jt', organization='org1', project='prj', inventory='inv', credential='cred') jt = objs.job_template - jt.playbook = 'mocked.yml' - jt.save() jt.admin_role.members.add(alice) res = patch(reverse('api:job_template_detail', args=(jt.id,)), { diff --git a/awx/main/tests/unit/models/test_job_templates.py b/awx/main/tests/unit/models/test_job_template_unit.py similarity index 93% rename from awx/main/tests/unit/models/test_job_templates.py rename to awx/main/tests/unit/models/test_job_template_unit.py index 583373099f..df45c753b6 100644 --- a/awx/main/tests/unit/models/test_job_templates.py +++ b/awx/main/tests/unit/models/test_job_template_unit.py @@ -1,9 +1,6 @@ -import pytest - from awx.main.tests.factories import create_job_template -@pytest.mark.django_db def test_missing_project_error(): objects = create_job_template( 'missing-project-jt', @@ -16,7 +13,6 @@ def test_missing_project_error(): validation_errors, resources_needed_to_start = obj.resource_validation_data() assert 'project' in validation_errors -@pytest.mark.django_db def test_inventory_credential_need_to_start(): objects = create_job_template( 'job-template-few-resources', @@ -26,7 +22,6 @@ def test_inventory_credential_need_to_start(): assert 'inventory' in obj.resources_needed_to_start assert 'credential' in obj.resources_needed_to_start -@pytest.mark.django_db def test_inventory_credential_contradictions(): objects = create_job_template( 'job-template-paradox', @@ -38,4 +33,3 @@ def test_inventory_credential_contradictions(): validation_errors, resources_needed_to_start = obj.resource_validation_data() assert 'inventory' in validation_errors assert 'credential' in validation_errors -