mirror of
https://github.com/ansible/awx.git
synced 2026-03-16 08:27:29 -02:30
55 lines
1.6 KiB
Python
55 lines
1.6 KiB
Python
import pytest
|
|
import mock
|
|
|
|
# Django REST Framework
|
|
from rest_framework import exceptions
|
|
|
|
# AWX
|
|
from awx.main.views import ApiErrorView
|
|
from awx.api.views import JobList, InventorySourceList
|
|
|
|
|
|
HTTP_METHOD_NAMES = [
|
|
'get',
|
|
'post',
|
|
'put',
|
|
'patch',
|
|
'delete',
|
|
'head',
|
|
'options',
|
|
'trace',
|
|
]
|
|
|
|
|
|
@pytest.fixture
|
|
def api_view_obj_fixture():
|
|
return ApiErrorView()
|
|
|
|
|
|
@pytest.mark.parametrize('method_name', HTTP_METHOD_NAMES)
|
|
def test_exception_view_allow_http_methods(method_name):
|
|
assert hasattr(ApiErrorView, method_name)
|
|
|
|
|
|
@pytest.mark.parametrize('method_name', HTTP_METHOD_NAMES)
|
|
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
|
|
|
|
|
|
@pytest.mark.parametrize('version, supports_post', [(1, False), (2, True)])
|
|
def test_disable_post_on_v1_inventory_source_list(version, supports_post):
|
|
inv_source_list = InventorySourceList()
|
|
inv_source_list.request = mock.MagicMock()
|
|
with mock.patch('awx.api.views.get_request_version', return_value=version):
|
|
assert ('POST' in inv_source_list.allowed_methods) == supports_post
|