From 112d271ccb065b91a5a39444c9f8f242101f7d22 Mon Sep 17 00:00:00 2001 From: Wayne Witzel III Date: Tue, 7 Jun 2016 10:13:51 -0400 Subject: [PATCH] combining job_template api tests --- .../tests/functional/api/test_job_template.py | 102 ++++++++++++++++ .../functional/api/test_job_templates.py | 109 ------------------ 2 files changed, 102 insertions(+), 109 deletions(-) delete mode 100644 awx/main/tests/functional/api/test_job_templates.py diff --git a/awx/main/tests/functional/api/test_job_template.py b/awx/main/tests/functional/api/test_job_template.py index 2812237606..64f0ad2197 100644 --- a/awx/main/tests/functional/api/test_job_template.py +++ b/awx/main/tests/functional/api/test_job_template.py @@ -10,6 +10,108 @@ from awx.main.models.projects import ProjectOptions from django.test.client import RequestFactory from django.core.urlresolvers import reverse +@property +def project_playbooks(self): + return ['mocked', 'mocked.yml', 'alt-mocked.yml'] + +@pytest.mark.django_db +@mock.patch.object(ProjectOptions, "playbooks", project_playbooks) +@pytest.mark.parametrize( + "grant_project, grant_credential, grant_inventory, expect", [ + (True, True, True, 201), + (True, True, False, 403), + (True, False, True, 403), + (False, True, True, 403), + ] +) +def test_create(post, project, machine_credential, inventory, alice, grant_project, grant_credential, grant_inventory, expect): + if grant_project: + project.use_role.members.add(alice) + if grant_credential: + machine_credential.use_role.members.add(alice) + if grant_inventory: + inventory.use_role.members.add(alice) + + post(reverse('api:job_template_list'), { + 'name': 'Some name', + 'project': project.id, + 'credential': machine_credential.id, + 'inventory': inventory.id, + 'playbook': 'mocked.yml', + }, alice, expect=expect) + +@pytest.mark.django_db +@mock.patch.object(ProjectOptions, "playbooks", project_playbooks) +@pytest.mark.parametrize( + "grant_project, grant_credential, grant_inventory, expect", [ + (True, True, True, 200), + (True, True, False, 403), + (True, False, True, 403), + (False, True, True, 403), + ] +) +def test_edit_sensitive_fields(patch, job_template_factory, alice, grant_project, grant_credential, grant_inventory, expect): + objs = job_template_factory('jt', organization='org1', project='prj', inventory='inv', credential='cred') + objs.job_template.admin_role.members.add(alice) + + if grant_project: + objs.project.use_role.members.add(alice) + if grant_credential: + objs.credential.use_role.members.add(alice) + if grant_inventory: + objs.inventory.use_role.members.add(alice) + + patch(reverse('api:job_template_detail', args=(objs.job_template.id,)), { + 'name': 'Some name', + 'project': objs.project.id, + 'credential': objs.credential.id, + 'inventory': objs.inventory.id, + 'playbook': 'alt-mocked.yml', + }, alice, expect=expect) + +@pytest.mark.django_db +@mock.patch.object(ProjectOptions, "playbooks", project_playbooks) +def test_edit_playbook(patch, job_template_factory, alice): + objs = job_template_factory('jt', organization='org1', project='prj', inventory='inv', credential='cred') + objs.job_template.admin_role.members.add(alice) + objs.project.use_role.members.add(alice) + objs.credential.use_role.members.add(alice) + objs.inventory.use_role.members.add(alice) + + patch(reverse('api:job_template_detail', args=(objs.job_template.id,)), { + 'playbook': 'alt-mocked.yml', + }, alice, expect=200) + + objs.inventory.use_role.members.remove(alice) + patch(reverse('api:job_template_detail', args=(objs.job_template.id,)), { + 'playbook': 'mocked.yml', + }, alice, expect=403) + +@pytest.mark.django_db +@mock.patch.object(ProjectOptions, "playbooks", project_playbooks) +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.admin_role.members.add(alice) + + res = patch(reverse('api:job_template_detail', args=(jt.id,)), { + 'name': 'updated', + 'description': 'bar', + 'forks': 14, + 'limit': 'something', + 'verbosity': 5, + 'extra_vars': '--', + 'job_tags': 'sometags', + 'force_handlers': True, + 'skip_tags': True, + 'ask_variables_on_launch':True, + 'ask_tags_on_launch':True, + 'ask_job_type_on_launch':True, + 'ask_inventory_on_launch':True, + 'ask_credential_on_launch': True, + }, alice, expect=200) + print(res.data) + assert res.data['name'] == 'updated' @pytest.fixture def jt_copy_edit(job_template_factory, project): objects = job_template_factory( diff --git a/awx/main/tests/functional/api/test_job_templates.py b/awx/main/tests/functional/api/test_job_templates.py deleted file mode 100644 index 3c582ca2eb..0000000000 --- a/awx/main/tests/functional/api/test_job_templates.py +++ /dev/null @@ -1,109 +0,0 @@ -import mock # noqa -import pytest -from awx.main.models.projects import ProjectOptions - - -from django.core.urlresolvers import reverse - -@property -def project_playbooks(self): - return ['mocked', 'mocked.yml', 'alt-mocked.yml'] - -@pytest.mark.django_db -@mock.patch.object(ProjectOptions, "playbooks", project_playbooks) -@pytest.mark.parametrize( - "grant_project, grant_credential, grant_inventory, expect", [ - (True, True, True, 201), - (True, True, False, 403), - (True, False, True, 403), - (False, True, True, 403), - ] -) -def test_create(post, project, machine_credential, inventory, alice, grant_project, grant_credential, grant_inventory, expect): - if grant_project: - project.use_role.members.add(alice) - if grant_credential: - machine_credential.use_role.members.add(alice) - if grant_inventory: - inventory.use_role.members.add(alice) - - post(reverse('api:job_template_list'), { - 'name': 'Some name', - 'project': project.id, - 'credential': machine_credential.id, - 'inventory': inventory.id, - 'playbook': 'mocked.yml', - }, alice, expect=expect) - -@pytest.mark.django_db -@mock.patch.object(ProjectOptions, "playbooks", project_playbooks) -@pytest.mark.parametrize( - "grant_project, grant_credential, grant_inventory, expect", [ - (True, True, True, 200), - (True, True, False, 403), - (True, False, True, 403), - (False, True, True, 403), - ] -) -def test_edit_sensitive_fields(patch, job_template_factory, alice, grant_project, grant_credential, grant_inventory, expect): - objs = job_template_factory('jt', organization='org1', project='prj', inventory='inv', credential='cred') - objs.job_template.admin_role.members.add(alice) - - if grant_project: - objs.project.use_role.members.add(alice) - if grant_credential: - objs.credential.use_role.members.add(alice) - if grant_inventory: - objs.inventory.use_role.members.add(alice) - - patch(reverse('api:job_template_detail', args=(objs.job_template.id,)), { - 'name': 'Some name', - 'project': objs.project.id, - 'credential': objs.credential.id, - 'inventory': objs.inventory.id, - 'playbook': 'alt-mocked.yml', - }, alice, expect=expect) - -@pytest.mark.django_db -@mock.patch.object(ProjectOptions, "playbooks", project_playbooks) -def test_edit_playbook(patch, job_template_factory, alice): - objs = job_template_factory('jt', organization='org1', project='prj', inventory='inv', credential='cred') - objs.job_template.admin_role.members.add(alice) - objs.project.use_role.members.add(alice) - objs.credential.use_role.members.add(alice) - objs.inventory.use_role.members.add(alice) - - patch(reverse('api:job_template_detail', args=(objs.job_template.id,)), { - 'playbook': 'alt-mocked.yml', - }, alice, expect=200) - - objs.inventory.use_role.members.remove(alice) - patch(reverse('api:job_template_detail', args=(objs.job_template.id,)), { - 'playbook': 'mocked.yml', - }, alice, expect=403) - -@pytest.mark.django_db -@mock.patch.object(ProjectOptions, "playbooks", project_playbooks) -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.admin_role.members.add(alice) - - res = patch(reverse('api:job_template_detail', args=(jt.id,)), { - 'name': 'updated', - 'description': 'bar', - 'forks': 14, - 'limit': 'something', - 'verbosity': 5, - 'extra_vars': '--', - 'job_tags': 'sometags', - 'force_handlers': True, - 'skip_tags': True, - 'ask_variables_on_launch':True, - 'ask_tags_on_launch':True, - 'ask_job_type_on_launch':True, - 'ask_inventory_on_launch':True, - 'ask_credential_on_launch': True, - }, alice, expect=200) - print(res.data) - assert res.data['name'] == 'updated'