Merge pull request #990 from anoek/devel

Updated API test fixtures
This commit is contained in:
Akita Noek
2016-02-18 13:37:04 -05:00
2 changed files with 110 additions and 20 deletions

View File

@@ -1,5 +1,8 @@
import pytest import pytest
from django.core.urlresolvers import resolve
from django.utils.six.moves.urllib.parse import urlparse
from awx.main.models.organization import Organization from awx.main.models.organization import Organization
from awx.main.models.ha import Instance from awx.main.models.ha import Instance
from django.contrib.auth.models import User from django.contrib.auth.models import User
@@ -21,13 +24,16 @@ def user():
@pytest.fixture @pytest.fixture
def post(): def post():
def rf(_cls, _user, _url, pk=None, kwargs={}, middleware=None): def rf(url, data, user=None, middleware=None, **kwargs):
view = _cls.as_view() view, view_args, view_kwargs = resolve(urlparse(url)[2])
request = APIRequestFactory().post(_url, kwargs, format='json') if 'format' not in kwargs:
kwargs['format'] = 'json'
request = APIRequestFactory().post(url, data, **kwargs)
if middleware: if middleware:
middleware.process_request(request) middleware.process_request(request)
force_authenticate(request, user=_user) if user:
response = view(request, pk=pk) force_authenticate(request, user=user)
response = view(request, *view_args, **view_kwargs)
if middleware: if middleware:
middleware.process_response(request, response) middleware.process_response(request, response)
return response return response
@@ -35,13 +41,101 @@ def post():
@pytest.fixture @pytest.fixture
def get(): def get():
def rf(_cls, _user, _url, pk=None, middleware=None): def rf(url, user=None, middleware=None, **kwargs):
view = _cls.as_view() view, view_args, view_kwargs = resolve(urlparse(url)[2])
request = APIRequestFactory().get(_url, format='json') if 'format' not in kwargs:
kwargs['format'] = 'json'
request = APIRequestFactory().get(url, **kwargs)
if middleware: if middleware:
middleware.process_request(request) middleware.process_request(request)
force_authenticate(request, user=_user) if user:
response = view(request, pk=pk) force_authenticate(request, user=user)
response = view(request, *view_args, **view_kwargs)
if middleware:
middleware.process_response(request, response)
return response
return rf
@pytest.fixture
def put():
def rf(url, data, user=None, middleware=None, **kwargs):
view, view_args, view_kwargs = resolve(urlparse(url)[2])
if 'format' not in kwargs:
kwargs['format'] = 'json'
request = APIRequestFactory().put(url, data, **kwargs)
if middleware:
middleware.process_request(request)
if user:
force_authenticate(request, user=user)
response = view(request, *view_args, **view_kwargs)
if middleware:
middleware.process_response(request, response)
return response
return rf
@pytest.fixture
def patch():
def rf(url, data, user=None, middleware=None, **kwargs):
view, view_args, view_kwargs = resolve(urlparse(url)[2])
if 'format' not in kwargs:
kwargs['format'] = 'json'
request = APIRequestFactory().patch(url, data, **kwargs)
if middleware:
middleware.process_request(request)
if user:
force_authenticate(request, user=user)
response = view(request, *view_args, **view_kwargs)
if middleware:
middleware.process_response(request, response)
return response
return rf
@pytest.fixture
def delete():
def rf(url, user=None, middleware=None, **kwargs):
view, view_args, view_kwargs = resolve(urlparse(url)[2])
if 'format' not in kwargs:
kwargs['format'] = 'json'
request = APIRequestFactory().delete(url, **kwargs)
if middleware:
middleware.process_request(request)
if user:
force_authenticate(request, user=user)
response = view(request, *view_args, **view_kwargs)
if middleware:
middleware.process_response(request, response)
return response
return rf
@pytest.fixture
def head():
def rf(url, user=None, middleware=None, **kwargs):
view, view_args, view_kwargs = resolve(urlparse(url)[2])
if 'format' not in kwargs:
kwargs['format'] = 'json'
request = APIRequestFactory().head(url, **kwargs)
if middleware:
middleware.process_request(request)
if user:
force_authenticate(request, user=user)
response = view(request, *view_args, **view_kwargs)
if middleware:
middleware.process_response(request, response)
return response
return rf
@pytest.fixture
def options():
def rf(url, data, user=None, middleware=None, **kwargs):
view, view_args, view_kwargs = resolve(urlparse(url)[2])
if 'format' not in kwargs:
kwargs['format'] = 'json'
request = APIRequestFactory().options(url, data, **kwargs)
if middleware:
middleware.process_request(request)
if user:
force_authenticate(request, user=user)
response = view(request, *view_args, **view_kwargs)
if middleware: if middleware:
middleware.process_response(request, response) middleware.process_response(request, response)
return response return response

View File

@@ -1,11 +1,6 @@
import mock import mock
import pytest import pytest
from awx.api.views import (
ActivityStreamList,
ActivityStreamDetail,
OrganizationList,
)
from awx.main.middleware import ActivityStreamMiddleware from awx.main.middleware import ActivityStreamMiddleware
from awx.main.models.activity_stream import ActivityStream from awx.main.models.activity_stream import ActivityStream
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
@@ -17,7 +12,7 @@ def mock_feature_enabled(feature, bypass_database=None):
@pytest.mark.django_db @pytest.mark.django_db
def test_get_activity_stream_list(monkeypatch, organization, get, user): def test_get_activity_stream_list(monkeypatch, organization, get, user):
url = reverse('api:activity_stream_list') url = reverse('api:activity_stream_list')
response = get(ActivityStreamList, user('admin', True), url) response = get(url, user('admin', True))
assert response.status_code == 200 assert response.status_code == 200
@@ -31,7 +26,7 @@ def test_basic_fields(monkeypatch, organization, get, user):
aspk = activity_stream.pk aspk = activity_stream.pk
url = reverse('api:activity_stream_detail', args=(aspk,)) url = reverse('api:activity_stream_detail', args=(aspk,))
response = get(ActivityStreamDetail, user('admin', True), url, pk=aspk) response = get(url, user('admin', True))
assert response.status_code == 200 assert response.status_code == 200
assert 'related' in response.data assert 'related' in response.data
@@ -46,8 +41,9 @@ def test_middleware_actor_added(monkeypatch, post, get, user):
u = user('admin-poster', True) u = user('admin-poster', True)
url = reverse('api:organization_list') url = reverse('api:organization_list')
response = post(OrganizationList, u, url, response = post(url,
kwargs=dict(name='test-org', description='test-desc'), dict(name='test-org', description='test-desc'),
u,
middleware=ActivityStreamMiddleware()) middleware=ActivityStreamMiddleware())
assert response.status_code == 201 assert response.status_code == 201
@@ -55,7 +51,7 @@ def test_middleware_actor_added(monkeypatch, post, get, user):
activity_stream = ActivityStream.objects.filter(organization__pk=org_id).first() activity_stream = ActivityStream.objects.filter(organization__pk=org_id).first()
url = reverse('api:activity_stream_detail', args=(activity_stream.pk,)) url = reverse('api:activity_stream_detail', args=(activity_stream.pk,))
response = get(ActivityStreamDetail, u, url, pk=activity_stream.pk) response = get(url, u)
assert response.status_code == 200 assert response.status_code == 200
assert response.data['summary_fields']['actor']['username'] == 'admin-poster' assert response.data['summary_fields']['actor']['username'] == 'admin-poster'