mirror of
https://github.com/ansible/awx.git
synced 2026-06-25 00:18:07 -02:30
Remove custom inventory script API
This commit is contained in:
@@ -1,25 +1,12 @@
|
||||
# Python
|
||||
import pytest
|
||||
from unittest import mock
|
||||
from unittest.mock import PropertyMock
|
||||
|
||||
# AWX
|
||||
from awx.api.serializers import (
|
||||
CustomInventoryScriptSerializer,
|
||||
InventorySourceSerializer,
|
||||
)
|
||||
from awx.main.models import (
|
||||
CustomInventoryScript,
|
||||
InventorySource,
|
||||
User,
|
||||
)
|
||||
|
||||
# DRF
|
||||
from rest_framework.request import Request
|
||||
from rest_framework.test import (
|
||||
APIRequestFactory,
|
||||
force_authenticate,
|
||||
)
|
||||
from awx.main.models import InventorySource
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
@@ -30,34 +17,6 @@ def inventory_source(mocker):
|
||||
return obj
|
||||
|
||||
|
||||
class TestCustomInventoryScriptSerializer(object):
|
||||
@pytest.mark.parametrize(
|
||||
"superuser,sysaudit,admin_role,value",
|
||||
((True, False, False, '#!/python'), (False, True, False, '#!/python'), (False, False, True, '#!/python'), (False, False, False, None)),
|
||||
)
|
||||
def test_to_representation_orphan(self, superuser, sysaudit, admin_role, value):
|
||||
with mock.patch.object(CustomInventoryScriptSerializer, 'get_summary_fields', return_value={}):
|
||||
with mock.patch.object(User, 'is_system_auditor', return_value=sysaudit):
|
||||
user = User(username="root", is_superuser=superuser)
|
||||
roles = [user] if admin_role else []
|
||||
|
||||
with mock.patch('awx.main.models.CustomInventoryScript.admin_role', new_callable=PropertyMock, return_value=roles), mock.patch(
|
||||
'awx.api.serializers.settings'
|
||||
):
|
||||
cis = CustomInventoryScript(pk=1, script=value)
|
||||
serializer = CustomInventoryScriptSerializer()
|
||||
|
||||
factory = APIRequestFactory()
|
||||
wsgi_request = factory.post("/inventory_script/1", {'id': 1}, format="json")
|
||||
force_authenticate(wsgi_request, user)
|
||||
|
||||
request = Request(wsgi_request)
|
||||
serializer.context['request'] = request
|
||||
|
||||
representation = serializer.to_representation(cis)
|
||||
assert representation['script'] == value
|
||||
|
||||
|
||||
@mock.patch('awx.api.serializers.UnifiedJobTemplateSerializer.get_related', lambda x, y: {})
|
||||
@mock.patch('awx.api.serializers.InventorySourceOptionsSerializer.get_related', lambda x, y: {})
|
||||
class TestInventorySourceSerializerGetRelated(object):
|
||||
|
||||
@@ -7,7 +7,6 @@ from awx.api.filters import FieldLookupBackend, OrderByBackend, get_field_from_p
|
||||
from awx.main.models import (
|
||||
AdHocCommand,
|
||||
ActivityStream,
|
||||
CustomInventoryScript,
|
||||
Credential,
|
||||
Job,
|
||||
JobTemplate,
|
||||
@@ -106,7 +105,6 @@ def test_filter_on_password_field(password_field, lookup_suffix):
|
||||
(WorkflowJob, 'survey_passwords__icontains'),
|
||||
(JobTemplate, 'survey_spec__icontains'),
|
||||
(WorkflowJobTemplate, 'survey_spec__icontains'),
|
||||
(CustomInventoryScript, 'script__icontains'),
|
||||
(ActivityStream, 'o_auth2_application__client_secret__gt'),
|
||||
(OAuth2Application, 'grant__code__gt'),
|
||||
],
|
||||
|
||||
@@ -32,7 +32,6 @@ class TestApiRootView:
|
||||
'teams',
|
||||
'credentials',
|
||||
'inventory',
|
||||
'inventory_scripts',
|
||||
'inventory_sources',
|
||||
'groups',
|
||||
'hosts',
|
||||
|
||||
@@ -30,7 +30,6 @@ from awx.main.models import (
|
||||
ProjectUpdate,
|
||||
UnifiedJob,
|
||||
User,
|
||||
CustomInventoryScript,
|
||||
build_safe_env,
|
||||
)
|
||||
from awx.main.models.credential import ManagedCredentialType
|
||||
@@ -1631,55 +1630,6 @@ class TestInventoryUpdateCredentials(TestJobExecution):
|
||||
assert 'AWS_ACCESS_KEY_ID' not in env
|
||||
assert 'AWS_SECRET_ACCESS_KEY' not in env
|
||||
|
||||
@pytest.mark.parametrize('with_credential', [True, False])
|
||||
def test_custom_source(self, with_credential, mocker, inventory_update, private_data_dir):
|
||||
task = tasks.RunInventoryUpdate()
|
||||
task.instance = inventory_update
|
||||
inventory_update.source = 'custom'
|
||||
inventory_update.source_vars = '{"FOO": "BAR"}'
|
||||
inventory_update.source_script = CustomInventoryScript(script='#!/bin/sh\necho "Hello, World!"')
|
||||
|
||||
if with_credential:
|
||||
azure_rm = CredentialType.defaults['azure_rm']()
|
||||
|
||||
def get_creds():
|
||||
cred = Credential(
|
||||
pk=1,
|
||||
credential_type=azure_rm,
|
||||
inputs={
|
||||
'client': 'some-client',
|
||||
'secret': 'some-secret',
|
||||
'tenant': 'some-tenant',
|
||||
'subscription': 'some-subscription',
|
||||
},
|
||||
)
|
||||
return [cred]
|
||||
|
||||
inventory_update.get_extra_credentials = get_creds
|
||||
else:
|
||||
inventory_update.get_extra_credentials = mocker.Mock(return_value=[])
|
||||
inventory_update.get_cloud_credential = mocker.Mock(return_value=None)
|
||||
|
||||
env = task.build_env(inventory_update, private_data_dir, False)
|
||||
args = task.build_args(inventory_update, private_data_dir, {})
|
||||
|
||||
credentials = task.build_credentials_list(inventory_update)
|
||||
for credential in credentials:
|
||||
if credential:
|
||||
credential.credential_type.inject_credential(credential, env, {}, [], private_data_dir)
|
||||
|
||||
assert '-i' in ' '.join(args)
|
||||
script = args[args.index('-i') + 1]
|
||||
host_script = script.replace('/runner', private_data_dir)
|
||||
with open(host_script, 'r') as f:
|
||||
assert f.read() == inventory_update.source_script.script
|
||||
assert env['FOO'] == 'BAR'
|
||||
if with_credential:
|
||||
assert env['AZURE_CLIENT_ID'] == 'some-client'
|
||||
assert env['AZURE_SECRET'] == 'some-secret'
|
||||
assert env['AZURE_TENANT'] == 'some-tenant'
|
||||
assert env['AZURE_SUBSCRIPTION_ID'] == 'some-subscription'
|
||||
|
||||
def test_ec2_source(self, private_data_dir, inventory_update, mocker):
|
||||
task = tasks.RunInventoryUpdate()
|
||||
task.instance = inventory_update
|
||||
|
||||
Reference in New Issue
Block a user