From 8983351e99ea62e3ac151a525221b45829892765 Mon Sep 17 00:00:00 2001 From: Jim Ladd Date: Mon, 24 Jul 2017 14:24:38 -0400 Subject: [PATCH] Deprecate post to v2 jobs (#18) --- awx/api/views.py | 7 +++++++ awx/main/tests/unit/test_views.py | 9 +++++++++ 2 files changed, 16 insertions(+) diff --git a/awx/api/views.py b/awx/api/views.py index 8b82aba242..0297c649d2 100644 --- a/awx/api/views.py +++ b/awx/api/views.py @@ -3719,6 +3719,13 @@ class JobList(ListCreateAPIView): metadata_class = JobTypeMetadata serializer_class = JobListSerializer + @property + def allowed_methods(self): + methods = super(JobList, self).allowed_methods + if get_request_version(self.request) > 1: + methods.remove('POST') + return methods + class JobDetail(RetrieveUpdateDestroyAPIView): diff --git a/awx/main/tests/unit/test_views.py b/awx/main/tests/unit/test_views.py index 2204635eb6..dd7f63bb3a 100644 --- a/awx/main/tests/unit/test_views.py +++ b/awx/main/tests/unit/test_views.py @@ -6,6 +6,7 @@ from rest_framework import exceptions # AWX from awx.main.views import ApiErrorView +from awx.api.views import JobList HTTP_METHOD_NAMES = [ @@ -35,3 +36,11 @@ def test_exception_view_raises_exception(api_view_obj_fixture, method_name): request_mock = mock.MagicMock() with pytest.raises(exceptions.APIException): getattr(api_view_obj_fixture, method_name)(request_mock) + + +@pytest.mark.parametrize('version, supports_post', [(1, True), (2, False)]) +def test_disable_post_on_v2_jobs_list(version, supports_post): + job_list = JobList() + job_list.request = mock.MagicMock() + with mock.patch('awx.api.views.get_request_version', return_value=version): + assert ('POST' in job_list.allowed_methods) == supports_post