mirror of
https://github.com/ansible/awx.git
synced 2026-05-07 09:27:36 -02:30
update cloudforms-specific tests
This commit is contained in:
@@ -1,19 +1,7 @@
|
|||||||
# Generated by Django 2.2.11 on 2020-05-01 13:25
|
# Generated by Django 2.2.11 on 2020-05-01 13:25
|
||||||
|
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
from awx.main.utils.common import set_current_apps
|
from awx.main.migrations._inventory_source import delete_cloudforms_inv_source
|
||||||
|
|
||||||
|
|
||||||
def delete_cloudforms_inv_source(apps, schema_editor):
|
|
||||||
set_current_apps(apps)
|
|
||||||
InventorySource = apps.get_model('main', 'InventorySource')
|
|
||||||
InventoryUpdate = apps.get_model('main', 'InventoryUpdate')
|
|
||||||
CredentialType = apps.get_model('main', 'CredentialType')
|
|
||||||
InventoryUpdate.objects.filter(inventory_source__source='cloudforms').delete()
|
|
||||||
InventorySource.objects.filter(source='cloudforms').delete()
|
|
||||||
ct = CredentialType.objects.filter(namespace='cloudforms').first()
|
|
||||||
ct.credentials.all().delete()
|
|
||||||
ct.delete()
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
class Migration(migrations.Migration):
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ from uuid import uuid4
|
|||||||
from django.utils.encoding import smart_text
|
from django.utils.encoding import smart_text
|
||||||
from django.utils.timezone import now
|
from django.utils.timezone import now
|
||||||
|
|
||||||
|
from awx.main.utils.common import set_current_apps
|
||||||
from awx.main.utils.common import parse_yaml_or_json
|
from awx.main.utils.common import parse_yaml_or_json
|
||||||
|
|
||||||
logger = logging.getLogger('awx.main.migrations')
|
logger = logging.getLogger('awx.main.migrations')
|
||||||
@@ -89,3 +90,16 @@ def back_out_new_instance_id(apps, source, new_id):
|
|||||||
logger.info('Reverse migrated instance ID for {} hosts imported by {} source'.format(
|
logger.info('Reverse migrated instance ID for {} hosts imported by {} source'.format(
|
||||||
modified_ct, source
|
modified_ct, source
|
||||||
))
|
))
|
||||||
|
|
||||||
|
|
||||||
|
def delete_cloudforms_inv_source(apps, schema_editor):
|
||||||
|
set_current_apps(apps)
|
||||||
|
InventorySource = apps.get_model('main', 'InventorySource')
|
||||||
|
InventoryUpdate = apps.get_model('main', 'InventoryUpdate')
|
||||||
|
CredentialType = apps.get_model('main', 'CredentialType')
|
||||||
|
InventoryUpdate.objects.filter(inventory_source__source='cloudforms').delete()
|
||||||
|
InventorySource.objects.filter(source='cloudforms').delete()
|
||||||
|
ct = CredentialType.objects.filter(namespace='cloudforms').first()
|
||||||
|
if ct:
|
||||||
|
ct.credentials.all().delete()
|
||||||
|
ct.delete()
|
||||||
|
|||||||
@@ -675,33 +675,6 @@ def test_net_create_ok(post, organization, admin):
|
|||||||
assert cred.inputs['authorize'] is True
|
assert cred.inputs['authorize'] is True
|
||||||
|
|
||||||
|
|
||||||
#
|
|
||||||
# Cloudforms Credentials
|
|
||||||
#
|
|
||||||
@pytest.mark.django_db
|
|
||||||
def test_cloudforms_create_ok(post, organization, admin):
|
|
||||||
params = {
|
|
||||||
'credential_type': 1,
|
|
||||||
'name': 'Best credential ever',
|
|
||||||
'inputs': {
|
|
||||||
'host': 'some_host',
|
|
||||||
'username': 'some_username',
|
|
||||||
'password': 'some_password',
|
|
||||||
}
|
|
||||||
}
|
|
||||||
cloudforms = CredentialType.defaults['cloudforms']()
|
|
||||||
cloudforms.save()
|
|
||||||
params['organization'] = organization.id
|
|
||||||
response = post(reverse('api:credential_list'), params, admin)
|
|
||||||
assert response.status_code == 201
|
|
||||||
|
|
||||||
assert Credential.objects.count() == 1
|
|
||||||
cred = Credential.objects.all()[:1].get()
|
|
||||||
assert cred.inputs['host'] == 'some_host'
|
|
||||||
assert cred.inputs['username'] == 'some_username'
|
|
||||||
assert decrypt_field(cred, 'password') == 'some_password'
|
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# GCE Credentials
|
# GCE Credentials
|
||||||
#
|
#
|
||||||
|
|||||||
@@ -79,7 +79,6 @@ def test_default_cred_types():
|
|||||||
'aws',
|
'aws',
|
||||||
'azure_kv',
|
'azure_kv',
|
||||||
'azure_rm',
|
'azure_rm',
|
||||||
'cloudforms',
|
|
||||||
'conjur',
|
'conjur',
|
||||||
'galaxy_api_token',
|
'galaxy_api_token',
|
||||||
'gce',
|
'gce',
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ from awx.main.migrations import _inventory_source as invsrc
|
|||||||
|
|
||||||
from django.apps import apps
|
from django.apps import apps
|
||||||
|
|
||||||
from awx.main.models import InventorySource
|
from awx.main.models import InventorySource, InventoryUpdate, ManagedCredentialType, CredentialType, Credential
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize('vars,id_var,result', [
|
@pytest.mark.parametrize('vars,id_var,result', [
|
||||||
@@ -42,16 +42,40 @@ def test_apply_new_instance_id(inventory_source):
|
|||||||
|
|
||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_replacement_scm_sources(inventory):
|
def test_cloudforms_inventory_removal(inventory):
|
||||||
inv_source = InventorySource.objects.create(
|
ManagedCredentialType(
|
||||||
name='test',
|
name='Red Hat CloudForms',
|
||||||
inventory=inventory,
|
namespace='cloudforms',
|
||||||
organization=inventory.organization,
|
kind='cloud',
|
||||||
source='ec2'
|
managed_by_tower=True,
|
||||||
|
inputs={},
|
||||||
)
|
)
|
||||||
invsrc.create_scm_script_substitute(apps, 'ec2')
|
CredentialType.defaults['cloudforms']().save()
|
||||||
inv_source.refresh_from_db()
|
cloudforms = CredentialType.objects.get(namespace='cloudforms')
|
||||||
assert inv_source.source == 'scm'
|
Credential.objects.create(
|
||||||
assert inv_source.source_project
|
name='test',
|
||||||
project = inv_source.source_project
|
credential_type=cloudforms,
|
||||||
assert 'Replacement project for' in project.name
|
)
|
||||||
|
|
||||||
|
for source in ('ec2', 'cloudforms'):
|
||||||
|
i = InventorySource.objects.create(
|
||||||
|
name='test',
|
||||||
|
inventory=inventory,
|
||||||
|
organization=inventory.organization,
|
||||||
|
source=source,
|
||||||
|
)
|
||||||
|
InventoryUpdate.objects.create(
|
||||||
|
name='test update',
|
||||||
|
inventory_source=i,
|
||||||
|
source=source,
|
||||||
|
)
|
||||||
|
assert Credential.objects.count() == 1
|
||||||
|
assert InventorySource.objects.count() == 2 # ec2 + cf
|
||||||
|
assert InventoryUpdate.objects.count() == 2 # ec2 + cf
|
||||||
|
invsrc.delete_cloudforms_inv_source(apps, None)
|
||||||
|
assert InventorySource.objects.count() == 1 # ec2
|
||||||
|
assert InventoryUpdate.objects.count() == 1 # ec2
|
||||||
|
assert InventorySource.objects.first().source == 'ec2'
|
||||||
|
assert InventoryUpdate.objects.first().source == 'ec2'
|
||||||
|
assert Credential.objects.count() == 0
|
||||||
|
assert CredentialType.objects.filter(namespace='cloudforms').exists() is False
|
||||||
|
|||||||
Reference in New Issue
Block a user