mirror of
https://github.com/ZwareBear/awx.git
synced 2026-03-26 18:53:35 -05:00
Revert the --force flags use the update id as metric for role caching Shift the movement of cache to job folder from rsync task to python Only install roles and collections if needed Deal with roles and collections for jobs without sync Skip local copy if roles or collections turned off update docs for content caching Design pivot - use empty cache dir to indicate lack of content Do not cache content if we did not install content Test changes to allay concerns about reliability of local_path Do not blow away cache for SCM inventory updates
102 lines
3.6 KiB
Python
102 lines
3.6 KiB
Python
import os
|
|
|
|
from backports.tempfile import TemporaryDirectory
|
|
from django.conf import settings
|
|
import pytest
|
|
|
|
from awx.api.versioning import reverse
|
|
from awx.main.models import Project, JobTemplate
|
|
|
|
|
|
@pytest.mark.django_db
|
|
class TestInsightsCredential:
|
|
def test_insights_credential(self, patch, insights_project, admin_user, insights_credential):
|
|
patch(insights_project.get_absolute_url(),
|
|
{'credential': insights_credential.id}, admin_user,
|
|
expect=200)
|
|
|
|
def test_non_insights_credential(self, patch, insights_project, admin_user, scm_credential):
|
|
patch(insights_project.get_absolute_url(),
|
|
{'credential': scm_credential.id}, admin_user,
|
|
expect=400)
|
|
|
|
|
|
@pytest.mark.django_db
|
|
def test_project_custom_virtualenv(get, patch, project, admin):
|
|
with TemporaryDirectory(dir=settings.BASE_VENV_PATH) as temp_dir:
|
|
os.makedirs(os.path.join(temp_dir, 'bin', 'activate'))
|
|
url = reverse('api:project_detail', kwargs={'pk': project.id})
|
|
patch(url, {'custom_virtualenv': temp_dir}, user=admin, expect=200)
|
|
assert get(url, user=admin).data['custom_virtualenv'] == os.path.join(temp_dir, '')
|
|
|
|
|
|
@pytest.mark.django_db
|
|
def test_project_invalid_custom_virtualenv(get, patch, project, admin):
|
|
url = reverse('api:project_detail', kwargs={'pk': project.id})
|
|
resp = patch(url, {'custom_virtualenv': '/foo/bar'}, user=admin, expect=400)
|
|
assert resp.data['custom_virtualenv'] == [
|
|
'/foo/bar is not a valid virtualenv in {}'.format(settings.BASE_VENV_PATH)
|
|
]
|
|
|
|
|
|
@pytest.mark.django_db
|
|
@pytest.mark.parametrize('value', ["", None])
|
|
def test_project_unset_custom_virtualenv(get, patch, project, admin, value):
|
|
url = reverse('api:project_detail', kwargs={'pk': project.id})
|
|
resp = patch(url, {'custom_virtualenv': value}, user=admin, expect=200)
|
|
assert resp.data['custom_virtualenv'] is None
|
|
|
|
|
|
@pytest.mark.django_db
|
|
def test_no_changing_overwrite_behavior_if_used(post, patch, organization, admin_user):
|
|
r1 = post(
|
|
url=reverse('api:project_list'),
|
|
data={
|
|
'name': 'fooo',
|
|
'organization': organization.id,
|
|
'allow_override': True,
|
|
'scm_type': 'git',
|
|
'scm_url': 'https://github.com/ansible/test-playbooks.git'
|
|
},
|
|
user=admin_user,
|
|
expect=201
|
|
)
|
|
jt = JobTemplate.objects.create(
|
|
name='provides branch', project_id=r1.data['id'],
|
|
playbook='helloworld.yml',
|
|
scm_branch='foobar'
|
|
)
|
|
r2 = patch(
|
|
url=reverse('api:project_detail', kwargs={'pk': r1.data['id']}),
|
|
data={'allow_override': False},
|
|
user=admin_user,
|
|
expect=400
|
|
)
|
|
p = Project.objects.get(pk=r1.data['id'])
|
|
assert 'job templates depend on branch override behavior for this project' in str(r2.data['allow_override'])
|
|
assert 'ids: {}'.format(jt.id) in str(r2.data['allow_override'])
|
|
assert p.allow_override is True
|
|
|
|
|
|
@pytest.mark.django_db
|
|
def test_changing_overwrite_behavior_okay_if_not_used(post, patch, organization, admin_user):
|
|
r1 = post(
|
|
url=reverse('api:project_list'),
|
|
data={
|
|
'name': 'fooo',
|
|
'organization': organization.id,
|
|
'allow_override': True,
|
|
'scm_type': 'git',
|
|
'scm_url': 'https://github.com/ansible/test-playbooks.git'
|
|
},
|
|
user=admin_user,
|
|
expect=201
|
|
)
|
|
patch(
|
|
url=reverse('api:project_detail', kwargs={'pk': r1.data['id']}),
|
|
data={'allow_override': False},
|
|
user=admin_user,
|
|
expect=200
|
|
)
|
|
assert Project.objects.get(pk=r1.data['id']).allow_override is False
|