Merge pull request #5194 from AlanCoding/inventory_organization

Add organization parameter to tower_inventory_source (and add test logging)

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
This commit is contained in:
softwarefactory-project-zuul[bot]
2019-11-20 18:23:27 +00:00
committed by GitHub
3 changed files with 102 additions and 5 deletions

View File

@@ -7,6 +7,7 @@ import datetime
import importlib
from contextlib import redirect_stdout
from unittest import mock
import logging
from requests.models import Response
@@ -16,6 +17,9 @@ from awx.main.tests.functional.conftest import _request
from awx.main.models import Organization, Project, Inventory, Credential, CredentialType
logger = logging.getLogger('awx.main.tests')
def sanitize_dict(din):
'''Sanitize Django response data to purge it of internal types
so it may be used to cast a requests response object
@@ -37,13 +41,22 @@ def sanitize_dict(din):
@pytest.fixture
def run_module():
def run_module(request):
def rf(module_name, module_params, request_user):
def new_request(self, method, url, **kwargs):
kwargs_copy = kwargs.copy()
if 'data' in kwargs:
kwargs_copy['data'] = json.loads(kwargs['data'])
if 'params' in kwargs and method == 'GET':
# query params for GET are handled a bit differently by
# tower-cli and python requests as opposed to REST framework APIRequestFactory
kwargs_copy.setdefault('data', {})
if isinstance(kwargs['params'], dict):
kwargs_copy['data'].update(kwargs['params'])
elif isinstance(kwargs['params'], list):
for k, v in kwargs['params']:
kwargs_copy['data'][k] = v
# make request
rf = _request(method.lower())
@@ -56,6 +69,13 @@ def run_module():
sanitize_dict(py_data)
resp._content = bytes(json.dumps(django_response.data), encoding='utf8')
resp.status_code = django_response.status_code
if request.config.getoption('verbose') > 0:
logger.info('{} {} by {}, code:{}'.format(
method, '/api/' + url.split('/api/')[1],
request_user.username, resp.status_code
))
return resp
stdout_buffer = io.StringIO()