mirror of
https://github.com/ansible/awx.git
synced 2026-03-05 10:41:05 -03:30
Switch to resolve in api test fixtures to automatically resolve View's and their arguments
Also changed the signature of the post/get methods to better align with libraries like `requests`
This commit is contained in:
@@ -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,16 @@ 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:
|
if middleware:
|
||||||
middleware.process_response(request, response)
|
middleware.process_response(request, response)
|
||||||
return response
|
return response
|
||||||
|
|||||||
@@ -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'
|
||||||
|
|||||||
Reference in New Issue
Block a user