mirror of
https://github.com/ansible/awx.git
synced 2026-03-18 17:37:30 -02:30
move code linting to a stricter pep8-esque auto-formatting tool, black
This commit is contained in:
@@ -23,8 +23,7 @@ from awx.main.models import (
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_job_relaunch_permission_denied_response(
|
||||
post, get, inventory, project, credential, net_credential, machine_credential):
|
||||
def test_job_relaunch_permission_denied_response(post, get, inventory, project, credential, net_credential, machine_credential):
|
||||
jt = JobTemplate.objects.create(name='testjt', inventory=inventory, project=project, ask_credential_on_launch=True)
|
||||
jt.credentials.add(machine_credential)
|
||||
jt_user = User.objects.create(username='jobtemplateuser')
|
||||
@@ -38,13 +37,12 @@ def test_job_relaunch_permission_denied_response(
|
||||
|
||||
# Job has prompted credential, launch denied w/ message
|
||||
job.launch_config.credentials.add(net_credential)
|
||||
r = post(reverse('api:job_relaunch', kwargs={'pk':job.pk}), {}, jt_user, expect=403)
|
||||
r = post(reverse('api:job_relaunch', kwargs={'pk': job.pk}), {}, jt_user, expect=403)
|
||||
assert 'launched with prompted fields you do not have access to' in r.data['detail']
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_job_relaunch_prompts_not_accepted_response(
|
||||
post, get, inventory, project, credential, net_credential, machine_credential):
|
||||
def test_job_relaunch_prompts_not_accepted_response(post, get, inventory, project, credential, net_credential, machine_credential):
|
||||
jt = JobTemplate.objects.create(name='testjt', inventory=inventory, project=project)
|
||||
jt.credentials.add(machine_credential)
|
||||
jt_user = User.objects.create(username='jobtemplateuser')
|
||||
@@ -58,21 +56,23 @@ def test_job_relaunch_prompts_not_accepted_response(
|
||||
|
||||
# Job has prompted credential, launch denied w/ message
|
||||
job.launch_config.credentials.add(net_credential)
|
||||
r = post(reverse('api:job_relaunch', kwargs={'pk':job.pk}), {}, jt_user, expect=403)
|
||||
r = post(reverse('api:job_relaunch', kwargs={'pk': job.pk}), {}, jt_user, expect=403)
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_job_relaunch_permission_denied_response_other_user(get, post, inventory, project, alice, bob, survey_spec_factory):
|
||||
'''
|
||||
"""
|
||||
Asserts custom permission denied message corresponding to
|
||||
awx/main/tests/functional/test_rbac_job.py::TestJobRelaunchAccess::test_other_user_prompts
|
||||
'''
|
||||
"""
|
||||
jt = JobTemplate.objects.create(
|
||||
name='testjt', inventory=inventory, project=project,
|
||||
name='testjt',
|
||||
inventory=inventory,
|
||||
project=project,
|
||||
ask_credential_on_launch=True,
|
||||
ask_variables_on_launch=True,
|
||||
survey_spec=survey_spec_factory([{'variable': 'secret_key', 'default': '6kQngg3h8lgiSTvIEb21', 'type': 'password'}]),
|
||||
survey_enabled=True
|
||||
survey_enabled=True,
|
||||
)
|
||||
jt.execute_role.members.add(alice, bob)
|
||||
with impersonate(bob):
|
||||
@@ -83,43 +83,30 @@ def test_job_relaunch_permission_denied_response_other_user(get, post, inventory
|
||||
assert r.data['summary_fields']['user_capabilities']['start']
|
||||
|
||||
# Job has prompted data, launch denied w/ message
|
||||
r = post(
|
||||
url=reverse('api:job_relaunch', kwargs={'pk':job.pk}),
|
||||
data={},
|
||||
user=alice,
|
||||
expect=403
|
||||
)
|
||||
r = post(url=reverse('api:job_relaunch', kwargs={'pk': job.pk}), data={}, user=alice, expect=403)
|
||||
assert 'Job was launched with secret prompts provided by another user' in r.data['detail']
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_job_relaunch_without_creds(post, inventory, project, admin_user):
|
||||
jt = JobTemplate.objects.create(
|
||||
name='testjt', inventory=inventory,
|
||||
project=project
|
||||
)
|
||||
jt = JobTemplate.objects.create(name='testjt', inventory=inventory, project=project)
|
||||
job = jt.create_unified_job()
|
||||
post(
|
||||
url=reverse('api:job_relaunch', kwargs={'pk':job.pk}),
|
||||
data={},
|
||||
user=admin_user,
|
||||
expect=201
|
||||
)
|
||||
post(url=reverse('api:job_relaunch', kwargs={'pk': job.pk}), data={}, user=admin_user, expect=201)
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize("status,hosts", [
|
||||
('all', 'host1,host2,host3'),
|
||||
('failed', 'host3'),
|
||||
])
|
||||
@pytest.mark.parametrize(
|
||||
"status,hosts",
|
||||
[
|
||||
('all', 'host1,host2,host3'),
|
||||
('failed', 'host3'),
|
||||
],
|
||||
)
|
||||
def test_job_relaunch_on_failed_hosts(post, inventory, project, machine_credential, admin_user, status, hosts):
|
||||
h1 = inventory.hosts.create(name='host1') # no-op
|
||||
h2 = inventory.hosts.create(name='host2') # changed host
|
||||
h3 = inventory.hosts.create(name='host3') # failed host
|
||||
jt = JobTemplate.objects.create(
|
||||
name='testjt', inventory=inventory,
|
||||
project=project
|
||||
)
|
||||
jt = JobTemplate.objects.create(name='testjt', inventory=inventory, project=project)
|
||||
jt.credentials.add(machine_credential)
|
||||
job = jt.create_unified_job(_eager_fields={'status': 'failed'}, limit='host1,host2,host3')
|
||||
job.job_events.create(event='playbook_on_stats')
|
||||
@@ -127,12 +114,7 @@ def test_job_relaunch_on_failed_hosts(post, inventory, project, machine_credenti
|
||||
job.job_host_summaries.create(host=h2, failed=False, ok=0, changed=1, failures=0, host_name=h2.name)
|
||||
job.job_host_summaries.create(host=h3, failed=False, ok=0, changed=0, failures=1, host_name=h3.name)
|
||||
|
||||
r = post(
|
||||
url=reverse('api:job_relaunch', kwargs={'pk':job.pk}),
|
||||
data={'hosts': status},
|
||||
user=admin_user,
|
||||
expect=201
|
||||
)
|
||||
r = post(url=reverse('api:job_relaunch', kwargs={'pk': job.pk}), data={'hosts': status}, user=admin_user, expect=201)
|
||||
assert r.data.get('limit') == hosts
|
||||
|
||||
|
||||
@@ -140,37 +122,25 @@ def test_job_relaunch_on_failed_hosts(post, inventory, project, machine_credenti
|
||||
def test_summary_fields_recent_jobs(job_template, admin_user, get):
|
||||
jobs = []
|
||||
for i in range(13):
|
||||
jobs.append(Job.objects.create(
|
||||
job_template=job_template,
|
||||
status='failed',
|
||||
created=timezone.make_aware(datetime.datetime(2017, 3, 21, 9, i)),
|
||||
finished=timezone.make_aware(datetime.datetime(2017, 3, 21, 10, i))
|
||||
))
|
||||
r = get(
|
||||
url = job_template.get_absolute_url(),
|
||||
user = admin_user,
|
||||
exepect = 200
|
||||
)
|
||||
jobs.append(
|
||||
Job.objects.create(
|
||||
job_template=job_template,
|
||||
status='failed',
|
||||
created=timezone.make_aware(datetime.datetime(2017, 3, 21, 9, i)),
|
||||
finished=timezone.make_aware(datetime.datetime(2017, 3, 21, 10, i)),
|
||||
)
|
||||
)
|
||||
r = get(url=job_template.get_absolute_url(), user=admin_user, exepect=200)
|
||||
recent_jobs = r.data['summary_fields']['recent_jobs']
|
||||
assert len(recent_jobs) == 10
|
||||
assert recent_jobs == [{
|
||||
'id': job.id,
|
||||
'status': 'failed',
|
||||
'finished': job.finished,
|
||||
'canceled_on': None,
|
||||
'type': 'job'
|
||||
} for job in jobs[-10:][::-1]]
|
||||
assert recent_jobs == [{'id': job.id, 'status': 'failed', 'finished': job.finished, 'canceled_on': None, 'type': 'job'} for job in jobs[-10:][::-1]]
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_slice_jt_recent_jobs(slice_job_factory, admin_user, get):
|
||||
workflow_job = slice_job_factory(3, spawn=True)
|
||||
slice_jt = workflow_job.job_template
|
||||
r = get(
|
||||
url=slice_jt.get_absolute_url(),
|
||||
user=admin_user,
|
||||
expect=200
|
||||
)
|
||||
r = get(url=slice_jt.get_absolute_url(), user=admin_user, expect=200)
|
||||
job_ids = [entry['id'] for entry in r.data['summary_fields']['recent_jobs']]
|
||||
# decision is that workflow job should be shown in the related jobs
|
||||
# joblets of the workflow job should NOT be shown
|
||||
@@ -180,11 +150,7 @@ def test_slice_jt_recent_jobs(slice_job_factory, admin_user, get):
|
||||
@pytest.mark.django_db
|
||||
def test_block_unprocessed_events(delete, admin_user, mocker):
|
||||
time_of_finish = parse("Thu Feb 28 09:10:20 2013 -0500")
|
||||
job = Job.objects.create(
|
||||
emitted_events=1,
|
||||
status='finished',
|
||||
finished=time_of_finish
|
||||
)
|
||||
job = Job.objects.create(emitted_events=1, status='finished', finished=time_of_finish)
|
||||
request = mock.MagicMock()
|
||||
|
||||
class MockView(UnifiedJobDeletionMixin):
|
||||
@@ -203,18 +169,10 @@ def test_block_unprocessed_events(delete, admin_user, mocker):
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_block_related_unprocessed_events(mocker, organization, project, delete, admin_user):
|
||||
job_template = JobTemplate.objects.create(
|
||||
project=project,
|
||||
playbook='helloworld.yml'
|
||||
)
|
||||
job_template = JobTemplate.objects.create(project=project, playbook='helloworld.yml')
|
||||
time_of_finish = parse("Thu Feb 23 14:17:24 2012 -0500")
|
||||
Job.objects.create(
|
||||
emitted_events=1,
|
||||
status='finished',
|
||||
finished=time_of_finish,
|
||||
job_template=job_template,
|
||||
project=project,
|
||||
organization=project.organization
|
||||
emitted_events=1, status='finished', finished=time_of_finish, job_template=job_template, project=project, organization=project.organization
|
||||
)
|
||||
view = RelatedJobsPreventDeleteMixin()
|
||||
time_of_request = time_of_finish + relativedelta(seconds=2)
|
||||
@@ -225,32 +183,14 @@ def test_block_related_unprocessed_events(mocker, organization, project, delete,
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_disallowed_http_update_methods(put, patch, post, inventory, project, admin_user):
|
||||
jt = JobTemplate.objects.create(
|
||||
name='test_disallowed_methods', inventory=inventory,
|
||||
project=project
|
||||
)
|
||||
jt = JobTemplate.objects.create(name='test_disallowed_methods', inventory=inventory, project=project)
|
||||
job = jt.create_unified_job()
|
||||
post(
|
||||
url=reverse('api:job_detail', kwargs={'pk': job.pk}),
|
||||
data={},
|
||||
user=admin_user,
|
||||
expect=405
|
||||
)
|
||||
put(
|
||||
url=reverse('api:job_detail', kwargs={'pk': job.pk}),
|
||||
data={},
|
||||
user=admin_user,
|
||||
expect=405
|
||||
)
|
||||
patch(
|
||||
url=reverse('api:job_detail', kwargs={'pk': job.pk}),
|
||||
data={},
|
||||
user=admin_user,
|
||||
expect=405
|
||||
)
|
||||
post(url=reverse('api:job_detail', kwargs={'pk': job.pk}), data={}, user=admin_user, expect=405)
|
||||
put(url=reverse('api:job_detail', kwargs={'pk': job.pk}), data={}, user=admin_user, expect=405)
|
||||
patch(url=reverse('api:job_detail', kwargs={'pk': job.pk}), data={}, user=admin_user, expect=405)
|
||||
|
||||
|
||||
class TestControllerNode():
|
||||
class TestControllerNode:
|
||||
@pytest.fixture
|
||||
def project_update(self, project):
|
||||
return ProjectUpdate.objects.create(project=project)
|
||||
@@ -264,9 +204,7 @@ class TestControllerNode():
|
||||
return AdHocCommand.objects.create(inventory=inventory)
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_field_controller_node_exists(self, sqlite_copy_expert,
|
||||
admin_user, job, project_update,
|
||||
inventory_update, adhoc, get, system_job_factory):
|
||||
def test_field_controller_node_exists(self, sqlite_copy_expert, admin_user, job, project_update, inventory_update, adhoc, get, system_job_factory):
|
||||
system_job = system_job_factory()
|
||||
|
||||
r = get(reverse('api:unified_job_list') + '?id={}'.format(job.id), admin_user, expect=200)
|
||||
|
||||
Reference in New Issue
Block a user