move code linting to a stricter pep8-esque auto-formatting tool, black

This commit is contained in:
Ryan Petrello
2021-03-19 12:44:51 -04:00
parent 9b702e46fe
commit c2ef0a6500
671 changed files with 20538 additions and 21924 deletions

View File

@@ -15,11 +15,12 @@ from rest_framework.exceptions import ValidationError
@pytest.mark.django_db
@pytest.mark.parametrize(
"grant_project, grant_inventory, expect", [
"grant_project, grant_inventory, expect",
[
(True, True, 201),
(True, False, 403),
(False, True, 403),
]
],
)
def test_create(post, project, machine_credential, inventory, alice, grant_project, grant_inventory, expect):
if grant_project:
@@ -30,14 +31,9 @@ def test_create(post, project, machine_credential, inventory, alice, grant_proje
post(
url=reverse('api:job_template_list'),
data={
'name': 'Some name',
'project': project.id,
'inventory': inventory.id,
'playbook': 'helloworld.yml'
},
data={'name': 'Some name', 'project': project.id, 'inventory': inventory.id, 'playbook': 'helloworld.yml'},
user=alice,
expect=expect
expect=expect,
)
@@ -45,20 +41,24 @@ def test_create(post, project, machine_credential, inventory, alice, grant_proje
@pytest.mark.parametrize('kind', ['scm', 'insights'])
def test_invalid_credential_kind_xfail(get, post, organization_factory, job_template_factory, kind):
objs = organization_factory("org", superusers=['admin'])
jt = job_template_factory("jt", organization=objs.organization,
inventory='test_inv', project='test_proj').job_template
jt = job_template_factory("jt", organization=objs.organization, inventory='test_inv', project='test_proj').job_template
url = reverse('api:job_template_credentials_list', kwargs={'pk': jt.pk})
cred_type = CredentialType.defaults[kind]()
cred_type.save()
response = post(url, {
'name': 'My Cred',
'credential_type': cred_type.pk,
'inputs': {
'username': 'bob',
'password': 'secret',
}
}, objs.superusers.admin, expect=400)
response = post(
url,
{
'name': 'My Cred',
'credential_type': cred_type.pk,
'inputs': {
'username': 'bob',
'password': 'secret',
},
},
objs.superusers.admin,
expect=400,
)
assert 'Cannot assign a Credential of kind `{}`.'.format(kind) in response.data.values()
@@ -77,18 +77,19 @@ def test_create_with_forks_exceeding_maximum_xfail(alice, post, project, invento
'forks': 11,
},
user=alice,
expect=400
expect=400,
)
assert 'Maximum number of forks (10) exceeded' in str(response.data)
@pytest.mark.django_db
@pytest.mark.parametrize(
"grant_project, grant_inventory, expect", [
"grant_project, grant_inventory, expect",
[
(True, True, 200),
(True, False, 403),
(False, True, 403),
]
],
)
def test_edit_sensitive_fields(patch, job_template_factory, alice, grant_project, grant_inventory, expect):
objs = job_template_factory('jt', organization='org1', project='prj', inventory='inv', credential='cred')
@@ -99,23 +100,25 @@ def test_edit_sensitive_fields(patch, job_template_factory, alice, grant_project
if grant_inventory:
objs.inventory.use_role.members.add(alice)
patch(url=reverse('api:job_template_detail', kwargs={'pk': objs.job_template.id}), data={
'name': 'Some name',
'project': objs.project.id,
'inventory': objs.inventory.id,
'playbook': 'alt-helloworld.yml',
}, user=alice, expect=expect)
patch(
url=reverse('api:job_template_detail', kwargs={'pk': objs.job_template.id}),
data={
'name': 'Some name',
'project': objs.project.id,
'inventory': objs.inventory.id,
'playbook': 'alt-helloworld.yml',
},
user=alice,
expect=expect,
)
@pytest.mark.django_db
def test_reject_dict_extra_vars_patch(patch, job_template_factory, admin_user):
# Expect a string for extra_vars, raise 400 in this case that would
# otherwise have been saved incorrectly
jt = job_template_factory(
'jt', organization='org1', project='prj', inventory='inv', credential='cred'
).job_template
patch(reverse('api:job_template_detail', kwargs={'pk': jt.id}),
{'extra_vars': {'foo': 5}}, admin_user, expect=400)
jt = job_template_factory('jt', organization='org1', project='prj', inventory='inv', credential='cred').job_template
patch(reverse('api:job_template_detail', kwargs={'pk': jt.id}), {'extra_vars': {'foo': 5}}, admin_user, expect=400)
@pytest.mark.django_db
@@ -126,31 +129,33 @@ def test_edit_playbook(patch, job_template_factory, alice):
objs.credential.use_role.members.add(alice)
objs.inventory.use_role.members.add(alice)
patch(reverse('api:job_template_detail', kwargs={'pk': objs.job_template.id}), {
'playbook': 'alt-helloworld.yml',
}, alice, expect=200)
patch(
reverse('api:job_template_detail', kwargs={'pk': objs.job_template.id}),
{
'playbook': 'alt-helloworld.yml',
},
alice,
expect=200,
)
objs.inventory.use_role.members.remove(alice)
patch(reverse('api:job_template_detail', kwargs={'pk': objs.job_template.id}), {
'playbook': 'helloworld.yml',
}, alice, expect=403)
patch(
reverse('api:job_template_detail', kwargs={'pk': objs.job_template.id}),
{
'playbook': 'helloworld.yml',
},
alice,
expect=403,
)
@pytest.mark.django_db
@pytest.mark.parametrize('json_body',
["abc", True, False, "{\"name\": \"test\"}", 100, .5])
@pytest.mark.parametrize('json_body', ["abc", True, False, "{\"name\": \"test\"}", 100, 0.5])
def test_invalid_json_body(patch, job_template_factory, alice, json_body):
objs = job_template_factory('jt', organization='org1')
objs.job_template.admin_role.members.add(alice)
resp = patch(
reverse('api:job_template_detail', kwargs={'pk': objs.job_template.id}),
json_body,
alice,
expect=400
)
assert resp.data['detail'] == (
u'JSON parse error - not a JSON object'
)
resp = patch(reverse('api:job_template_detail', kwargs={'pk': objs.job_template.id}), json_body, alice, expect=400)
assert resp.data['detail'] == (u'JSON parse error - not a JSON object')
@pytest.mark.django_db
@@ -159,44 +164,42 @@ def test_edit_nonsenstive(patch, job_template_factory, alice):
jt = objs.job_template
jt.admin_role.members.add(alice)
res = patch(reverse('api:job_template_detail', kwargs={'pk': jt.id}), {
'name': 'updated',
'description': 'bar',
'forks': 14,
'limit': 'something',
'verbosity': 5,
'extra_vars': '---',
'job_tags': 'sometags',
'force_handlers': True,
'skip_tags': 'thistag,thattag',
'ask_variables_on_launch':True,
'ask_tags_on_launch':True,
'ask_skip_tags_on_launch':True,
'ask_job_type_on_launch':True,
'ask_inventory_on_launch':True,
'ask_credential_on_launch': True,
}, alice, expect=200)
res = patch(
reverse('api:job_template_detail', kwargs={'pk': jt.id}),
{
'name': 'updated',
'description': 'bar',
'forks': 14,
'limit': 'something',
'verbosity': 5,
'extra_vars': '---',
'job_tags': 'sometags',
'force_handlers': True,
'skip_tags': 'thistag,thattag',
'ask_variables_on_launch': True,
'ask_tags_on_launch': True,
'ask_skip_tags_on_launch': True,
'ask_job_type_on_launch': True,
'ask_inventory_on_launch': True,
'ask_credential_on_launch': True,
},
alice,
expect=200,
)
assert res.data['name'] == 'updated'
@pytest.fixture
def jt_copy_edit(job_template_factory, project):
objects = job_template_factory(
'copy-edit-job-template',
project=project)
objects = job_template_factory('copy-edit-job-template', project=project)
return objects.job_template
@pytest.mark.django_db
def test_job_template_role_user(post, organization_factory, job_template_factory):
objects = organization_factory("org",
superusers=['admin'],
users=['test'])
objects = organization_factory("org", superusers=['admin'], users=['test'])
jt_objects = job_template_factory("jt",
organization=objects.organization,
inventory='test_inv',
project='test_proj')
jt_objects = job_template_factory("jt", organization=objects.organization, inventory='test_inv', project='test_proj')
url = reverse('api:user_roles_list', kwargs={'pk': objects.users.test.pk})
response = post(url, dict(id=jt_objects.job_template.execute_role.pk), objects.superusers.admin)
@@ -209,7 +212,7 @@ def test_jt_admin_copy_edit_functional(jt_copy_edit, rando, get, post):
jt_copy_edit.admin_role.members.add(rando)
jt_copy_edit.save()
get_response = get(reverse('api:job_template_detail', kwargs={'pk':jt_copy_edit.pk}), user=rando)
get_response = get(reverse('api:job_template_detail', kwargs={'pk': jt_copy_edit.pk}), user=rando)
assert get_response.status_code == 200
post_data = get_response.data
@@ -219,44 +222,30 @@ def test_jt_admin_copy_edit_functional(jt_copy_edit, rando, get, post):
@pytest.mark.django_db
def test_launch_with_pending_deletion_inventory(get, post, organization_factory,
job_template_factory, machine_credential,
credential, net_credential):
def test_launch_with_pending_deletion_inventory(get, post, organization_factory, job_template_factory, machine_credential, credential, net_credential):
objs = organization_factory("org", superusers=['admin'])
jt = job_template_factory("jt", organization=objs.organization, credential='c',
inventory='test_inv', project='test_proj').job_template
jt = job_template_factory("jt", organization=objs.organization, credential='c', inventory='test_inv', project='test_proj').job_template
jt.inventory.pending_deletion = True
jt.inventory.save()
resp = post(
reverse('api:job_template_launch', kwargs={'pk': jt.pk}),
objs.superusers.admin, expect=400
)
resp = post(reverse('api:job_template_launch', kwargs={'pk': jt.pk}), objs.superusers.admin, expect=400)
assert resp.data['inventory'] == ['The inventory associated with this Job Template is being deleted.']
@pytest.mark.django_db
def test_launch_with_pending_deletion_inventory_workflow(get, post, organization, inventory, admin_user):
wfjt = WorkflowJobTemplate.objects.create(
name='wfjt',
organization=organization,
inventory=inventory
)
wfjt = WorkflowJobTemplate.objects.create(name='wfjt', organization=organization, inventory=inventory)
inventory.pending_deletion = True
inventory.save()
resp = post(
url=reverse('api:workflow_job_template_launch', kwargs={'pk': wfjt.pk}),
user=admin_user, expect=400
)
resp = post(url=reverse('api:workflow_job_template_launch', kwargs={'pk': wfjt.pk}), user=admin_user, expect=400)
assert resp.data['inventory'] == ['The inventory associated with this Workflow is being deleted.']
@pytest.mark.django_db
def test_jt_without_project(inventory):
data = dict(name="Test", job_type="run",
inventory=inventory.pk, project=None)
data = dict(name="Test", job_type="run", inventory=inventory.pk, project=None)
serializer = JobTemplateSerializer(data=data)
assert not serializer.is_valid()
assert "project" in serializer.errors
@@ -268,12 +257,7 @@ def test_jt_without_project(inventory):
@pytest.mark.django_db
def test_disallow_template_delete_on_running_job(job_template_factory, delete, admin_user):
objects = job_template_factory('jt',
credential='c',
job_type="run",
project='p',
inventory='i',
organization='o')
objects = job_template_factory('jt', credential='c', job_type="run", project='p', inventory='i', organization='o')
objects.job_template.create_unified_job()
delete_response = delete(reverse('api:job_template_detail', kwargs={'pk': objects.job_template.pk}), user=admin_user)
assert delete_response.status_code == 409
@@ -307,58 +291,33 @@ def test_jt_organization_follows_project(post, patch, admin_user):
project2 = Project.objects.create(name='proj2', organization=org2, **project_common)
r = post(
url=reverse('api:job_template_list'),
data={
"name": "fooo",
"ask_inventory_on_launch": True,
"project": project1.pk,
"playbook": "helloworld.yml"
},
data={"name": "fooo", "ask_inventory_on_launch": True, "project": project1.pk, "playbook": "helloworld.yml"},
user=admin_user,
expect=201
expect=201,
)
data = r.data
assert data['organization'] == project1.organization_id
data['project'] = project2.id
jt = JobTemplate.objects.get(pk=data['id'])
r = patch(
url=jt.get_absolute_url(),
data=data,
user=admin_user,
expect=200
)
r = patch(url=jt.get_absolute_url(), data=data, user=admin_user, expect=200)
assert r.data['organization'] == project2.organization_id
@pytest.mark.django_db
def test_jt_organization_field_is_read_only(patch, post, project, admin_user):
org = project.organization
jt = JobTemplate.objects.create(
name='foo_jt',
ask_inventory_on_launch=True,
project=project, playbook='helloworld.yml'
)
jt = JobTemplate.objects.create(name='foo_jt', ask_inventory_on_launch=True, project=project, playbook='helloworld.yml')
org2 = Organization.objects.create(name='foo2')
r = patch(
url=jt.get_absolute_url(),
data={'organization': org2.id},
user=admin_user,
expect=200
)
r = patch(url=jt.get_absolute_url(), data={'organization': org2.id}, user=admin_user, expect=200)
assert r.data['organization'] == org.id
assert JobTemplate.objects.get(pk=jt.pk).organization == org
# similar test, but on creation
r = post(
url=reverse('api:job_template_list'),
data={
'name': 'foobar',
'project': project.id,
'organization': org2.id,
'ask_inventory_on_launch': True,
'playbook': 'helloworld.yml'
},
data={'name': 'foobar', 'project': project.id, 'organization': org2.id, 'ask_inventory_on_launch': True, 'playbook': 'helloworld.yml'},
user=admin_user,
expect=201
expect=201,
)
assert r.data['organization'] == org.id
assert JobTemplate.objects.get(pk=r.data['id']).organization == org
@@ -366,10 +325,7 @@ def test_jt_organization_field_is_read_only(patch, post, project, admin_user):
@pytest.mark.django_db
def test_callback_disallowed_null_inventory(project):
jt = JobTemplate.objects.create(
name='test-jt', inventory=None,
ask_inventory_on_launch=True,
project=project, playbook='helloworld.yml')
jt = JobTemplate.objects.create(name='test-jt', inventory=None, ask_inventory_on_launch=True, project=project, playbook='helloworld.yml')
serializer = JobTemplateSerializer(jt)
assert serializer.instance == jt
with pytest.raises(ValidationError) as exc:
@@ -381,15 +337,9 @@ def test_callback_disallowed_null_inventory(project):
def test_job_template_branch_error(project, inventory, post, admin_user):
r = post(
url=reverse('api:job_template_list'),
data={
"name": "fooo",
"inventory": inventory.pk,
"project": project.pk,
"playbook": "helloworld.yml",
"scm_branch": "foobar"
},
data={"name": "fooo", "inventory": inventory.pk, "project": project.pk, "playbook": "helloworld.yml", "scm_branch": "foobar"},
user=admin_user,
expect=400
expect=400,
)
assert 'Project does not allow overriding branch' in str(r.data['scm_branch'])
@@ -398,14 +348,8 @@ def test_job_template_branch_error(project, inventory, post, admin_user):
def test_job_template_branch_prompt_error(project, inventory, post, admin_user):
r = post(
url=reverse('api:job_template_list'),
data={
"name": "fooo",
"inventory": inventory.pk,
"project": project.pk,
"playbook": "helloworld.yml",
"ask_scm_branch_on_launch": True
},
data={"name": "fooo", "inventory": inventory.pk, "project": project.pk, "playbook": "helloworld.yml", "ask_scm_branch_on_launch": True},
user=admin_user,
expect=400
expect=400,
)
assert 'Project does not allow overriding branch' in str(r.data['ask_scm_branch_on_launch'])