mirror of
https://github.com/ansible/awx.git
synced 2026-01-11 10:00:01 -03:30
test updates
* when tests create a UnifiedJob and JobEvent, the two need to have the same value for job creation time * some view validation was skipped due to `model` being a property in some cases now
This commit is contained in:
parent
5c1a33382c
commit
81db8091ea
@ -3,6 +3,7 @@
|
||||
import base64
|
||||
import json
|
||||
import re
|
||||
from datetime import datetime
|
||||
|
||||
from django.conf import settings
|
||||
from django.utils.encoding import smart_str
|
||||
@ -26,14 +27,20 @@ from awx.main.models import (
|
||||
)
|
||||
|
||||
|
||||
def _mk_project_update():
|
||||
project = Project()
|
||||
def _mk_project_update(created=None):
|
||||
kwargs = {}
|
||||
if created:
|
||||
kwargs['created'] = created
|
||||
project = Project(**kwargs)
|
||||
project.save()
|
||||
return ProjectUpdate(project=project)
|
||||
|
||||
|
||||
def _mk_inventory_update():
|
||||
source = InventorySource(source='ec2')
|
||||
def _mk_inventory_update(created=None):
|
||||
kwargs = {}
|
||||
if created:
|
||||
kwargs['created'] = created
|
||||
source = InventorySource(source='ec2', **kwargs)
|
||||
source.save()
|
||||
iu = InventoryUpdate(inventory_source=source, source='e2')
|
||||
return iu
|
||||
@ -139,10 +146,11 @@ def test_stdout_line_range(sqlite_copy_expert, Parent, Child, relation, view, ge
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_text_stdout_from_system_job_events(sqlite_copy_expert, get, admin):
|
||||
job = SystemJob()
|
||||
created = datetime.utcnow()
|
||||
job = SystemJob(created=created)
|
||||
job.save()
|
||||
for i in range(3):
|
||||
SystemJobEvent(system_job=job, stdout='Testing {}\n'.format(i), start_line=i).save()
|
||||
SystemJobEvent(system_job=job, stdout='Testing {}\n'.format(i), start_line=i, job_created=created).save()
|
||||
url = reverse('api:system_job_detail', kwargs={'pk': job.pk})
|
||||
response = get(url, user=admin, expect=200)
|
||||
assert smart_str(response.data['result_stdout']).splitlines() == ['Testing %d' % i for i in range(3)]
|
||||
@ -150,11 +158,12 @@ def test_text_stdout_from_system_job_events(sqlite_copy_expert, get, admin):
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_text_stdout_with_max_stdout(sqlite_copy_expert, get, admin):
|
||||
job = SystemJob()
|
||||
created = datetime.utcnow()
|
||||
job = SystemJob(created=created)
|
||||
job.save()
|
||||
total_bytes = settings.STDOUT_MAX_BYTES_DISPLAY + 1
|
||||
large_stdout = 'X' * total_bytes
|
||||
SystemJobEvent(system_job=job, stdout=large_stdout, start_line=0).save()
|
||||
SystemJobEvent(system_job=job, stdout=large_stdout, start_line=0, job_created=created).save()
|
||||
url = reverse('api:system_job_detail', kwargs={'pk': job.pk})
|
||||
response = get(url, user=admin, expect=200)
|
||||
assert response.data['result_stdout'] == (
|
||||
@ -176,11 +185,12 @@ def test_text_stdout_with_max_stdout(sqlite_copy_expert, get, admin):
|
||||
@pytest.mark.parametrize('fmt', ['txt', 'ansi'])
|
||||
@mock.patch('awx.main.redact.UriCleaner.SENSITIVE_URI_PATTERN', mock.Mock(**{'search.return_value': None})) # really slow for large strings
|
||||
def test_max_bytes_display(sqlite_copy_expert, Parent, Child, relation, view, fmt, get, admin):
|
||||
job = Parent()
|
||||
created = datetime.utcnow()
|
||||
job = Parent(created=created)
|
||||
job.save()
|
||||
total_bytes = settings.STDOUT_MAX_BYTES_DISPLAY + 1
|
||||
large_stdout = 'X' * total_bytes
|
||||
Child(**{relation: job, 'stdout': large_stdout, 'start_line': 0}).save()
|
||||
Child(**{relation: job, 'stdout': large_stdout, 'start_line': 0, 'job_created': created}).save()
|
||||
url = reverse(view, kwargs={'pk': job.pk})
|
||||
|
||||
response = get(url + '?format={}'.format(fmt), user=admin, expect=200)
|
||||
@ -257,10 +267,11 @@ def test_text_with_unicode_stdout(sqlite_copy_expert, Parent, Child, relation, v
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_unicode_with_base64_ansi(sqlite_copy_expert, get, admin):
|
||||
job = Job()
|
||||
created = datetime.utcnow()
|
||||
job = Job(created=created)
|
||||
job.save()
|
||||
for i in range(3):
|
||||
JobEvent(job=job, stdout='オ{}\n'.format(i), start_line=i).save()
|
||||
JobEvent(job=job, stdout='オ{}\n'.format(i), start_line=i, job_created=created).save()
|
||||
url = reverse('api:job_stdout', kwargs={'pk': job.pk}) + '?format=json&content_encoding=base64'
|
||||
|
||||
response = get(url, user=admin, expect=200)
|
||||
|
||||
@ -55,6 +55,8 @@ def test_list_views_use_list_serializers(all_views):
|
||||
"""
|
||||
list_serializers = tuple(getattr(serializers, '{}ListSerializer'.format(cls.__name__)) for cls in (UnifiedJob.__subclasses__() + [UnifiedJob]))
|
||||
for View in all_views:
|
||||
if type(View.model) is property:
|
||||
continue # special case for JobEventChildrenList
|
||||
if hasattr(View, 'model') and issubclass(getattr(View, 'model'), UnifiedJob):
|
||||
if issubclass(View, ListAPIView):
|
||||
assert issubclass(View.serializer_class, list_serializers), 'View {} serializer {} is not a list serializer'.format(View, View.serializer_class)
|
||||
|
||||
@ -73,6 +73,8 @@ def test_global_creation_always_possible(all_views):
|
||||
views_by_model = {}
|
||||
for View in all_views:
|
||||
if not getattr(View, 'deprecated', False) and issubclass(View, ListAPIView) and hasattr(View, 'model'):
|
||||
if type(View.model) is property:
|
||||
continue # special case for JobEventChildrenList
|
||||
views_by_model.setdefault(View.model, []).append(View)
|
||||
for model, views in views_by_model.items():
|
||||
creatable = False
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user