From fd468ac766703279108c8f5a97b9e257dfc2de7a Mon Sep 17 00:00:00 2001 From: AlanCoding Date: Mon, 16 Jul 2018 08:48:41 -0400 Subject: [PATCH] raise 400 instead of ignoring if fields mismatch v1/v2 --- awx/api/views.py | 8 ++++---- awx/main/tests/functional/api/test_job_template.py | 11 ++--------- 2 files changed, 6 insertions(+), 13 deletions(-) diff --git a/awx/api/views.py b/awx/api/views.py index 72793f7c3f..428f8b291a 100644 --- a/awx/api/views.py +++ b/awx/api/views.py @@ -3015,12 +3015,12 @@ class JobTemplateLaunch(RetrieveAPIView): if fd not in modern_data and id_fd in modern_data: modern_data[fd] = modern_data[id_fd] - # This block causes `extra_credentials` to _always_ be ignored for + # This block causes `extra_credentials` to _always_ raise error if # the launch endpoint if we're accessing `/api/v1/` if get_request_version(self.request) == 1 and 'extra_credentials' in modern_data: - extra_creds = modern_data.pop('extra_credentials', None) - if extra_creds is not None: - ignored_fields['extra_credentials'] = extra_creds + raise ParseError({"extra_credentials": _( + "Field is not allowed for use with v1 API." + )}) # Automatically convert legacy launch credential arguments into a list of `.credentials` if 'credentials' in modern_data and ( diff --git a/awx/main/tests/functional/api/test_job_template.py b/awx/main/tests/functional/api/test_job_template.py index 0d9d1c8985..f2e17cb2bc 100644 --- a/awx/main/tests/functional/api/test_job_template.py +++ b/awx/main/tests/functional/api/test_job_template.py @@ -567,16 +567,9 @@ def test_v1_launch_with_extra_credentials(get, post, organization_factory, credential=machine_credential.pk, extra_credentials=[credential.pk, net_credential.pk] ), - objs.superusers.admin, expect=201 + objs.superusers.admin, expect=400 ) - job_pk = resp.data.get('id') - assert resp.data.get('ignored_fields').keys() == ['extra_credentials'] - - resp = get(reverse('api:job_extra_credentials_list', kwargs={'pk': job_pk}), objs.superusers.admin) - assert resp.data.get('count') == 0 - - resp = get(reverse('api:job_template_extra_credentials_list', kwargs={'pk': jt.pk}), objs.superusers.admin) - assert resp.data.get('count') == 0 + assert 'Field is not allowed for use with v1 API' in resp.data.get('extra_credentials') @pytest.mark.django_db