mirror of
https://github.com/ZwareBear/awx.git
synced 2026-04-20 15:01:48 -05:00
remove /api/v1 and deprecated credential fields
This commit is contained in:
@@ -1,4 +1,3 @@
|
||||
import itertools
|
||||
import re
|
||||
|
||||
from unittest import mock # noqa
|
||||
@@ -27,197 +26,6 @@ def test_idempotent_credential_type_setup():
|
||||
assert CredentialType.objects.count() == total
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('kind, total', [
|
||||
('ssh', 1), ('net', 0)
|
||||
])
|
||||
def test_filter_by_v1_kind(get, admin, organization, kind, total):
|
||||
CredentialType.setup_tower_managed_defaults()
|
||||
cred = Credential(
|
||||
credential_type=CredentialType.from_v1_kind('ssh'),
|
||||
name='Best credential ever',
|
||||
organization=organization,
|
||||
inputs={
|
||||
'username': u'jim',
|
||||
'password': u'secret'
|
||||
}
|
||||
)
|
||||
cred.save()
|
||||
|
||||
response = get(
|
||||
reverse('api:credential_list', kwargs={'version': 'v1'}),
|
||||
admin,
|
||||
QUERY_STRING='kind=%s' % kind
|
||||
)
|
||||
assert response.status_code == 200
|
||||
assert response.data['count'] == total
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_filter_by_v1_kind_with_vault(get, admin, organization):
|
||||
CredentialType.setup_tower_managed_defaults()
|
||||
cred = Credential(
|
||||
credential_type=CredentialType.objects.get(kind='ssh'),
|
||||
name='Best credential ever',
|
||||
organization=organization,
|
||||
inputs={
|
||||
'username': u'jim',
|
||||
'password': u'secret'
|
||||
}
|
||||
)
|
||||
cred.save()
|
||||
cred = Credential(
|
||||
credential_type=CredentialType.objects.get(kind='vault'),
|
||||
name='Best credential ever',
|
||||
organization=organization,
|
||||
inputs={
|
||||
'vault_password': u'vault!'
|
||||
}
|
||||
)
|
||||
cred.save()
|
||||
|
||||
response = get(
|
||||
reverse('api:credential_list', kwargs={'version': 'v1'}),
|
||||
admin,
|
||||
QUERY_STRING='kind=ssh'
|
||||
)
|
||||
assert response.status_code == 200
|
||||
assert response.data['count'] == 2
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_insights_credentials_in_v1_api_list(get, admin, organization):
|
||||
credential_type = CredentialType.defaults['insights']()
|
||||
credential_type.save()
|
||||
cred = Credential(
|
||||
credential_type=credential_type,
|
||||
name='Best credential ever',
|
||||
organization=organization,
|
||||
inputs={
|
||||
'username': u'joe',
|
||||
'password': u'secret'
|
||||
}
|
||||
)
|
||||
cred.save()
|
||||
|
||||
response = get(
|
||||
reverse('api:credential_list', kwargs={'version': 'v1'}),
|
||||
admin
|
||||
)
|
||||
assert response.status_code == 200
|
||||
assert response.data['count'] == 1
|
||||
cred = response.data['results'][0]
|
||||
assert cred['kind'] == 'insights'
|
||||
assert cred['username'] == 'joe'
|
||||
assert cred['password'] == '$encrypted$'
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_create_insights_credentials_in_v1(get, post, admin, organization):
|
||||
credential_type = CredentialType.defaults['insights']()
|
||||
credential_type.save()
|
||||
|
||||
response = post(
|
||||
reverse('api:credential_list', kwargs={'version': 'v1'}),
|
||||
{
|
||||
'name': 'Best Credential Ever',
|
||||
'organization': organization.id,
|
||||
'kind': 'insights',
|
||||
'username': 'joe',
|
||||
'password': 'secret'
|
||||
},
|
||||
admin
|
||||
)
|
||||
assert response.status_code == 201
|
||||
cred = Credential.objects.get(pk=response.data['id'])
|
||||
assert cred.username == 'joe'
|
||||
assert decrypt_field(cred, 'password') == 'secret'
|
||||
assert cred.credential_type == credential_type
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_custom_credentials_not_in_v1_api_list(get, admin, organization):
|
||||
"""
|
||||
'Custom' credentials (those not managed by Tower) shouldn't be visible from
|
||||
the V1 credentials API list
|
||||
"""
|
||||
credential_type = CredentialType(
|
||||
kind='cloud',
|
||||
name='MyCloud',
|
||||
inputs = {
|
||||
'fields': [{
|
||||
'id': 'password',
|
||||
'label': 'Password',
|
||||
'type': 'string',
|
||||
'secret': True
|
||||
}]
|
||||
}
|
||||
)
|
||||
credential_type.save()
|
||||
cred = Credential(
|
||||
credential_type=credential_type,
|
||||
name='Best credential ever',
|
||||
organization=organization,
|
||||
inputs={
|
||||
'password': u'secret'
|
||||
}
|
||||
)
|
||||
cred.save()
|
||||
|
||||
response = get(
|
||||
reverse('api:credential_list', kwargs={'version': 'v1'}),
|
||||
admin
|
||||
)
|
||||
assert response.status_code == 200
|
||||
assert response.data['count'] == 0
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_custom_credentials_not_in_v1_api_detail(get, admin, organization):
|
||||
"""
|
||||
'Custom' credentials (those not managed by Tower) shouldn't be visible from
|
||||
the V1 credentials API detail
|
||||
"""
|
||||
credential_type = CredentialType(
|
||||
kind='cloud',
|
||||
name='MyCloud',
|
||||
inputs = {
|
||||
'fields': [{
|
||||
'id': 'password',
|
||||
'label': 'Password',
|
||||
'type': 'string',
|
||||
'secret': True
|
||||
}]
|
||||
}
|
||||
)
|
||||
credential_type.save()
|
||||
cred = Credential(
|
||||
credential_type=credential_type,
|
||||
name='Best credential ever',
|
||||
organization=organization,
|
||||
inputs={
|
||||
'password': u'secret'
|
||||
}
|
||||
)
|
||||
cred.save()
|
||||
|
||||
response = get(
|
||||
reverse('api:credential_detail', kwargs={'version': 'v1', 'pk': cred.pk}),
|
||||
admin
|
||||
)
|
||||
assert response.status_code == 404
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_filter_by_v1_invalid_kind(get, admin, organization):
|
||||
response = get(
|
||||
reverse('api:credential_list', kwargs={'version': 'v1'}),
|
||||
admin,
|
||||
QUERY_STRING='kind=bad_kind'
|
||||
)
|
||||
assert response.status_code == 400
|
||||
|
||||
|
||||
#
|
||||
# user credential creation
|
||||
#
|
||||
@@ -225,7 +33,6 @@ def test_filter_by_v1_invalid_kind(get, admin, organization):
|
||||
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('version, params', [
|
||||
['v1', {'username': 'someusername'}],
|
||||
['v2', {'credential_type': 1, 'inputs': {'username': 'someusername'}}]
|
||||
])
|
||||
def test_create_user_credential_via_credentials_list(post, get, alice, credentialtype_ssh, version, params):
|
||||
@@ -245,7 +52,6 @@ def test_create_user_credential_via_credentials_list(post, get, alice, credentia
|
||||
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('version, params', [
|
||||
['v1', {'username': 'someusername'}],
|
||||
['v2', {'credential_type': 1, 'inputs': {'username': 'someusername'}}]
|
||||
])
|
||||
def test_credential_validation_error_with_bad_user(post, admin, version, credentialtype_ssh, params):
|
||||
@@ -262,7 +68,6 @@ def test_credential_validation_error_with_bad_user(post, admin, version, credent
|
||||
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('version, params', [
|
||||
['v1', {'username': 'someusername'}],
|
||||
['v2', {'credential_type': 1, 'inputs': {'username': 'someusername'}}]
|
||||
])
|
||||
def test_create_user_credential_via_user_credentials_list(post, get, alice, credentialtype_ssh, version, params):
|
||||
@@ -282,7 +87,6 @@ def test_create_user_credential_via_user_credentials_list(post, get, alice, cred
|
||||
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('version, params', [
|
||||
['v1', {'username': 'someusername'}],
|
||||
['v2', {'credential_type': 1, 'inputs': {'username': 'someusername'}}]
|
||||
])
|
||||
def test_create_user_credential_via_credentials_list_xfail(post, alice, bob, version, params):
|
||||
@@ -298,7 +102,6 @@ def test_create_user_credential_via_credentials_list_xfail(post, alice, bob, ver
|
||||
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('version, params', [
|
||||
['v1', {'username': 'someusername'}],
|
||||
['v2', {'credential_type': 1, 'inputs': {'username': 'someusername'}}]
|
||||
])
|
||||
def test_create_user_credential_via_user_credentials_list_xfail(post, alice, bob, version, params):
|
||||
@@ -319,7 +122,6 @@ def test_create_user_credential_via_user_credentials_list_xfail(post, alice, bob
|
||||
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('version, params', [
|
||||
['v1', {'username': 'someusername'}],
|
||||
['v2', {'credential_type': 1, 'inputs': {'username': 'someusername'}}]
|
||||
])
|
||||
def test_create_team_credential(post, get, team, organization, org_admin, team_member, credentialtype_ssh, version, params):
|
||||
@@ -345,7 +147,6 @@ def test_create_team_credential(post, get, team, organization, org_admin, team_m
|
||||
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('version, params', [
|
||||
['v1', {'username': 'someusername'}],
|
||||
['v2', {'credential_type': 1, 'inputs': {'username': 'someusername'}}]
|
||||
])
|
||||
def test_create_team_credential_via_team_credentials_list(post, get, team, org_admin, team_member, credentialtype_ssh, version, params):
|
||||
@@ -368,7 +169,6 @@ def test_create_team_credential_via_team_credentials_list(post, get, team, org_a
|
||||
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('version, params', [
|
||||
['v1', {'username': 'someusername'}],
|
||||
['v2', {'credential_type': 1, 'inputs': {'username': 'someusername'}}]
|
||||
])
|
||||
def test_create_team_credential_by_urelated_user_xfail(post, team, organization, alice, team_member, version, params):
|
||||
@@ -385,7 +185,6 @@ def test_create_team_credential_by_urelated_user_xfail(post, team, organization,
|
||||
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('version, params', [
|
||||
['v1', {'username': 'someusername'}],
|
||||
['v2', {'credential_type': 1, 'inputs': {'username': 'someusername'}}]
|
||||
])
|
||||
def test_create_team_credential_by_team_member_xfail(post, team, organization, alice, team_member, version, params):
|
||||
@@ -407,7 +206,7 @@ def test_create_team_credential_by_team_member_xfail(post, team, organization, a
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('version', ['v1', 'v2'])
|
||||
@pytest.mark.parametrize('version', ['v2'])
|
||||
def test_grant_org_credential_to_org_user_through_role_users(post, credential, organization, org_admin, org_member, version):
|
||||
credential.organization = organization
|
||||
credential.save()
|
||||
@@ -418,7 +217,7 @@ def test_grant_org_credential_to_org_user_through_role_users(post, credential, o
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('version', ['v1', 'v2'])
|
||||
@pytest.mark.parametrize('version', ['v2'])
|
||||
def test_grant_org_credential_to_org_user_through_user_roles(post, credential, organization, org_admin, org_member, version):
|
||||
credential.organization = organization
|
||||
credential.save()
|
||||
@@ -429,7 +228,7 @@ def test_grant_org_credential_to_org_user_through_user_roles(post, credential, o
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('version', ['v1', 'v2'])
|
||||
@pytest.mark.parametrize('version', ['v2'])
|
||||
def test_grant_org_credential_to_non_org_user_through_role_users(post, credential, organization, org_admin, alice, version):
|
||||
credential.organization = organization
|
||||
credential.save()
|
||||
@@ -440,7 +239,7 @@ def test_grant_org_credential_to_non_org_user_through_role_users(post, credentia
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('version', ['v1', 'v2'])
|
||||
@pytest.mark.parametrize('version', ['v2'])
|
||||
def test_grant_org_credential_to_non_org_user_through_user_roles(post, credential, organization, org_admin, alice, version):
|
||||
credential.organization = organization
|
||||
credential.save()
|
||||
@@ -451,7 +250,7 @@ def test_grant_org_credential_to_non_org_user_through_user_roles(post, credentia
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('version', ['v1', 'v2'])
|
||||
@pytest.mark.parametrize('version', ['v2'])
|
||||
def test_grant_private_credential_to_user_through_role_users(post, credential, alice, bob, version):
|
||||
# normal users can't do this
|
||||
credential.admin_role.members.add(alice)
|
||||
@@ -462,7 +261,7 @@ def test_grant_private_credential_to_user_through_role_users(post, credential, a
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('version', ['v1', 'v2'])
|
||||
@pytest.mark.parametrize('version', ['v2'])
|
||||
def test_grant_private_credential_to_org_user_through_role_users(post, credential, org_admin, org_member, version):
|
||||
# org admins can't either
|
||||
credential.admin_role.members.add(org_admin)
|
||||
@@ -473,7 +272,7 @@ def test_grant_private_credential_to_org_user_through_role_users(post, credentia
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('version', ['v1', 'v2'])
|
||||
@pytest.mark.parametrize('version', ['v2'])
|
||||
def test_sa_grant_private_credential_to_user_through_role_users(post, credential, admin, bob, version):
|
||||
# but system admins can
|
||||
response = post(reverse('api:role_users_list', kwargs={'version': version, 'pk': credential.use_role.id}), {
|
||||
@@ -483,7 +282,7 @@ def test_sa_grant_private_credential_to_user_through_role_users(post, credential
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('version', ['v1', 'v2'])
|
||||
@pytest.mark.parametrize('version', ['v2'])
|
||||
def test_grant_private_credential_to_user_through_user_roles(post, credential, alice, bob, version):
|
||||
# normal users can't do this
|
||||
credential.admin_role.members.add(alice)
|
||||
@@ -494,7 +293,7 @@ def test_grant_private_credential_to_user_through_user_roles(post, credential, a
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('version', ['v1', 'v2'])
|
||||
@pytest.mark.parametrize('version', ['v2'])
|
||||
def test_grant_private_credential_to_org_user_through_user_roles(post, credential, org_admin, org_member, version):
|
||||
# org admins can't either
|
||||
credential.admin_role.members.add(org_admin)
|
||||
@@ -505,7 +304,7 @@ def test_grant_private_credential_to_org_user_through_user_roles(post, credentia
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('version', ['v1', 'v2'])
|
||||
@pytest.mark.parametrize('version', ['v2'])
|
||||
def test_sa_grant_private_credential_to_user_through_user_roles(post, credential, admin, bob, version):
|
||||
# but system admins can
|
||||
response = post(reverse('api:user_roles_list', kwargs={'version': version, 'pk': bob.id}), {
|
||||
@@ -515,7 +314,7 @@ def test_sa_grant_private_credential_to_user_through_user_roles(post, credential
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('version', ['v1', 'v2'])
|
||||
@pytest.mark.parametrize('version', ['v2'])
|
||||
def test_grant_org_credential_to_team_through_role_teams(post, credential, organization, org_admin, org_auditor, team, version):
|
||||
assert org_auditor not in credential.read_role
|
||||
credential.organization = organization
|
||||
@@ -528,7 +327,7 @@ def test_grant_org_credential_to_team_through_role_teams(post, credential, organ
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('version', ['v1', 'v2'])
|
||||
@pytest.mark.parametrize('version', ['v2'])
|
||||
def test_grant_org_credential_to_team_through_team_roles(post, credential, organization, org_admin, org_auditor, team, version):
|
||||
assert org_auditor not in credential.read_role
|
||||
credential.organization = organization
|
||||
@@ -541,7 +340,7 @@ def test_grant_org_credential_to_team_through_team_roles(post, credential, organ
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('version', ['v1', 'v2'])
|
||||
@pytest.mark.parametrize('version', ['v2'])
|
||||
def test_sa_grant_private_credential_to_team_through_role_teams(post, credential, admin, team, version):
|
||||
# not even a system admin can grant a private cred to a team though
|
||||
response = post(reverse('api:role_teams_list', kwargs={'version': version, 'pk': credential.use_role.id}), {
|
||||
@@ -551,7 +350,7 @@ def test_sa_grant_private_credential_to_team_through_role_teams(post, credential
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('version', ['v1', 'v2'])
|
||||
@pytest.mark.parametrize('version', ['v2'])
|
||||
def test_sa_grant_private_credential_to_team_through_team_roles(post, credential, admin, team, version):
|
||||
# not even a system admin can grant a private cred to a team though
|
||||
response = post(reverse('api:role_teams_list', kwargs={'version': version, 'pk': team.id}), {
|
||||
@@ -567,7 +366,6 @@ def test_sa_grant_private_credential_to_team_through_team_roles(post, credential
|
||||
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('version, params', [
|
||||
['v1', {'username': 'someusername'}],
|
||||
['v2', {'credential_type': 1, 'inputs': {'username': 'someusername'}}]
|
||||
])
|
||||
def test_create_org_credential_as_not_admin(post, organization, org_member, credentialtype_ssh, version, params):
|
||||
@@ -583,7 +381,6 @@ def test_create_org_credential_as_not_admin(post, organization, org_member, cred
|
||||
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('version, params', [
|
||||
['v1', {'username': 'someusername'}],
|
||||
['v2', {'credential_type': 1, 'inputs': {'username': 'someusername'}}]
|
||||
])
|
||||
def test_create_org_credential_as_admin(post, organization, org_admin, credentialtype_ssh, version, params):
|
||||
@@ -599,7 +396,6 @@ def test_create_org_credential_as_admin(post, organization, org_admin, credentia
|
||||
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('version, params', [
|
||||
['v1', {'username': 'someusername'}],
|
||||
['v2', {'credential_type': 1, 'inputs': {'username': 'someusername'}}]
|
||||
])
|
||||
def test_credential_detail(post, get, organization, org_admin, credentialtype_ssh, version, params):
|
||||
@@ -624,7 +420,6 @@ def test_credential_detail(post, get, organization, org_admin, credentialtype_ss
|
||||
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('version, params', [
|
||||
['v1', {'username': 'someusername'}],
|
||||
['v2', {'credential_type': 1, 'inputs': {'username': 'someusername'}}]
|
||||
])
|
||||
def test_list_created_org_credentials(post, get, organization, org_admin, org_member, credentialtype_ssh, version, params):
|
||||
@@ -667,12 +462,11 @@ def test_list_created_org_credentials(post, get, organization, org_admin, org_me
|
||||
|
||||
|
||||
@pytest.mark.parametrize('order_by', ('password', '-password', 'password,pk', '-password,pk'))
|
||||
@pytest.mark.parametrize('version', ('v1', 'v2'))
|
||||
@pytest.mark.django_db
|
||||
def test_list_cannot_order_by_encrypted_field(post, get, organization, org_admin, credentialtype_ssh, order_by, version):
|
||||
def test_list_cannot_order_by_encrypted_field(post, get, organization, org_admin, credentialtype_ssh, order_by):
|
||||
for i, password in enumerate(('abc', 'def', 'xyz')):
|
||||
response = post(
|
||||
reverse('api:credential_list', kwargs={'version': version}),
|
||||
reverse('api:credential_list', kwargs={'version': 'v2'}),
|
||||
{
|
||||
'organization': organization.id,
|
||||
'name': 'C%d' % i,
|
||||
@@ -682,7 +476,7 @@ def test_list_cannot_order_by_encrypted_field(post, get, organization, org_admin
|
||||
)
|
||||
|
||||
response = get(
|
||||
reverse('api:credential_list', kwargs={'version': version}),
|
||||
reverse('api:credential_list', kwargs={'version': 'v2'}),
|
||||
org_admin,
|
||||
QUERY_STRING='order_by=%s' % order_by,
|
||||
status=400
|
||||
@@ -690,22 +484,6 @@ def test_list_cannot_order_by_encrypted_field(post, get, organization, org_admin
|
||||
assert response.status_code == 400
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_v1_credential_kind_validity(get, post, organization, admin, credentialtype_ssh):
|
||||
params = {
|
||||
'name': 'Best credential ever',
|
||||
'organization': organization.id,
|
||||
'kind': 'nonsense'
|
||||
}
|
||||
response = post(
|
||||
reverse('api:credential_list', kwargs={'version': 'v1'}),
|
||||
params,
|
||||
admin
|
||||
)
|
||||
assert response.status_code == 400
|
||||
assert response.data['kind'] == ['"nonsense" is not a valid choice']
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_inputs_cannot_contain_extra_fields(get, post, organization, admin, credentialtype_ssh):
|
||||
params = {
|
||||
@@ -725,34 +503,6 @@ def test_inputs_cannot_contain_extra_fields(get, post, organization, admin, cred
|
||||
assert "'invalid_field' was unexpected" in response.data['inputs'][0]
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('field_name, field_value', itertools.product(
|
||||
['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):
|
||||
ssh = CredentialType.defaults['ssh']()
|
||||
ssh.save()
|
||||
params = {
|
||||
'name': 'Best credential ever',
|
||||
'credential_type': ssh.pk,
|
||||
'organization': organization.id,
|
||||
'inputs': {
|
||||
field_name: field_value
|
||||
}
|
||||
}
|
||||
response = post(
|
||||
reverse('api:credential_list', kwargs={'version': 'v2'}),
|
||||
params,
|
||||
admin
|
||||
)
|
||||
assert response.status_code == 201
|
||||
|
||||
assert Credential.objects.count() == 1
|
||||
cred = Credential.objects.all()[:1].get()
|
||||
assert getattr(cred, field_name) == ''
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('field_value', ['', None, False])
|
||||
def test_falsey_field_data(get, post, organization, admin, field_value):
|
||||
@@ -776,7 +526,7 @@ def test_falsey_field_data(get, post, organization, admin, field_value):
|
||||
|
||||
assert Credential.objects.count() == 1
|
||||
cred = Credential.objects.all()[:1].get()
|
||||
assert cred.authorize is False
|
||||
assert cred.inputs['authorize'] is False
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
@@ -811,14 +561,6 @@ def test_field_dependencies(get, post, organization, admin, kind, extraneous):
|
||||
#
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('version, params', [
|
||||
['v1', {
|
||||
'kind': 'scm',
|
||||
'name': 'Best credential ever',
|
||||
'username': 'some_username',
|
||||
'password': 'some_password',
|
||||
'ssh_key_data': EXAMPLE_ENCRYPTED_PRIVATE_KEY,
|
||||
'ssh_key_unlock': 'some_key_unlock',
|
||||
}],
|
||||
['v2', {
|
||||
'credential_type': 1,
|
||||
'name': 'Best credential ever',
|
||||
@@ -851,12 +593,6 @@ def test_scm_create_ok(post, organization, admin, version, params):
|
||||
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('version, params', [
|
||||
['v1', {
|
||||
'kind': 'ssh',
|
||||
'name': 'Best credential ever',
|
||||
'password': 'secret',
|
||||
'vault_password': '',
|
||||
}],
|
||||
['v2', {
|
||||
'credential_type': 1,
|
||||
'name': 'Best credential ever',
|
||||
@@ -882,38 +618,11 @@ def test_ssh_create_ok(post, organization, admin, version, params):
|
||||
assert decrypt_field(cred, 'password') == 'secret'
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_v1_ssh_vault_ambiguity(post, organization, admin):
|
||||
vault = CredentialType.defaults['vault']()
|
||||
vault.save()
|
||||
params = {
|
||||
'organization': organization.id,
|
||||
'kind': 'ssh',
|
||||
'name': 'Best credential ever',
|
||||
'username': 'joe',
|
||||
'password': 'secret',
|
||||
'ssh_key_data': 'some_key_data',
|
||||
'ssh_key_unlock': 'some_key_unlock',
|
||||
'vault_password': 'vault_password',
|
||||
}
|
||||
response = post(
|
||||
reverse('api:credential_list', kwargs={'version': 'v1'}),
|
||||
params,
|
||||
admin
|
||||
)
|
||||
assert response.status_code == 400
|
||||
|
||||
|
||||
#
|
||||
# Vault Credentials
|
||||
#
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('version, params', [
|
||||
['v1', {
|
||||
'kind': 'ssh',
|
||||
'name': 'Best credential ever',
|
||||
'vault_password': 'some_password',
|
||||
}],
|
||||
['v2', {
|
||||
'credential_type': 1,
|
||||
'name': 'Best credential ever',
|
||||
@@ -968,16 +677,6 @@ def test_vault_password_required(post, organization, admin):
|
||||
#
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('version, params', [
|
||||
['v1', {
|
||||
'kind': 'net',
|
||||
'name': 'Best credential ever',
|
||||
'username': 'some_username',
|
||||
'password': 'some_password',
|
||||
'ssh_key_data': EXAMPLE_ENCRYPTED_PRIVATE_KEY,
|
||||
'ssh_key_unlock': 'some_key_unlock',
|
||||
'authorize': True,
|
||||
'authorize_password': 'some_authorize_password',
|
||||
}],
|
||||
['v2', {
|
||||
'credential_type': 1,
|
||||
'name': 'Best credential ever',
|
||||
@@ -1017,13 +716,6 @@ def test_net_create_ok(post, organization, admin, version, params):
|
||||
#
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('version, params', [
|
||||
['v1', {
|
||||
'kind': 'cloudforms',
|
||||
'name': 'Best credential ever',
|
||||
'host': 'some_host',
|
||||
'username': 'some_username',
|
||||
'password': 'some_password',
|
||||
}],
|
||||
['v2', {
|
||||
'credential_type': 1,
|
||||
'name': 'Best credential ever',
|
||||
@@ -1057,13 +749,6 @@ def test_cloudforms_create_ok(post, organization, admin, version, params):
|
||||
#
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('version, params', [
|
||||
['v1', {
|
||||
'kind': 'gce',
|
||||
'name': 'Best credential ever',
|
||||
'username': 'some_username',
|
||||
'project': 'some_project',
|
||||
'ssh_key_data': EXAMPLE_PRIVATE_KEY,
|
||||
}],
|
||||
['v2', {
|
||||
'credential_type': 1,
|
||||
'name': 'Best credential ever',
|
||||
@@ -1097,16 +782,6 @@ def test_gce_create_ok(post, organization, admin, version, params):
|
||||
#
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('version, params', [
|
||||
['v1', {
|
||||
'kind': 'azure_rm',
|
||||
'name': 'Best credential ever',
|
||||
'subscription': 'some_subscription',
|
||||
'username': 'some_username',
|
||||
'password': 'some_password',
|
||||
'client': 'some_client',
|
||||
'secret': 'some_secret',
|
||||
'tenant': 'some_tenant'
|
||||
}],
|
||||
['v2', {
|
||||
'credential_type': 1,
|
||||
'name': 'Best credential ever',
|
||||
@@ -1146,13 +821,6 @@ def test_azure_rm_create_ok(post, organization, admin, version, params):
|
||||
#
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('version, params', [
|
||||
['v1', {
|
||||
'kind': 'satellite6',
|
||||
'name': 'Best credential ever',
|
||||
'host': 'some_host',
|
||||
'username': 'some_username',
|
||||
'password': 'some_password',
|
||||
}],
|
||||
['v2', {
|
||||
'credential_type': 1,
|
||||
'name': 'Best credential ever',
|
||||
@@ -1186,13 +854,6 @@ def test_satellite6_create_ok(post, organization, admin, version, params):
|
||||
#
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('version, params', [
|
||||
['v1', {
|
||||
'kind': 'aws',
|
||||
'name': 'Best credential ever',
|
||||
'username': 'some_username',
|
||||
'password': 'some_password',
|
||||
'security_token': 'abc123'
|
||||
}],
|
||||
['v2', {
|
||||
'credential_type': 1,
|
||||
'name': 'Best credential ever',
|
||||
@@ -1223,10 +884,6 @@ def test_aws_create_ok(post, organization, admin, version, params):
|
||||
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('version, params', [
|
||||
['v1', {
|
||||
'kind': 'aws',
|
||||
'name': 'Best credential ever',
|
||||
}],
|
||||
['v2', {
|
||||
'credential_type': 1,
|
||||
'name': 'Best credential ever',
|
||||
@@ -1258,13 +915,6 @@ def test_aws_create_fail_required_fields(post, organization, admin, version, par
|
||||
#
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('version, params', [
|
||||
['v1', {
|
||||
'kind': 'vmware',
|
||||
'host': 'some_host',
|
||||
'name': 'Best credential ever',
|
||||
'username': 'some_username',
|
||||
'password': 'some_password'
|
||||
}],
|
||||
['v2', {
|
||||
'credential_type': 1,
|
||||
'name': 'Best credential ever',
|
||||
@@ -1295,10 +945,6 @@ def test_vmware_create_ok(post, organization, admin, version, params):
|
||||
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('version, params', [
|
||||
['v1', {
|
||||
'kind': 'vmware',
|
||||
'name': 'Best credential ever',
|
||||
}],
|
||||
['v2', {
|
||||
'credential_type': 1,
|
||||
'name': 'Best credential ever',
|
||||
@@ -1330,12 +976,6 @@ def test_vmware_create_fail_required_fields(post, organization, admin, version,
|
||||
#
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('version, params', [
|
||||
['v1', {
|
||||
'username': 'some_user',
|
||||
'password': 'some_password',
|
||||
'project': 'some_project',
|
||||
'host': 'some_host',
|
||||
}],
|
||||
['v2', {
|
||||
'credential_type': 1,
|
||||
'inputs': {
|
||||
@@ -1396,7 +1036,6 @@ def test_openstack_verify_ssl(get, post, organization, admin, verify_ssl, expect
|
||||
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('version, params', [
|
||||
['v1', {}],
|
||||
['v2', {
|
||||
'credential_type': 1,
|
||||
'inputs': {}
|
||||
@@ -1425,12 +1064,6 @@ def test_openstack_create_fail_required_fields(post, organization, admin, versio
|
||||
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('version, params', [
|
||||
['v1', {
|
||||
'name': 'Best credential ever',
|
||||
'kind': 'ssh',
|
||||
'username': 'joe',
|
||||
'password': '',
|
||||
}],
|
||||
['v2', {
|
||||
'name': 'Best credential ever',
|
||||
'credential_type': 1,
|
||||
@@ -1624,12 +1257,6 @@ def test_cloud_credential_type_mutability(patch, organization, admin, credential
|
||||
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('version, params', [
|
||||
['v1', {
|
||||
'name': 'Best credential ever',
|
||||
'kind': 'ssh',
|
||||
'username': 'joe',
|
||||
'ssh_key_data': '$encrypted$',
|
||||
}],
|
||||
['v2', {
|
||||
'name': 'Best credential ever',
|
||||
'credential_type': 1,
|
||||
@@ -1664,13 +1291,6 @@ def test_ssh_unlock_needed(put, organization, admin, credentialtype_ssh, version
|
||||
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('version, params', [
|
||||
['v1', {
|
||||
'name': 'Best credential ever',
|
||||
'kind': 'ssh',
|
||||
'username': 'joe',
|
||||
'ssh_key_data': '$encrypted$',
|
||||
'ssh_key_unlock': 'superfluous-key-unlock',
|
||||
}],
|
||||
['v2', {
|
||||
'name': 'Best credential ever',
|
||||
'credential_type': 1,
|
||||
@@ -1705,13 +1325,6 @@ def test_ssh_unlock_not_needed(put, organization, admin, credentialtype_ssh, ver
|
||||
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('version, params', [
|
||||
['v1', {
|
||||
'name': 'Best credential ever',
|
||||
'kind': 'ssh',
|
||||
'username': 'joe',
|
||||
'ssh_key_data': '$encrypted$',
|
||||
'ssh_key_unlock': 'new-unlock',
|
||||
}],
|
||||
['v2', {
|
||||
'name': 'Best credential ever',
|
||||
'credential_type': 1,
|
||||
@@ -1753,11 +1366,6 @@ def test_ssh_unlock_with_prior_value(put, organization, admin, credentialtype_ss
|
||||
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('version, params', [
|
||||
['v1', {
|
||||
'kind': 'ssh',
|
||||
'username': 'joe',
|
||||
'password': 'secret',
|
||||
}],
|
||||
['v2', {
|
||||
'credential_type': 1,
|
||||
'inputs': {
|
||||
@@ -1783,12 +1391,8 @@ def test_secret_encryption_on_create(get, post, organization, admin, credentialt
|
||||
assert response.status_code == 200
|
||||
assert response.data['count'] == 1
|
||||
cred = response.data['results'][0]
|
||||
if version == 'v1':
|
||||
assert cred['username'] == 'joe'
|
||||
assert cred['password'] == '$encrypted$'
|
||||
elif version == 'v2':
|
||||
assert cred['inputs']['username'] == 'joe'
|
||||
assert cred['inputs']['password'] == '$encrypted$'
|
||||
assert cred['inputs']['username'] == 'joe'
|
||||
assert cred['inputs']['password'] == '$encrypted$'
|
||||
|
||||
cred = Credential.objects.all()[:1].get()
|
||||
assert cred.inputs['password'].startswith('$encrypted$UTF8$AES')
|
||||
@@ -1797,7 +1401,6 @@ def test_secret_encryption_on_create(get, post, organization, admin, credentialt
|
||||
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('version, params', [
|
||||
['v1', {'password': 'secret'}],
|
||||
['v2', {'inputs': {'username': 'joe', 'password': 'secret'}}]
|
||||
])
|
||||
def test_secret_encryption_on_update(get, post, patch, organization, admin, credentialtype_ssh, version, params):
|
||||
@@ -1829,12 +1432,8 @@ def test_secret_encryption_on_update(get, post, patch, organization, admin, cred
|
||||
assert response.status_code == 200
|
||||
assert response.data['count'] == 1
|
||||
cred = response.data['results'][0]
|
||||
if version == 'v1':
|
||||
assert cred['username'] == 'joe'
|
||||
assert cred['password'] == '$encrypted$'
|
||||
elif version == 'v2':
|
||||
assert cred['inputs']['username'] == 'joe'
|
||||
assert cred['inputs']['password'] == '$encrypted$'
|
||||
assert cred['inputs']['username'] == 'joe'
|
||||
assert cred['inputs']['password'] == '$encrypted$'
|
||||
|
||||
cred = Credential.objects.all()[:1].get()
|
||||
assert cred.inputs['password'].startswith('$encrypted$UTF8$AES')
|
||||
@@ -1843,10 +1442,6 @@ def test_secret_encryption_on_update(get, post, patch, organization, admin, cred
|
||||
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('version, params', [
|
||||
['v1', {
|
||||
'username': 'joe',
|
||||
'password': '$encrypted$',
|
||||
}],
|
||||
['v2', {
|
||||
'inputs': {
|
||||
'username': 'joe',
|
||||
@@ -1930,7 +1525,6 @@ def test_custom_credential_type_create(get, post, organization, admin):
|
||||
|
||||
|
||||
@pytest.mark.parametrize('version, params', [
|
||||
['v1', {'name': 'Some name', 'username': 'someusername'}],
|
||||
['v2', {'name': 'Some name', 'credential_type': 1, 'inputs': {'username': 'someusername'}}]
|
||||
])
|
||||
@pytest.mark.django_db
|
||||
|
||||
Reference in New Issue
Block a user