mirror of
https://github.com/ansible/awx.git
synced 2026-03-02 09:18:48 -03:30
Merge pull request #105 from ryanpetrello/fix-7323
add validation errors for certain dependent credential fields
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import itertools
|
||||
import re
|
||||
|
||||
import mock # noqa
|
||||
import pytest
|
||||
@@ -711,7 +712,7 @@ def test_inputs_cannot_contain_extra_fields(get, post, organization, admin, cred
|
||||
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('field_name, field_value', itertools.product(
|
||||
['username', 'password', 'ssh_key_data', 'ssh_key_unlock', 'become_method', 'become_username', 'become_password'], # noqa
|
||||
['username', 'password', 'ssh_key_data', 'become_method', 'become_username', 'become_password'], # noqa
|
||||
['', None]
|
||||
))
|
||||
def test_nullish_field_data(get, post, organization, admin, field_name, field_value):
|
||||
@@ -762,6 +763,33 @@ def test_falsey_field_data(get, post, organization, admin, field_value):
|
||||
assert cred.authorize is False
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('kind, extraneous', [
|
||||
['ssh', 'ssh_key_unlock'],
|
||||
['scm', 'ssh_key_unlock'],
|
||||
['net', 'ssh_key_unlock'],
|
||||
['net', 'authorize_password'],
|
||||
])
|
||||
def test_field_dependencies(get, post, organization, admin, kind, extraneous):
|
||||
_type = CredentialType.defaults[kind]()
|
||||
_type.save()
|
||||
params = {
|
||||
'name': 'Best credential ever',
|
||||
'credential_type': _type.pk,
|
||||
'organization': organization.id,
|
||||
'inputs': {extraneous: 'not needed'}
|
||||
}
|
||||
response = post(
|
||||
reverse('api:credential_list', kwargs={'version': 'v2'}),
|
||||
params,
|
||||
admin
|
||||
)
|
||||
assert response.status_code == 400
|
||||
assert re.search('cannot be set unless .+ is set.', response.content)
|
||||
|
||||
assert Credential.objects.count() == 0
|
||||
|
||||
|
||||
#
|
||||
# SCM Credentials
|
||||
#
|
||||
|
||||
@@ -80,16 +80,15 @@ def test_update_managed_by_tower_xfail(patch, delete, admin):
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_update_credential_type_in_use_xfail(patch, delete, admin):
|
||||
ssh = CredentialType.defaults['ssh']()
|
||||
ssh.managed_by_tower = False
|
||||
ssh.save()
|
||||
Credential(credential_type=ssh, name='My SSH Key').save()
|
||||
_type = CredentialType(kind='cloud', inputs={'fields': []})
|
||||
_type.save()
|
||||
Credential(credential_type=_type, name='My Custom Cred').save()
|
||||
|
||||
url = reverse('api:credential_type_detail', kwargs={'pk': ssh.pk})
|
||||
url = reverse('api:credential_type_detail', kwargs={'pk': _type.pk})
|
||||
response = patch(url, {'name': 'Some Other Name'}, admin)
|
||||
assert response.status_code == 200
|
||||
|
||||
url = reverse('api:credential_type_detail', kwargs={'pk': ssh.pk})
|
||||
url = reverse('api:credential_type_detail', kwargs={'pk': _type.pk})
|
||||
response = patch(url, {'inputs': {}}, admin)
|
||||
assert response.status_code == 403
|
||||
|
||||
@@ -98,11 +97,10 @@ def test_update_credential_type_in_use_xfail(patch, delete, admin):
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_update_credential_type_success(get, patch, delete, admin):
|
||||
ssh = CredentialType.defaults['ssh']()
|
||||
ssh.managed_by_tower = False
|
||||
ssh.save()
|
||||
_type = CredentialType(kind='cloud')
|
||||
_type.save()
|
||||
|
||||
url = reverse('api:credential_type_detail', kwargs={'pk': ssh.pk})
|
||||
url = reverse('api:credential_type_detail', kwargs={'pk': _type.pk})
|
||||
response = patch(url, {'name': 'Some Other Name'}, admin)
|
||||
assert response.status_code == 200
|
||||
|
||||
@@ -163,6 +161,21 @@ def test_create_managed_by_tower_readonly(get, post, admin):
|
||||
assert response.data['results'][0]['managed_by_tower'] is False
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_create_dependencies_not_supported(get, post, admin):
|
||||
response = post(reverse('api:credential_type_list'), {
|
||||
'kind': 'cloud',
|
||||
'name': 'Custom Credential Type',
|
||||
'inputs': {'dependencies': {'foo': ['bar']}},
|
||||
'injectors': {},
|
||||
}, admin)
|
||||
assert response.status_code == 400
|
||||
assert response.data['inputs'] == ["'dependencies' is not supported for custom credentials."]
|
||||
|
||||
response = get(reverse('api:credential_type_list'), admin)
|
||||
assert response.data['count'] == 0
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('kind', ['cloud', 'net'])
|
||||
def test_create_valid_kind(kind, get, post, admin):
|
||||
|
||||
Reference in New Issue
Block a user