77 lines
2.3 KiB
Python
77 lines
2.3 KiB
Python
from __future__ import (absolute_import, division, print_function)
|
|
__metaclass__ = type
|
|
|
|
import pytest
|
|
import json
|
|
|
|
from awx.main.models import (
|
|
Organization,
|
|
Project,
|
|
Inventory,
|
|
Host,
|
|
CredentialType,
|
|
Credential,
|
|
JobTemplate
|
|
)
|
|
|
|
|
|
# warns based on password_management param, but not security issue
|
|
@pytest.mark.django_db
|
|
def test_receive_send_jt(run_module, admin_user, mocker, silence_deprecation):
|
|
org = Organization.objects.create(name='SRtest')
|
|
proj = Project.objects.create(
|
|
name='SRtest',
|
|
playbook_files=['debug.yml'],
|
|
scm_type='git',
|
|
scm_url='https://github.com/ansible/test-playbooks.git',
|
|
organization=org,
|
|
allow_override=True # so we do not require playbooks populated
|
|
)
|
|
inv = Inventory.objects.create(name='SRtest', organization=org)
|
|
Host.objects.create(name='SRtest', inventory=inv)
|
|
ct = CredentialType.defaults['ssh']()
|
|
ct.save()
|
|
cred = Credential.objects.create(
|
|
name='SRtest',
|
|
credential_type=ct,
|
|
organization=org
|
|
)
|
|
jt = JobTemplate.objects.create(
|
|
name='SRtest',
|
|
project=proj,
|
|
inventory=inv,
|
|
playbook='helloworld.yml'
|
|
)
|
|
jt.credentials.add(cred)
|
|
jt.admin_role.members.add(admin_user) # work around send/receive bug
|
|
|
|
# receive everything
|
|
result = run_module('tower_receive', dict(all=True), admin_user)
|
|
|
|
assert 'assets' in result, result
|
|
assets = result['assets']
|
|
assert not result.get('changed', True)
|
|
assert set(a['asset_type'] for a in assets) == set((
|
|
'organization', 'inventory', 'job_template', 'credential', 'project',
|
|
'user'
|
|
))
|
|
|
|
# delete everything
|
|
for obj in (jt, inv, proj, cred, org):
|
|
obj.delete()
|
|
|
|
def fake_wait(self, pk, parent_pk=None, **kwargs):
|
|
return {"changed": True}
|
|
|
|
# recreate everything
|
|
with mocker.patch('sys.stdin.isatty', return_value=True):
|
|
with mocker.patch('tower_cli.models.base.MonitorableResource.wait'):
|
|
result = run_module('tower_send', dict(assets=json.dumps(assets)), admin_user)
|
|
|
|
assert not result.get('failed'), result
|
|
|
|
new = JobTemplate.objects.get(name='SRtest')
|
|
assert new.project.name == 'SRtest'
|
|
assert new.inventory.name == 'SRtest'
|
|
assert [cred.name for cred in new.credentials.all()] == ['SRtest']
|